{"action":"created","comment":{"url":"https://api.github.com/repos/prebid/Prebid.js/pulls/comments/44726127","id":44726127,"diff_hunk":"@@ -46,187 +49,145 @@ var AppNexusAdapter = function AppNexusAdapter() {\n \n \n \tfunction callBids(params) {\n-\t\t//console.log(params);\n-\t\tvar anArr = params.bids;\n-\t\tfor (var i = 0; i < anArr.length; i++) {\n-\t\t\tvar bidReqeust = anArr[i];\n-\t\t\tvar callbackId = utils.getUniqueIdentifierStr();\n-\t\t\tadloader.loadScript(buildJPTCall(bidReqeust, callbackId));\n-\t\t\t//store a reference to the bidRequest from the callback id\n-\t\t\tbidmanager.pbCallbackMap[callbackId] = bidReqeust;\n-\t\t}\n \n-\t}\n-\t//given a starttime and an end time, hit the correct impression tracker\n-\tfunction processAndTrackLatency(startTime, endTime, placementCode) {\n+\t\tbids = params.bids;\n+\t\tif (!bids || !bids.length) return;\n \n-\t\tif (startTime && endTime) {\n-\t\t\t//get the difference between times\n-\t\t\tvar timeDiff = endTime - startTime;\n-\t\t\tvar trackingPixelFound = false;\n-\t\t\tvar trackingUrl = '';\n-\t\t\tfor (var curTrackerItem in timeTrackingBuckets) {\n-\t\t\t\t//find the closest upper bound of defined tracking times\n-\t\t\t\tif (timeDiff <= curTrackerItem) {\n-\t\t\t\t\ttrackingPixelFound = true;\n-\t\t\t\t\ttrackingUrl = timeTrackingBuckets[curTrackerItem];\n-\t\t\t\t\tadloader.trackPixel(trackingUrl);\n-\t\t\t\t\tbreak;\n-\t\t\t\t}\n-\t\t\t}\n-\t\t\t//if we didn't find a bucket, assume use the catch-all time over bucket\n-\t\t\tif (!trackingPixelFound) {\n-\t\t\t\ttrackingUrl = timeTrackerOverMaxBucket;\n-\t\t\t\tadloader.trackPixel(trackingUrl);\n-\t\t\t}\n-\n-\t\t\tutils.logMessage('latency for placement code : ' + placementCode + ' : ' + timeDiff + ' ms.' + ' Tracking URL Fired : ' + trackingUrl);\n+\t\tif(!window.apntag){\n+\t\t\tadloader.loadScript(AST_URL,requestAST);\n+\t\t}else{\n+\t\t\trequestAST();\n \t\t}\n \t}\n \n+\tfunction requestAST(){\n+\t\tif(!window.apntag){\n+      \t\tutils.logError('appnexus', 'ERROR', 'apntag is not present!');\n+\t\t}else{\n+\t\t\tutils._each(bids,function(bid){\n \n-\tfunction buildJPTCall(bid, callbackId) {\n-\n-\t\t//determine tag params\n-\t\tvar placementId = utils.getBidIdParamater('placementId', bid.params);\n-\t\tvar memberId = utils.getBidIdParamater('memberId', bid.params);\n-\t\tvar inventoryCode = utils.getBidIdParamater('invCode', bid.params);\n-\t\tvar query = utils.getBidIdParamater('query', bid.params);\n-\n-\t\t//build our base tag, based on if we are http or https\n-\n-\t\tvar jptCall = 'http' + ('https:' === document.location.protocol ? 's://secure.adnxs.com/jpt?' : '://ib.adnxs.com/jpt?');\n+\t\t\t\t//init ast request\n+\t\t\t\twindow.apntag = window.apntag || {};\n+    \t\t\tapntag.anq = apntag.anq || [];\n \n-\t\t//var combinedTargetingParamsList = combineTargetingParams(bidOpts);\n+    \t\t\tif(pbjs.logging){\n+    \t\t\t\tapntag.enableDebug();\n+    \t\t\t}else{\n+    \t\t\t\tapntag.disableDebug();\n+    \t\t\t}\n \n-\t\t//callback is the callback function to call, this should be hard-coded to pbjs.handleCb once AL-107 is released\n-\t\tjptCall = utils.tryAppendQueryString(jptCall, 'callback', 'pbjs.handleCB');\n-\t\tjptCall = utils.tryAppendQueryString(jptCall, 'callback_uid', callbackId);\n+    \t\t\tapntag.clearRequest();\n \n-\t\t//disable PSAs here, as per RAD-503\n-\t\tjptCall = utils.tryAppendQueryString(jptCall, 'psa', '0');\n-\t\tjptCall = utils.tryAppendQueryString(jptCall, 'id', placementId);\n-\t\tjptCall = utils.tryAppendQueryString(jptCall, 'member_id', memberId);\n-\t\tjptCall = utils.tryAppendQueryString(jptCall, 'code', inventoryCode);\n+    \t\t\t//build tag\n+    \t\t\tvar astTag = buildTag(bid);\n+    \t\t\tbidmanager.pbCallbackMap[astTag.targetId] = bid;\n \n-\t\t//sizes takes a bit more logic\n-\t\tvar sizeQueryString = utils.parseSizesInput(bid.sizes);\n-\t\tif (sizeQueryString) {\n-\t\t\tjptCall += sizeQueryString + '&';\n-\t\t}\n-\t\t//console.log(jptCall);\n+    \t\t\tapntag.anq.push(function(){\n \n-\t\tvar targetingParams = utils.parseQueryStringParameters(query);\n+    \t\t        var requestTag = apntag.defineTag(astTag);\n+    \t\t        requestTag.on('adAvailable',function(){\n+\t\t\t        \tpbjs.handleCB(astTag.targetId);\n+\t\t\t        });\n \n-\t\tif (targetingParams) {\n-\t\t\t//don't append a & here, we have already done it in parseQueryStringParameters\n-\t\t\tjptCall += targetingParams;\n-\t\t}\n+\t\t\t        requestTag.on('adRequestFailure',function(){\n+\t\t\t\t\t\tutils.logMessage('No prebid response for placement');\n+\t\t\t        });\n \n-\t\t//append referrer\n-\t\tjptCall = utils.tryAppendQueryString(jptCall, 'referrer', utils.getTopWindowUrl());\n+\t\t\t        requestTag.on('adError',function(){\n+\t\t\t        \tutils.logMessage('No prebid response for placement');\n+\t\t\t        });\n \n+        \t\t\tapntag.loadTags();\n+    \t\t\t});\n \n-\t\t//remove the trailing \"&\"\n-\t\tif (jptCall.lastIndexOf('&') === jptCall.length - 1) {\n-\t\t\tjptCall = jptCall.substring(0, jptCall.length - 1);\n+\t\t\t});\n \t\t}\n-\n-\t\t// @if NODE_ENV='debug'\n-\t\tutils.logMessage('jpt request built: ' + jptCall);\n-\t\t// @endif\n-\n-\t\t//append a timer here to track latency\n-\t\tbid.startTime = new Date().getTime();\n-\n-\t\t//track initial request\n-\t\t//adloader.trackPixel(timeTrackerBidRequested); //TODO add this back in and figure out where it goes and what it does\n-\n-\t\treturn jptCall;\n-\n \t}\n \n-\t//expose the callback to the global object:\n-\tpbjs.handleCB = function(jptResponseObj) {\n+\tpbjs.handleCB = function(targetId){\n+\t\tvar placementCode = '';\n \n-\t\tif (jptResponseObj && jptResponseObj.callback_uid) {\n+\t\t//get response data\n+\t\tvar data = apntag.getAdData(targetId);\n \n-\t\t\tvar error;\n-\t\t\tvar responseCPM;\n-\t\t\tvar id = jptResponseObj.callback_uid,\n-\t\t\t\tplacementCode = '',\n-\t\t\t\t//retrieve bid object by callback ID\n-\t\t\t\tbidObj = bidmanager.getPlacementIdByCBIdentifer(id);\n-\t\t\tif (bidObj) {\n-\t\t\t\tplacementCode = bidObj.placementCode;\n-\t\t\t\t//set the status\n-\t\t\t\tbidObj.status = CONSTANTS.STATUS.GOOD;\n-\t\t\t\t//track latency\n-\t\t\t\ttry {\n-\t\t\t\t\tprocessAndTrackLatency(bidObj.startTime, new Date().getTime(), placementCode);\n-\t\t\t\t} catch (e) {}\n+\t\tif(data){\n \n-\t\t\t\t//place ad response on bidmanager._adResponsesByBidderId\n+\t\t\tbidObj = bidmanager.getPlacementIdByCBIdentifer(targetId);\n \n+\t\t\tif(bidObj){\n+\t\t\t\tbidObj.status = CONSTANTS.STATUS.GOOD;\n+\t\t\t\tplacementCode = bidObj.placementCode;\n \t\t\t}\n \n-\t\t\t// @if NODE_ENV='debug'\n-\t\t\tutils.logMessage('JSONP callback function called for ad ID: ' + id);\n-\t\t\t// @endif\n+\t\t\tutils.logMessage('Callback function called for ad ID: ' + targetId);\n+\n \t\t\tvar bid = [];\n-\t\t\tif (jptResponseObj.result && jptResponseObj.result.cpm && jptResponseObj.result.cpm !== 0) {\n-\t\t\t\tresponseCPM = parseInt(jptResponseObj.result.cpm, 10);\n-\n-\t\t\t\t//CPM response from /jpt is dollar/cent multiplied by 10000\n-\t\t\t\t//in order to avoid using floats\n-\t\t\t\t//switch CPM to \"dollar/cent\"\n-\t\t\t\tresponseCPM = responseCPM / 10000;\n-\t\t\t\tvar responseAd = jptResponseObj.result.ad;\n-\t\t\t\t//store bid response\n-\t\t\t\t//bid status is good (indicating 1)\n-\t\t\t\t//TODO refactor to pass a Bid object instead of multiple params\n-\t\t\t\t//bidmanager.addBidResponse(statusCode, placementCode, bidderCode, custObj, cpm, ad, width, height, dealId, isDeal, tier, adId )\n-\t\t\t\tvar adId = jptResponseObj.result.creative_id;\n+\t\t\tif( data.ad && data.ad.cpm && data.ad.cpm !==0 ){\n \t\t\t\tbid = bidfactory.createBid(1);\n-\t\t\t\t//bid.adId = adId;\n-\t\t\t\tbid.creative_id = adId;\n-\t\t\t\tbid.bidderCode = 'appnexus';\n-\t\t\t\tbid.cpm = responseCPM;\n-\t\t\t\tbid.adUrl = jptResponseObj.result.ad;\n-\t\t\t\tbid.width = jptResponseObj.result.width;\n-\t\t\t\tbid.height = jptResponseObj.result.height;\n-\t\t\t\tbid.dealId = jptResponseObj.result.deal_id;\n-\n-\t\t\t\t//bidmanager.addBidResponse(1, placementCode, 'appnexus', jptResponseObj, responseCPM, jptResponseObj.result.ad, jptResponseObj.result.width, jptResponseObj.result.height, '', false, '',  jptResponseObj.result.creative_id );\n-\t\t\t\tbidmanager.addBidResponse(placementCode, bid);\n-\n-\n-\t\t\t} else {\n-\t\t\t\t//no response data\n-\t\t\t\t// @if NODE_ENV='debug'\n+\n+\t\t\t\tbid.creative_id = data.ad.creative_id;\n+\t\t\t\tbid.cpm = data.ad.cpm;\n+\t\t\t\tbid.ad = data.ad.banner.content;\n+\t\t\t\tbid.width = data.ad.banner.width;\n+\t\t\t\tbid.height = data.ad.banner.height;","path":"src/adapters/appnexus.js","position":226,"original_position":226,"commit_id":"5b3b2d4a14cdd83fea878db35ffd4bd92ab570dc","original_commit_id":"5b3b2d4a14cdd83fea878db35ffd4bd92ab570dc","user":{"login":"mkendall07","id":1870166,"avatar_url":"https://avatars.githubusercontent.com/u/1870166?v=3","gravatar_id":"","url":"https://api.github.com/users/mkendall07","html_url":"https://github.com/mkendall07","followers_url":"https://api.github.com/users/mkendall07/followers","following_url":"https://api.github.com/users/mkendall07/following{/other_user}","gists_url":"https://api.github.com/users/mkendall07/gists{/gist_id}","starred_url":"https://api.github.com/users/mkendall07/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mkendall07/subscriptions","organizations_url":"https://api.github.com/users/mkendall07/orgs","repos_url":"https://api.github.com/users/mkendall07/repos","events_url":"https://api.github.com/users/mkendall07/events{/privacy}","received_events_url":"https://api.github.com/users/mkendall07/received_events","type":"User","site_admin":false},"body":"This looks good to me. ","created_at":"2015-11-12T22:40:41Z","updated_at":"2015-11-12T22:40:41Z","html_url":"https://github.com/prebid/Prebid.js/pull/102#discussion_r44726127","pull_request_url":"https://api.github.com/repos/prebid/Prebid.js/pulls/102","_links":{"self":{"href":"https://api.github.com/repos/prebid/Prebid.js/pulls/comments/44726127"},"html":{"href":"https://github.com/prebid/Prebid.js/pull/102#discussion_r44726127"},"pull_request":{"href":"https://api.github.com/repos/prebid/Prebid.js/pulls/102"}}},"pull_request":{"url":"https://api.github.com/repos/prebid/Prebid.js/pulls/102","id":50482135,"html_url":"https://github.com/prebid/Prebid.js/pull/102","diff_url":"https://github.com/prebid/Prebid.js/pull/102.diff","patch_url":"https://github.com/prebid/Prebid.js/pull/102.patch","issue_url":"https://api.github.com/repos/prebid/Prebid.js/issues/102","number":102,"state":"open","locked":false,"title":"Use AST for Prebid.js adaptor","user":{"login":"hjeong12","id":13727184,"avatar_url":"https://avatars.githubusercontent.com/u/13727184?v=3","gravatar_id":"","url":"https://api.github.com/users/hjeong12","html_url":"https://github.com/hjeong12","followers_url":"https://api.github.com/users/hjeong12/followers","following_url":"https://api.github.com/users/hjeong12/following{/other_user}","gists_url":"https://api.github.com/users/hjeong12/gists{/gist_id}","starred_url":"https://api.github.com/users/hjeong12/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hjeong12/subscriptions","organizations_url":"https://api.github.com/users/hjeong12/orgs","repos_url":"https://api.github.com/users/hjeong12/repos","events_url":"https://api.github.com/users/hjeong12/events{/privacy}","received_events_url":"https://api.github.com/users/hjeong12/received_events","type":"User","site_admin":false},"body":"","created_at":"2015-11-12T08:09:37Z","updated_at":"2015-11-12T22:40:41Z","closed_at":null,"merged_at":null,"merge_commit_sha":"21c3552d81b46ac31ac6e12b21b74e375ccaebba","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/prebid/Prebid.js/pulls/102/commits","review_comments_url":"https://api.github.com/repos/prebid/Prebid.js/pulls/102/comments","review_comment_url":"https://api.github.com/repos/prebid/Prebid.js/pulls/comments{/number}","comments_url":"https://api.github.com/repos/prebid/Prebid.js/issues/102/comments","statuses_url":"https://api.github.com/repos/prebid/Prebid.js/statuses/5b3b2d4a14cdd83fea878db35ffd4bd92ab570dc","head":{"label":"prebid:appnexus-endpoint","ref":"appnexus-endpoint","sha":"5b3b2d4a14cdd83fea878db35ffd4bd92ab570dc","user":{"login":"prebid","id":13242760,"avatar_url":"https://avatars.githubusercontent.com/u/13242760?v=3","gravatar_id":"","url":"https://api.github.com/users/prebid","html_url":"https://github.com/prebid","followers_url":"https://api.github.com/users/prebid/followers","following_url":"https://api.github.com/users/prebid/following{/other_user}","gists_url":"https://api.github.com/users/prebid/gists{/gist_id}","starred_url":"https://api.github.com/users/prebid/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/prebid/subscriptions","organizations_url":"https://api.github.com/users/prebid/orgs","repos_url":"https://api.github.com/users/prebid/repos","events_url":"https://api.github.com/users/prebid/events{/privacy}","received_events_url":"https://api.github.com/users/prebid/received_events","type":"User","site_admin":false},"repo":{"id":39321023,"name":"Prebid.js","full_name":"prebid/Prebid.js","owner":{"login":"prebid","id":13242760,"avatar_url":"https://avatars.githubusercontent.com/u/13242760?v=3","gravatar_id":"","url":"https://api.github.com/users/prebid","html_url":"https://github.com/prebid","followers_url":"https://api.github.com/users/prebid/followers","following_url":"https://api.github.com/users/prebid/following{/other_user}","gists_url":"https://api.github.com/users/prebid/gists{/gist_id}","starred_url":"https://api.github.com/users/prebid/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/prebid/subscriptions","organizations_url":"https://api.github.com/users/prebid/orgs","repos_url":"https://api.github.com/users/prebid/repos","events_url":"https://api.github.com/users/prebid/events{/privacy}","received_events_url":"https://api.github.com/users/prebid/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/prebid/Prebid.js","description":"Setup and manage header bidding advertising partners without writing code or confusing line items. Prebid.js is open source and free.","fork":false,"url":"https://api.github.com/repos/prebid/Prebid.js","forks_url":"https://api.github.com/repos/prebid/Prebid.js/forks","keys_url":"https://api.github.com/repos/prebid/Prebid.js/keys{/key_id}","collaborators_url":"https://api.github.com/repos/prebid/Prebid.js/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/prebid/Prebid.js/teams","hooks_url":"https://api.github.com/repos/prebid/Prebid.js/hooks","issue_events_url":"https://api.github.com/repos/prebid/Prebid.js/issues/events{/number}","events_url":"https://api.github.com/repos/prebid/Prebid.js/events","assignees_url":"https://api.github.com/repos/prebid/Prebid.js/assignees{/user}","branches_url":"https://api.github.com/repos/prebid/Prebid.js/branches{/branch}","tags_url":"https://api.github.com/repos/prebid/Prebid.js/tags","blobs_url":"https://api.github.com/repos/prebid/Prebid.js/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/prebid/Prebid.js/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/prebid/Prebid.js/git/refs{/sha}","trees_url":"https://api.github.com/repos/prebid/Prebid.js/git/trees{/sha}","statuses_url":"https://api.github.com/repos/prebid/Prebid.js/statuses/{sha}","languages_url":"https://api.github.com/repos/prebid/Prebid.js/languages","stargazers_url":"https://api.github.com/repos/prebid/Prebid.js/stargazers","contributors_url":"https://api.github.com/repos/prebid/Prebid.js/contributors","subscribers_url":"https://api.github.com/repos/prebid/Prebid.js/subscribers","subscription_url":"https://api.github.com/repos/prebid/Prebid.js/subscription","commits_url":"https://api.github.com/repos/prebid/Prebid.js/commits{/sha}","git_commits_url":"https://api.github.com/repos/prebid/Prebid.js/git/commits{/sha}","comments_url":"https://api.github.com/repos/prebid/Prebid.js/comments{/number}","issue_comment_url":"https://api.github.com/repos/prebid/Prebid.js/issues/comments{/number}","contents_url":"https://api.github.com/repos/prebid/Prebid.js/contents/{+path}","compare_url":"https://api.github.com/repos/prebid/Prebid.js/compare/{base}...{head}","merges_url":"https://api.github.com/repos/prebid/Prebid.js/merges","archive_url":"https://api.github.com/repos/prebid/Prebid.js/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/prebid/Prebid.js/downloads","issues_url":"https://api.github.com/repos/prebid/Prebid.js/issues{/number}","pulls_url":"https://api.github.com/repos/prebid/Prebid.js/pulls{/number}","milestones_url":"https://api.github.com/repos/prebid/Prebid.js/milestones{/number}","notifications_url":"https://api.github.com/repos/prebid/Prebid.js/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/prebid/Prebid.js/labels{/name}","releases_url":"https://api.github.com/repos/prebid/Prebid.js/releases{/id}","created_at":"2015-07-19T03:26:23Z","updated_at":"2015-11-12T17:26:27Z","pushed_at":"2015-11-12T22:18:12Z","git_url":"git://github.com/prebid/Prebid.js.git","ssh_url":"git@github.com:prebid/Prebid.js.git","clone_url":"https://github.com/prebid/Prebid.js.git","svn_url":"https://github.com/prebid/Prebid.js","homepage":"http://prebid.org","size":937,"stargazers_count":70,"watchers_count":70,"language":"JavaScript","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":40,"mirror_url":null,"open_issues_count":36,"forks":40,"open_issues":36,"watchers":70,"default_branch":"master"}},"base":{"label":"prebid:master","ref":"master","sha":"fa28a36135517fd2d91a33bd68b1423641f53bda","user":{"login":"prebid","id":13242760,"avatar_url":"https://avatars.githubusercontent.com/u/13242760?v=3","gravatar_id":"","url":"https://api.github.com/users/prebid","html_url":"https://github.com/prebid","followers_url":"https://api.github.com/users/prebid/followers","following_url":"https://api.github.com/users/prebid/following{/other_user}","gists_url":"https://api.github.com/users/prebid/gists{/gist_id}","starred_url":"https://api.github.com/users/prebid/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/prebid/subscriptions","organizations_url":"https://api.github.com/users/prebid/orgs","repos_url":"https://api.github.com/users/prebid/repos","events_url":"https://api.github.com/users/prebid/events{/privacy}","received_events_url":"https://api.github.com/users/prebid/received_events","type":"User","site_admin":false},"repo":{"id":39321023,"name":"Prebid.js","full_name":"prebid/Prebid.js","owner":{"login":"prebid","id":13242760,"avatar_url":"https://avatars.githubusercontent.com/u/13242760?v=3","gravatar_id":"","url":"https://api.github.com/users/prebid","html_url":"https://github.com/prebid","followers_url":"https://api.github.com/users/prebid/followers","following_url":"https://api.github.com/users/prebid/following{/other_user}","gists_url":"https://api.github.com/users/prebid/gists{/gist_id}","starred_url":"https://api.github.com/users/prebid/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/prebid/subscriptions","organizations_url":"https://api.github.com/users/prebid/orgs","repos_url":"https://api.github.com/users/prebid/repos","events_url":"https://api.github.com/users/prebid/events{/privacy}","received_events_url":"https://api.github.com/users/prebid/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/prebid/Prebid.js","description":"Setup and manage header bidding advertising partners without writing code or confusing line items. Prebid.js is open source and free.","fork":false,"url":"https://api.github.com/repos/prebid/Prebid.js","forks_url":"https://api.github.com/repos/prebid/Prebid.js/forks","keys_url":"https://api.github.com/repos/prebid/Prebid.js/keys{/key_id}","collaborators_url":"https://api.github.com/repos/prebid/Prebid.js/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/prebid/Prebid.js/teams","hooks_url":"https://api.github.com/repos/prebid/Prebid.js/hooks","issue_events_url":"https://api.github.com/repos/prebid/Prebid.js/issues/events{/number}","events_url":"https://api.github.com/repos/prebid/Prebid.js/events","assignees_url":"https://api.github.com/repos/prebid/Prebid.js/assignees{/user}","branches_url":"https://api.github.com/repos/prebid/Prebid.js/branches{/branch}","tags_url":"https://api.github.com/repos/prebid/Prebid.js/tags","blobs_url":"https://api.github.com/repos/prebid/Prebid.js/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/prebid/Prebid.js/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/prebid/Prebid.js/git/refs{/sha}","trees_url":"https://api.github.com/repos/prebid/Prebid.js/git/trees{/sha}","statuses_url":"https://api.github.com/repos/prebid/Prebid.js/statuses/{sha}","languages_url":"https://api.github.com/repos/prebid/Prebid.js/languages","stargazers_url":"https://api.github.com/repos/prebid/Prebid.js/stargazers","contributors_url":"https://api.github.com/repos/prebid/Prebid.js/contributors","subscribers_url":"https://api.github.com/repos/prebid/Prebid.js/subscribers","subscription_url":"https://api.github.com/repos/prebid/Prebid.js/subscription","commits_url":"https://api.github.com/repos/prebid/Prebid.js/commits{/sha}","git_commits_url":"https://api.github.com/repos/prebid/Prebid.js/git/commits{/sha}","comments_url":"https://api.github.com/repos/prebid/Prebid.js/comments{/number}","issue_comment_url":"https://api.github.com/repos/prebid/Prebid.js/issues/comments{/number}","contents_url":"https://api.github.com/repos/prebid/Prebid.js/contents/{+path}","compare_url":"https://api.github.com/repos/prebid/Prebid.js/compare/{base}...{head}","merges_url":"https://api.github.com/repos/prebid/Prebid.js/merges","archive_url":"https://api.github.com/repos/prebid/Prebid.js/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/prebid/Prebid.js/downloads","issues_url":"https://api.github.com/repos/prebid/Prebid.js/issues{/number}","pulls_url":"https://api.github.com/repos/prebid/Prebid.js/pulls{/number}","milestones_url":"https://api.github.com/repos/prebid/Prebid.js/milestones{/number}","notifications_url":"https://api.github.com/repos/prebid/Prebid.js/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/prebid/Prebid.js/labels{/name}","releases_url":"https://api.github.com/repos/prebid/Prebid.js/releases{/id}","created_at":"2015-07-19T03:26:23Z","updated_at":"2015-11-12T17:26:27Z","pushed_at":"2015-11-12T22:18:12Z","git_url":"git://github.com/prebid/Prebid.js.git","ssh_url":"git@github.com:prebid/Prebid.js.git","clone_url":"https://github.com/prebid/Prebid.js.git","svn_url":"https://github.com/prebid/Prebid.js","homepage":"http://prebid.org","size":937,"stargazers_count":70,"watchers_count":70,"language":"JavaScript","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":40,"mirror_url":null,"open_issues_count":36,"forks":40,"open_issues":36,"watchers":70,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/prebid/Prebid.js/pulls/102"},"html":{"href":"https://github.com/prebid/Prebid.js/pull/102"},"issue":{"href":"https://api.github.com/repos/prebid/Prebid.js/issues/102"},"comments":{"href":"https://api.github.com/repos/prebid/Prebid.js/issues/102/comments"},"review_comments":{"href":"https://api.github.com/repos/prebid/Prebid.js/pulls/102/comments"},"review_comment":{"href":"https://api.github.com/repos/prebid/Prebid.js/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/prebid/Prebid.js/pulls/102/commits"},"statuses":{"href":"https://api.github.com/repos/prebid/Prebid.js/statuses/5b3b2d4a14cdd83fea878db35ffd4bd92ab570dc"}}}}