{"action":"created","comment":{"url":"https://api.github.com/repos/rubicon-project/prebid-server-java/pulls/comments/181672415","pull_request_review_id":112330803,"id":181672415,"diff_hunk":"@@ -0,0 +1,467 @@\n+package org.prebid.server.bidder.openx;\n+\n+import com.fasterxml.jackson.core.JsonProcessingException;\n+import com.iab.openrtb.request.Audio;\n+import com.iab.openrtb.request.Banner;\n+import com.iab.openrtb.request.BidRequest;\n+import com.iab.openrtb.request.Imp;\n+import com.iab.openrtb.request.Native;\n+import com.iab.openrtb.request.Video;\n+import com.iab.openrtb.response.Bid;\n+import com.iab.openrtb.response.BidResponse;\n+import com.iab.openrtb.response.SeatBid;\n+import org.junit.Before;\n+import org.junit.Test;\n+import org.prebid.server.VertxTest;\n+import org.prebid.server.bidder.model.BidderBid;\n+import org.prebid.server.bidder.model.BidderError;\n+import org.prebid.server.bidder.model.HttpCall;\n+import org.prebid.server.bidder.model.HttpRequest;\n+import org.prebid.server.bidder.model.HttpResponse;\n+import org.prebid.server.bidder.model.Result;\n+import org.prebid.server.bidder.openx.proto.ExtImpOpenx;\n+import org.prebid.server.bidder.openx.proto.OpenxRequestExt;\n+import org.prebid.server.proto.openrtb.ext.ExtPrebid;\n+import org.prebid.server.proto.openrtb.ext.response.BidType;\n+\n+import java.math.BigDecimal;\n+import java.util.HashMap;\n+import java.util.List;\n+import java.util.function.Function;\n+\n+import static java.util.Arrays.*;\n+import static java.util.Collections.*;\n+import static org.assertj.core.api.Assertions.*;\n+\n+public class OpenxBidderTest extends VertxTest{\n+\n+    private static final String ENDPOINT_URL = \"http://openx.com/openrtb2d\";\n+\n+    private OpenxBidder openxBidder;\n+\n+    @Before\n+    public void setUp() {\n+        openxBidder = new OpenxBidder(ENDPOINT_URL);\n+    }\n+\n+    @Test\n+    public void creationShouldFailOnNullArguments() {\n+        assertThatNullPointerException().isThrownBy(\n+                () -> new OpenxBidder(null));\n+    }\n+\n+    @Test\n+    public void makeHttpRequestShouldReturnResultWithEmptyBidRequestsAndErrors() {\n+        // given\n+        final BidRequest bidRequest = BidRequest.builder()\n+                .imp(emptyList())\n+                .build();\n+\n+        // when\n+        final Result<List<HttpRequest<BidRequest>>> result = openxBidder.makeHttpRequests(bidRequest);\n+\n+        // then\n+        assertThat(result.getValue()).isEmpty();\n+        assertThat(result.getErrors()).isEmpty();\n+    }\n+\n+    @Test\n+    public void makeHttpRequestShouldReturnResultWithErrorWhenAudioImpsPresent() {\n+        // given\n+        final BidRequest bidRequest = BidRequest.builder()\n+                .imp(asList(\n+                        Imp.builder().id(\"impId1\").audio(Audio.builder().build()).build(),\n+                        Imp.builder().id(\"impId2\").audio(Audio.builder().build()).build()))\n+                .build();\n+\n+        // when\n+        final Result<List<HttpRequest<BidRequest>>> result = openxBidder.makeHttpRequests(bidRequest);\n+\n+        // then\n+        assertThat(result.getValue()).isEmpty();\n+        assertThat(result.getErrors()).hasSize(2)\n+                .extracting(BidderError::getMessage)\n+                .containsExactly(\n+                        \"OpenX only supports banner and video imps. Ignoring imp id=impId1\",\n+                        \"OpenX only supports banner and video imps. Ignoring imp id=impId2\");\n+    }\n+\n+    @Test\n+    public void makeHttpRequestShouldReturnResultWithErrorWhenNativeImpsPresent() {\n+        // given\n+        final BidRequest bidRequest = BidRequest.builder()\n+                .imp(asList(\n+                        Imp.builder().id(\"impId1\").xNative(Native.builder().build()).build(),\n+                        Imp.builder().id(\"impId2\").xNative(Native.builder().build()).build()))\n+                .build();\n+\n+        // when\n+        final Result<List<HttpRequest<BidRequest>>> result = openxBidder.makeHttpRequests(bidRequest);\n+\n+        // then\n+        assertThat(result.getValue()).isEmpty();\n+        assertThat(result.getErrors()).hasSize(2)\n+                .extracting(BidderError::getMessage)\n+                .containsExactly(\n+                        \"OpenX only supports banner and video imps. Ignoring imp id=impId1\",\n+                        \"OpenX only supports banner and video imps. Ignoring imp id=impId2\");\n+    }\n+\n+    @Test\n+    public void makeHttpRequestShouldReturnResultWithErrorWhenImpExtOmitted() {\n+        // given\n+        final BidRequest bidRequest = BidRequest.builder()\n+                .imp(asList((\n+                        Imp.builder().id(\"impId1\").banner(Banner.builder().build()).build()),\n+                        Imp.builder().id(\"impId2\").video(Video.builder().build()).build()))\n+                .build();\n+\n+        // when\n+        final Result<List<HttpRequest<BidRequest>>> result = openxBidder.makeHttpRequests(bidRequest);\n+\n+        // then\n+        assertThat(result.getValue()).isEmpty();\n+        assertThat(result.getErrors()).hasSize(2)\n+                .extracting(BidderError::getMessage)\n+                .containsExactly(\"openx parameters section is missing\", \"openx parameters section is missing\");\n+    }\n+\n+    @Test\n+    public void makeHttpRequestShouldReturnResultWithErrorWhenImpExPrebidtMalformed() {\n+        // given\n+        final BidRequest bidRequest = BidRequest.builder()\n+                .imp(asList((\n+                        Imp.builder()\n+                                .id(\"impId1\")\n+                                .banner(Banner.builder().build())\n+                                .ext(mapper.valueToTree(new HashMap<>())).build()),\n+                        Imp.builder()\n+                                .id(\"impId2\")\n+                                .video(Video.builder().build())\n+                                .ext(mapper.valueToTree(new HashMap<>())).build()))\n+                .build();\n+\n+        // when\n+        final Result<List<HttpRequest<BidRequest>>> result = openxBidder.makeHttpRequests(bidRequest);\n+\n+        // then\n+        assertThat(result.getValue()).isEmpty();\n+        assertThat(result.getErrors()).hasSize(2)\n+                .extracting(BidderError::getMessage)\n+                .containsExactly(\"openx parameters section is missing\", \"openx parameters section is missing\");\n+    }\n+\n+    @Test\n+    public void makeHttpRequestShouldReturnResultWithErrorWhenImpExtOpenxEmpty() {\n+        // given\n+        final BidRequest bidRequest = BidRequest.builder()\n+                .imp(asList(\n+                            Imp.builder()\n+                                .id(\"impId2\")\n+                                .video(Video.builder().build())\n+                                .ext(mapper.valueToTree(\n+                                        ExtPrebid.of(null, null))).build()))\n+                .build();\n+\n+        // when\n+        final Result<List<HttpRequest<BidRequest>>> result = openxBidder.makeHttpRequests(bidRequest);\n+\n+        // then\n+        assertThat(result.getValue()).isEmpty();\n+        assertThat(result.getErrors()).hasSize(1)\n+                .extracting(BidderError::getMessage)\n+                .containsExactly(\"openx parameters section is missing\");\n+    }\n+\n+    @Test\n+    public void makeHttpRequestShouldReturnResultWithErrorWhenImpExtOpenxMalformed() {\n+        // given\n+        final BidRequest bidRequest = BidRequest.builder()\n+                .imp(asList(\n+                        Imp.builder()\n+                            .id(\"impId1\")\n+                            .banner(Banner.builder().build())\n+                            .ext(mapper.valueToTree(\n+                                    ExtPrebid.of(null,\n+                                            mapper.createArrayNode()))).build()))\n+                .build();\n+\n+        // when\n+        final Result<List<HttpRequest<BidRequest>>> result = openxBidder.makeHttpRequests(bidRequest);\n+\n+        // then\n+        assertThat(result.getValue()).isEmpty();\n+        assertThat(result.getErrors().get(0).getMessage())\n+                .startsWith(\"Cannot deserialize instance of\");\n+    }\n+\n+    @Test\n+    public void makeHttpRequestShouldReturnResultWithHttpRequestContainingExpectedListOfBidRequest() {\n+        // given\n+        final BidRequest bidRequest = BidRequest.builder()\n+                .id(\"bidRequestId\")\n+                .imp(asList(\n+                        Imp.builder()\n+                                .id(\"impId1\")\n+                                .banner(Banner.builder().build())\n+                                .ext(mapper.valueToTree(\n+                                        ExtPrebid.of(null,\n+                                                ExtImpOpenx.builder()\n+                                                        .customFloor(0.1f)\n+                                                        .customParams(singletonMap(\"foo1\", \"bar1\"))\n+                                                        .delDomain(\"se-demo-d.openx.net\")\n+                                                        .unit(\"unitId\").build()))).build(),\n+                        Imp.builder()\n+                                .id(\"impId2\")\n+                                .banner(Banner.builder().build())\n+                                .ext(mapper.valueToTree(\n+                                        ExtPrebid.of(null,\n+                                                ExtImpOpenx.builder()\n+                                                        .customFloor(0.1f)\n+                                                        .customParams(singletonMap(\"foo2\", \"bar2\"))\n+                                                        .delDomain(\"se-demo-d.openx.net\")\n+                                                        .unit(\"unitId\").build()))).build(),\n+                        Imp.builder()\n+                                .id(\"impId3\")\n+                                .video(Video.builder().build())\n+                                .ext(mapper.valueToTree(\n+                                        ExtPrebid.of(null,\n+                                                ExtImpOpenx.builder()\n+                                                        .customFloor(0.1f)\n+                                                        .customParams(singletonMap(\"foo3\", \"bar3\"))\n+                                                        .delDomain(\"se-demo-d.openx.net\")\n+                                                        .unit(\"unitId\").build()))).build(),\n+                        Imp.builder()\n+                                .id(\"impId4\")\n+                                .video(Video.builder().build())\n+                                .ext(mapper.valueToTree(\n+                                        ExtPrebid.of(null,\n+                                                ExtImpOpenx.builder()\n+                                                        .customFloor(0.1f)\n+                                                        .customParams(singletonMap(\"foo4\", \"bar4\"))\n+                                                        .delDomain(\"se-demo-d.openx.net\")\n+                                                        .unit(\"unitId\").build()))).build()))\n+                .build();\n+\n+        // when\n+        final Result<List<HttpRequest<BidRequest>>> result = openxBidder.makeHttpRequests(bidRequest);\n+\n+        // then\n+        assertThat(result.getErrors()).isEmpty();\n+        assertThat(result.getValue()).hasSize(3);\n+\n+        // check if all banner imps are part of single bidRequest\n+        assertThat(result.getValue()).hasSize(3)\n+                .extracting(httpRequest -> mapper.readValue(httpRequest.getBody(), BidRequest.class))","path":"src/test/java/org/prebid/server/bidder/openx/OpenxBidderTest.java","position":255,"original_position":255,"commit_id":"af52a6e2c1ac4c06727761b160467e123ce04a75","original_commit_id":"af52a6e2c1ac4c06727761b160467e123ce04a75","user":{"login":"BraslavskiyAndrey","id":7769137,"avatar_url":"https://avatars2.githubusercontent.com/u/7769137?v=4","gravatar_id":"","url":"https://api.github.com/users/BraslavskiyAndrey","html_url":"https://github.com/BraslavskiyAndrey","followers_url":"https://api.github.com/users/BraslavskiyAndrey/followers","following_url":"https://api.github.com/users/BraslavskiyAndrey/following{/other_user}","gists_url":"https://api.github.com/users/BraslavskiyAndrey/gists{/gist_id}","starred_url":"https://api.github.com/users/BraslavskiyAndrey/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/BraslavskiyAndrey/subscriptions","organizations_url":"https://api.github.com/users/BraslavskiyAndrey/orgs","repos_url":"https://api.github.com/users/BraslavskiyAndrey/repos","events_url":"https://api.github.com/users/BraslavskiyAndrey/events{/privacy}","received_events_url":"https://api.github.com/users/BraslavskiyAndrey/received_events","type":"User","site_admin":false},"body":"can we use here containsExactly() instead of check result 3 times? ","created_at":"2018-04-16T09:26:59Z","updated_at":"2018-04-16T09:47:40Z","html_url":"https://github.com/rubicon-project/prebid-server-java/pull/14#discussion_r181672415","pull_request_url":"https://api.github.com/repos/rubicon-project/prebid-server-java/pulls/14","author_association":"COLLABORATOR","_links":{"self":{"href":"https://api.github.com/repos/rubicon-project/prebid-server-java/pulls/comments/181672415"},"html":{"href":"https://github.com/rubicon-project/prebid-server-java/pull/14#discussion_r181672415"},"pull_request":{"href":"https://api.github.com/repos/rubicon-project/prebid-server-java/pulls/14"}}},"pull_request":{"url":"https://api.github.com/repos/rubicon-project/prebid-server-java/pulls/14","id":181457449,"html_url":"https://github.com/rubicon-project/prebid-server-java/pull/14","diff_url":"https://github.com/rubicon-project/prebid-server-java/pull/14.diff","patch_url":"https://github.com/rubicon-project/prebid-server-java/pull/14.patch","issue_url":"https://api.github.com/repos/rubicon-project/prebid-server-java/issues/14","number":14,"state":"open","locked":false,"title":"Added OpenX bidder","user":{"login":"anestere","id":5513677,"avatar_url":"https://avatars3.githubusercontent.com/u/5513677?v=4","gravatar_id":"","url":"https://api.github.com/users/anestere","html_url":"https://github.com/anestere","followers_url":"https://api.github.com/users/anestere/followers","following_url":"https://api.github.com/users/anestere/following{/other_user}","gists_url":"https://api.github.com/users/anestere/gists{/gist_id}","starred_url":"https://api.github.com/users/anestere/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/anestere/subscriptions","organizations_url":"https://api.github.com/users/anestere/orgs","repos_url":"https://api.github.com/users/anestere/repos","events_url":"https://api.github.com/users/anestere/events{/privacy}","received_events_url":"https://api.github.com/users/anestere/received_events","type":"User","site_admin":false},"body":"","created_at":"2018-04-13T11:13:05Z","updated_at":"2018-04-16T09:47:40Z","closed_at":null,"merged_at":null,"merge_commit_sha":"b69c81b851e62538bad1b81b1b5e96beee697405","assignee":null,"assignees":[],"requested_reviewers":[{"login":"rpanchyk","id":29976213,"avatar_url":"https://avatars2.githubusercontent.com/u/29976213?v=4","gravatar_id":"","url":"https://api.github.com/users/rpanchyk","html_url":"https://github.com/rpanchyk","followers_url":"https://api.github.com/users/rpanchyk/followers","following_url":"https://api.github.com/users/rpanchyk/following{/other_user}","gists_url":"https://api.github.com/users/rpanchyk/gists{/gist_id}","starred_url":"https://api.github.com/users/rpanchyk/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rpanchyk/subscriptions","organizations_url":"https://api.github.com/users/rpanchyk/orgs","repos_url":"https://api.github.com/users/rpanchyk/repos","events_url":"https://api.github.com/users/rpanchyk/events{/privacy}","received_events_url":"https://api.github.com/users/rpanchyk/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/rubicon-project/prebid-server-java/pulls/14/commits","review_comments_url":"https://api.github.com/repos/rubicon-project/prebid-server-java/pulls/14/comments","review_comment_url":"https://api.github.com/repos/rubicon-project/prebid-server-java/pulls/comments{/number}","comments_url":"https://api.github.com/repos/rubicon-project/prebid-server-java/issues/14/comments","statuses_url":"https://api.github.com/repos/rubicon-project/prebid-server-java/statuses/af52a6e2c1ac4c06727761b160467e123ce04a75","head":{"label":"rubicon-project:openx-bidder","ref":"openx-bidder","sha":"af52a6e2c1ac4c06727761b160467e123ce04a75","user":{"login":"rubicon-project","id":367823,"avatar_url":"https://avatars3.githubusercontent.com/u/367823?v=4","gravatar_id":"","url":"https://api.github.com/users/rubicon-project","html_url":"https://github.com/rubicon-project","followers_url":"https://api.github.com/users/rubicon-project/followers","following_url":"https://api.github.com/users/rubicon-project/following{/other_user}","gists_url":"https://api.github.com/users/rubicon-project/gists{/gist_id}","starred_url":"https://api.github.com/users/rubicon-project/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rubicon-project/subscriptions","organizations_url":"https://api.github.com/users/rubicon-project/orgs","repos_url":"https://api.github.com/users/rubicon-project/repos","events_url":"https://api.github.com/users/rubicon-project/events{/privacy}","received_events_url":"https://api.github.com/users/rubicon-project/received_events","type":"Organization","site_admin":false},"repo":{"id":124555222,"name":"prebid-server-java","full_name":"rubicon-project/prebid-server-java","owner":{"login":"rubicon-project","id":367823,"avatar_url":"https://avatars3.githubusercontent.com/u/367823?v=4","gravatar_id":"","url":"https://api.github.com/users/rubicon-project","html_url":"https://github.com/rubicon-project","followers_url":"https://api.github.com/users/rubicon-project/followers","following_url":"https://api.github.com/users/rubicon-project/following{/other_user}","gists_url":"https://api.github.com/users/rubicon-project/gists{/gist_id}","starred_url":"https://api.github.com/users/rubicon-project/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rubicon-project/subscriptions","organizations_url":"https://api.github.com/users/rubicon-project/orgs","repos_url":"https://api.github.com/users/rubicon-project/repos","events_url":"https://api.github.com/users/rubicon-project/events{/privacy}","received_events_url":"https://api.github.com/users/rubicon-project/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/rubicon-project/prebid-server-java","description":"Java version of Prebid Server","fork":false,"url":"https://api.github.com/repos/rubicon-project/prebid-server-java","forks_url":"https://api.github.com/repos/rubicon-project/prebid-server-java/forks","keys_url":"https://api.github.com/repos/rubicon-project/prebid-server-java/keys{/key_id}","collaborators_url":"https://api.github.com/repos/rubicon-project/prebid-server-java/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/rubicon-project/prebid-server-java/teams","hooks_url":"https://api.github.com/repos/rubicon-project/prebid-server-java/hooks","issue_events_url":"https://api.github.com/repos/rubicon-project/prebid-server-java/issues/events{/number}","events_url":"https://api.github.com/repos/rubicon-project/prebid-server-java/events","assignees_url":"https://api.github.com/repos/rubicon-project/prebid-server-java/assignees{/user}","branches_url":"https://api.github.com/repos/rubicon-project/prebid-server-java/branches{/branch}","tags_url":"https://api.github.com/repos/rubicon-project/prebid-server-java/tags","blobs_url":"https://api.github.com/repos/rubicon-project/prebid-server-java/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/rubicon-project/prebid-server-java/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/rubicon-project/prebid-server-java/git/refs{/sha}","trees_url":"https://api.github.com/repos/rubicon-project/prebid-server-java/git/trees{/sha}","statuses_url":"https://api.github.com/repos/rubicon-project/prebid-server-java/statuses/{sha}","languages_url":"https://api.github.com/repos/rubicon-project/prebid-server-java/languages","stargazers_url":"https://api.github.com/repos/rubicon-project/prebid-server-java/stargazers","contributors_url":"https://api.github.com/repos/rubicon-project/prebid-server-java/contributors","subscribers_url":"https://api.github.com/repos/rubicon-project/prebid-server-java/subscribers","subscription_url":"https://api.github.com/repos/rubicon-project/prebid-server-java/subscription","commits_url":"https://api.github.com/repos/rubicon-project/prebid-server-java/commits{/sha}","git_commits_url":"https://api.github.com/repos/rubicon-project/prebid-server-java/git/commits{/sha}","comments_url":"https://api.github.com/repos/rubicon-project/prebid-server-java/comments{/number}","issue_comment_url":"https://api.github.com/repos/rubicon-project/prebid-server-java/issues/comments{/number}","contents_url":"https://api.github.com/repos/rubicon-project/prebid-server-java/contents/{+path}","compare_url":"https://api.github.com/repos/rubicon-project/prebid-server-java/compare/{base}...{head}","merges_url":"https://api.github.com/repos/rubicon-project/prebid-server-java/merges","archive_url":"https://api.github.com/repos/rubicon-project/prebid-server-java/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/rubicon-project/prebid-server-java/downloads","issues_url":"https://api.github.com/repos/rubicon-project/prebid-server-java/issues{/number}","pulls_url":"https://api.github.com/repos/rubicon-project/prebid-server-java/pulls{/number}","milestones_url":"https://api.github.com/repos/rubicon-project/prebid-server-java/milestones{/number}","notifications_url":"https://api.github.com/repos/rubicon-project/prebid-server-java/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/rubicon-project/prebid-server-java/labels{/name}","releases_url":"https://api.github.com/repos/rubicon-project/prebid-server-java/releases{/id}","deployments_url":"https://api.github.com/repos/rubicon-project/prebid-server-java/deployments","created_at":"2018-03-09T15:05:17Z","updated_at":"2018-04-12T13:07:46Z","pushed_at":"2018-04-15T14:42:52Z","git_url":"git://github.com/rubicon-project/prebid-server-java.git","ssh_url":"git@github.com:rubicon-project/prebid-server-java.git","clone_url":"https://github.com/rubicon-project/prebid-server-java.git","svn_url":"https://github.com/rubicon-project/prebid-server-java","homepage":null,"size":2104,"stargazers_count":1,"watchers_count":1,"language":"Java","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1,"mirror_url":null,"archived":false,"open_issues_count":8,"license":null,"forks":1,"open_issues":8,"watchers":1,"default_branch":"master"}},"base":{"label":"rubicon-project:master","ref":"master","sha":"287d02535015a10fcc5c68fed543a906b3a32c94","user":{"login":"rubicon-project","id":367823,"avatar_url":"https://avatars3.githubusercontent.com/u/367823?v=4","gravatar_id":"","url":"https://api.github.com/users/rubicon-project","html_url":"https://github.com/rubicon-project","followers_url":"https://api.github.com/users/rubicon-project/followers","following_url":"https://api.github.com/users/rubicon-project/following{/other_user}","gists_url":"https://api.github.com/users/rubicon-project/gists{/gist_id}","starred_url":"https://api.github.com/users/rubicon-project/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rubicon-project/subscriptions","organizations_url":"https://api.github.com/users/rubicon-project/orgs","repos_url":"https://api.github.com/users/rubicon-project/repos","events_url":"https://api.github.com/users/rubicon-project/events{/privacy}","received_events_url":"https://api.github.com/users/rubicon-project/received_events","type":"Organization","site_admin":false},"repo":{"id":124555222,"name":"prebid-server-java","full_name":"rubicon-project/prebid-server-java","owner":{"login":"rubicon-project","id":367823,"avatar_url":"https://avatars3.githubusercontent.com/u/367823?v=4","gravatar_id":"","url":"https://api.github.com/users/rubicon-project","html_url":"https://github.com/rubicon-project","followers_url":"https://api.github.com/users/rubicon-project/followers","following_url":"https://api.github.com/users/rubicon-project/following{/other_user}","gists_url":"https://api.github.com/users/rubicon-project/gists{/gist_id}","starred_url":"https://api.github.com/users/rubicon-project/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rubicon-project/subscriptions","organizations_url":"https://api.github.com/users/rubicon-project/orgs","repos_url":"https://api.github.com/users/rubicon-project/repos","events_url":"https://api.github.com/users/rubicon-project/events{/privacy}","received_events_url":"https://api.github.com/users/rubicon-project/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/rubicon-project/prebid-server-java","description":"Java version of Prebid Server","fork":false,"url":"https://api.github.com/repos/rubicon-project/prebid-server-java","forks_url":"https://api.github.com/repos/rubicon-project/prebid-server-java/forks","keys_url":"https://api.github.com/repos/rubicon-project/prebid-server-java/keys{/key_id}","collaborators_url":"https://api.github.com/repos/rubicon-project/prebid-server-java/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/rubicon-project/prebid-server-java/teams","hooks_url":"https://api.github.com/repos/rubicon-project/prebid-server-java/hooks","issue_events_url":"https://api.github.com/repos/rubicon-project/prebid-server-java/issues/events{/number}","events_url":"https://api.github.com/repos/rubicon-project/prebid-server-java/events","assignees_url":"https://api.github.com/repos/rubicon-project/prebid-server-java/assignees{/user}","branches_url":"https://api.github.com/repos/rubicon-project/prebid-server-java/branches{/branch}","tags_url":"https://api.github.com/repos/rubicon-project/prebid-server-java/tags","blobs_url":"https://api.github.com/repos/rubicon-project/prebid-server-java/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/rubicon-project/prebid-server-java/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/rubicon-project/prebid-server-java/git/refs{/sha}","trees_url":"https://api.github.com/repos/rubicon-project/prebid-server-java/git/trees{/sha}","statuses_url":"https://api.github.com/repos/rubicon-project/prebid-server-java/statuses/{sha}","languages_url":"https://api.github.com/repos/rubicon-project/prebid-server-java/languages","stargazers_url":"https://api.github.com/repos/rubicon-project/prebid-server-java/stargazers","contributors_url":"https://api.github.com/repos/rubicon-project/prebid-server-java/contributors","subscribers_url":"https://api.github.com/repos/rubicon-project/prebid-server-java/subscribers","subscription_url":"https://api.github.com/repos/rubicon-project/prebid-server-java/subscription","commits_url":"https://api.github.com/repos/rubicon-project/prebid-server-java/commits{/sha}","git_commits_url":"https://api.github.com/repos/rubicon-project/prebid-server-java/git/commits{/sha}","comments_url":"https://api.github.com/repos/rubicon-project/prebid-server-java/comments{/number}","issue_comment_url":"https://api.github.com/repos/rubicon-project/prebid-server-java/issues/comments{/number}","contents_url":"https://api.github.com/repos/rubicon-project/prebid-server-java/contents/{+path}","compare_url":"https://api.github.com/repos/rubicon-project/prebid-server-java/compare/{base}...{head}","merges_url":"https://api.github.com/repos/rubicon-project/prebid-server-java/merges","archive_url":"https://api.github.com/repos/rubicon-project/prebid-server-java/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/rubicon-project/prebid-server-java/downloads","issues_url":"https://api.github.com/repos/rubicon-project/prebid-server-java/issues{/number}","pulls_url":"https://api.github.com/repos/rubicon-project/prebid-server-java/pulls{/number}","milestones_url":"https://api.github.com/repos/rubicon-project/prebid-server-java/milestones{/number}","notifications_url":"https://api.github.com/repos/rubicon-project/prebid-server-java/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/rubicon-project/prebid-server-java/labels{/name}","releases_url":"https://api.github.com/repos/rubicon-project/prebid-server-java/releases{/id}","deployments_url":"https://api.github.com/repos/rubicon-project/prebid-server-java/deployments","created_at":"2018-03-09T15:05:17Z","updated_at":"2018-04-12T13:07:46Z","pushed_at":"2018-04-15T14:42:52Z","git_url":"git://github.com/rubicon-project/prebid-server-java.git","ssh_url":"git@github.com:rubicon-project/prebid-server-java.git","clone_url":"https://github.com/rubicon-project/prebid-server-java.git","svn_url":"https://github.com/rubicon-project/prebid-server-java","homepage":null,"size":2104,"stargazers_count":1,"watchers_count":1,"language":"Java","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1,"mirror_url":null,"archived":false,"open_issues_count":8,"license":null,"forks":1,"open_issues":8,"watchers":1,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/rubicon-project/prebid-server-java/pulls/14"},"html":{"href":"https://github.com/rubicon-project/prebid-server-java/pull/14"},"issue":{"href":"https://api.github.com/repos/rubicon-project/prebid-server-java/issues/14"},"comments":{"href":"https://api.github.com/repos/rubicon-project/prebid-server-java/issues/14/comments"},"review_comments":{"href":"https://api.github.com/repos/rubicon-project/prebid-server-java/pulls/14/comments"},"review_comment":{"href":"https://api.github.com/repos/rubicon-project/prebid-server-java/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/rubicon-project/prebid-server-java/pulls/14/commits"},"statuses":{"href":"https://api.github.com/repos/rubicon-project/prebid-server-java/statuses/af52a6e2c1ac4c06727761b160467e123ce04a75"}},"author_association":"COLLABORATOR"}}
{"actor":{"display_login":"BraslavskiyAndrey"}}