Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
43 commits
Select commit Hold shift + click to select a range
ded878a
initial adapter
ecdrsvc Apr 5, 2022
bdcabea
Merge branch 'master' of https://github.com/ecdrsvc/Prebid.js
ecdrsvc Apr 5, 2022
d889ba5
Merge branch 'prebid:master' into master
ecdrsvc Apr 20, 2022
5bbcbc9
rename
ecdrsvc Apr 20, 2022
8ca1044
Merge branch 'master' of https://github.com/ecdrsvc/Prebid.js
ecdrsvc Apr 20, 2022
184dc26
Merge branch 'prebid:master' into master
ecdrsvc Apr 22, 2022
8c3277c
Merge branch 'prebid:master' into master
ecdrsvc Apr 29, 2022
5e3a0d3
updates
ecdrsvc Apr 29, 2022
66f9bcf
Merge branch 'prebid:master' into master
ecdrsvc May 16, 2022
2d280d2
use mabidder as bidder name
ecdrsvc May 16, 2022
43ec791
Merge branch 'master' of https://github.com/ecdrsvc/Prebid.js
ecdrsvc May 16, 2022
627cf6a
remove unused imports
ecdrsvc May 16, 2022
8574f59
updates
ecdrsvc May 25, 2022
8ca1efc
update name
ecdrsvc May 25, 2022
cc570e4
unit tests
ecdrsvc May 25, 2022
68c6d2f
Merge branch 'prebid:master' into master
ecdrsvc May 25, 2022
b04e94f
Merge branch 'master' of https://github.com/ecdrsvc/Prebid.js
ecdrsvc May 25, 2022
477208a
update request format
ecdrsvc Jun 10, 2022
f0e33df
Merge branch 'prebid:master' into master
ecdrsvc Jun 10, 2022
e9d8502
Merge branch 'master' of https://github.com/ecdrsvc/Prebid.js
ecdrsvc Jun 10, 2022
5965a2d
reorganize request structure
ecdrsvc Jun 23, 2022
74ab3d2
update buildRequest function and documentation
ecdrsvc Jul 12, 2022
9b17112
update bid request parameters
ecdrsvc Jul 13, 2022
7943c8f
update test params
ecdrsvc Jul 13, 2022
6cdd3ee
update interpret resonse
ecdrsvc Jul 25, 2022
38684ad
update isBidRequestValid function
ecdrsvc Jul 27, 2022
ae428d6
fix unit tests
ecdrsvc Jul 28, 2022
3ec6d70
use prebid.js package-lock.json
ecdrsvc Jul 29, 2022
31fc746
Merge branch 'prebid:master' into master
ecdrsvc Jul 29, 2022
9207964
fix data retrieval in buildRequests
ecdrsvc Aug 2, 2022
f442985
update test
ecdrsvc Aug 2, 2022
c41a7b0
update currency in test
ecdrsvc Aug 10, 2022
247a3b2
Merge branch 'prebid:master' into master
ecdrsvc Aug 10, 2022
3173b8f
update documentation
ecdrsvc Aug 10, 2022
a96731c
Merge branch 'master' of https://github.com/ecdrsvc/Prebid.js
ecdrsvc Aug 10, 2022
2744144
update baseUrl to production bid endpoint
ecdrsvc Aug 11, 2022
5e39727
remove package-lock.json change
ecdrsvc Aug 17, 2022
bcb6f75
reset to remove package-lock.json change
ecdrsvc Aug 17, 2022
5a15f1d
Merge branch 'master' of https://github.com/ecdrsvc/Prebid.js
ecdrsvc Aug 17, 2022
8f335bd
move supportedMediaTypes to top of spec object
ecdrsvc Aug 19, 2022
c403bda
remove getFormatType function, only BANNER is currently supported
ecdrsvc Aug 19, 2022
df51a4d
Merge branch 'master' of https://github.com/ecdrsvc/Prebid.js
ecdrsvc Aug 19, 2022
352ed42
Bump tibdex/github-app-token from 1.3.0 to 1.6
dependabot[bot] Aug 19, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/issue_tracker.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ jobs:
steps:
- name: Generate token
id: generate_token
uses: tibdex/github-app-token@36464acb844fc53b9b8b2401da68844f6b05ebb0
uses: tibdex/github-app-token@f717b5ecd4534d3c4df4ce9b5c1c2214f0f7cd06
with:
app_id: ${{ secrets.ISSUE_APP_ID }}
private_key: ${{ secrets.ISSUE_APP_PEM }}
Expand Down
60 changes: 60 additions & 0 deletions modules/mabidderBidAdapter.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
import { registerBidder } from '../src/adapters/bidderFactory.js';
import { BANNER } from '../src/mediaTypes.js';
const BIDDER_CODE = 'mabidder';
export const baseUrl = 'https://prebid.ecdrsvc.com/bid';
export const spec = {
supportedMediaTypes: [BANNER],
code: BIDDER_CODE,
isBidRequestValid: function(bid) {
if (typeof bid.params === 'undefined') {
return false;
}
return !!(bid.params.ppid && bid.sizes && Array.isArray(bid.sizes) && Array.isArray(bid.sizes[0]))
},
buildRequests: function(validBidRequests, bidderRequest) {
const fpd = bidderRequest.ortb2;
const bids = [];
validBidRequests.forEach(bidRequest => {
const sizes = [];
bidRequest.sizes.forEach(size => {
sizes.push({
width: size[0],
height: size[1]
});
});
bids.push({
bidId: bidRequest.bidId,
sizes: sizes,
ppid: bidRequest.params.ppid,
mediaType: BANNER
})
});
const req = {
url: baseUrl,
method: 'POST',
data: {
v: $$PREBID_GLOBAL$$.version,
bids: bids,
url: bidderRequest.refererInfo.page || '',
referer: bidderRequest.refererInfo.ref || '',
fpd: fpd || {}
}
};

return req;
},
interpretResponse: function(serverResponse, request) {
const bidResponses = [];
if (serverResponse.body) {
const body = serverResponse.body;
if (!body || typeof body !== 'object' || !body.Responses || !body.Responses.length > 0) {
return [];
}
body.Responses.forEach((bidResponse) => {
bidResponses.push(bidResponse);
});
}
return bidResponses;
}
}
registerBidder(spec);
31 changes: 31 additions & 0 deletions modules/mabidderBidAdapter.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
#Overview

```
Module Name: mabidder Bid Adapter
Module Type: Bidder Adapter
Maintainer: lmprebidadapter@loblaw.ca
```

# Description

Module that connects to MediaAisle demand sources

# Test Parameters
```
var adUnits = [
{
code: 'test_banner',
mediaTypes: {
banner: {
sizes: [300, 250]
}
},
bids: [{
bidder: 'mabidder',
params: {
ppid: 'test'
}
}],
}
];
```
2 changes: 1 addition & 1 deletion package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

125 changes: 125 additions & 0 deletions test/spec/modules/mabidderBidAdapter_spec.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,125 @@
import { expect } from 'chai'
import { baseUrl, spec } from 'modules/mabidderBidAdapter.js'
import { newBidder } from 'src/adapters/bidderFactory.js'
import { BANNER } from '../../../src/mediaTypes.js';

describe('mabidderBidAdapter', () => {
const adapter = newBidder(spec)
const bidRequestBanner = {
'bidId': '12345',
'bidder': 'mabidder',
'sizes': [[300, 250]],
'mediaTypes': {
'banner': {
'sizes': [[300, 250]]
}
},
'params': {
'ppid': 'string1',
}

}

describe('inherited functions', () => {
it('exists and is a function', () => {
expect(adapter.callBids).to.exist.and.to.be.a('function')
})
})

describe('isBidRequestValid', () => {
it('should return true when required params are found', () => {
expect(spec.isBidRequestValid(bidRequestBanner)).to.equal(true)
})

it('should return false when required params are not found', () => {
let bid = Object.assign({}, bidRequestBanner)
const ppid = bid.params.ppid
delete bid.params.ppid
expect(spec.isBidRequestValid(bid)).to.equal(false)
bid.params.ppid = ppid

bid = Object.assign({}, bidRequestBanner)
const params = bidRequestBanner.params
delete bid.params
expect(spec.isBidRequestValid(bid)).to.equal(false)
bidRequestBanner.params = params
})
})

describe('buildRequests', () => {
const bidRequests = [bidRequestBanner]
const req = spec.buildRequests(bidRequests, {
auctionId: '123',
refererInfo: {
referer: 'http://test.com/path.html'
}
})

it('sends bid request to ENDPOINT via POST', () => {
expect(req.method).to.equal('POST')
expect(req.url.indexOf('https://')).to.equal(0)
expect(req.url).to.equal(baseUrl)
})

it('contains prebid version parameter', () => {
expect(req.data.v).to.equal($$PREBID_GLOBAL$$.version)
})

it('sends the correct bid parameters for banner', () => {
expect(req.data.bids[0].bidId).to.equal(bidRequestBanner.bidId)
expect(req.data.bids[0].ppid).to.equal(bidRequestBanner.params.ppid)
expect(req.data.bids[0].sizes[0].width).to.equal(bidRequestBanner.sizes[0][0])
expect(req.data.bids[0].sizes[0].height).to.equal(bidRequestBanner.sizes[0][1])
})

it('accepts an optional fpd parameter', () => {
expect(req.data.fpd).to.exist.and.to.be.a('Object')
})
})

describe('interpretResponse', () => {
it('handles banner request and should get correct bid response', () => {
const BIDDER_RESPONSE_BANNER = {
'Responses': [{
'width': 300,
'height': 250,
'creativeId': '123abc',
'ad': '<!-- Creative -->',
'cpm': 0.5,
'requestId': 'abc123',
'ttl': 60,
'netRevenue': true,
'currency': 'USD',
'mediaType': BANNER,
'meta': {
'advertiserDomains': ['https://loblaws.ca']
}
}]
}
const results = spec.interpretResponse({ body: BIDDER_RESPONSE_BANNER }, {})
const response = results[0]
expect(results.length).to.equal(BIDDER_RESPONSE_BANNER.Responses.length)
expect(response).to.have.property('ad').equal('<!-- Creative -->')
expect(response).to.have.property('requestId').equal('abc123')
expect(response).to.have.property('cpm').equal(0.5)
expect(response).to.have.property('currency').equal('USD')
expect(response).to.have.property('width').equal(300)
expect(response).to.have.property('height').equal(250)
expect(response).to.have.property('ttl').equal(60)
expect(response).to.have.property('creativeId').equal('123abc')
expect(response).to.have.property('mediaType').equal(BANNER)
expect(response).to.have.property('meta')
expect(response.meta).to.have.property('advertiserDomains')
expect(response.meta.advertiserDomains).to.be.an('array')
expect(response.meta.advertiserDomains[0]).equal('https://loblaws.ca')
})

it('handles no bid response by returning empty array', () => {
let result = spec.interpretResponse({ body: undefined }, {})
expect(result).to.deep.equal([])

result = spec.interpretResponse({ body: '' }, {})
expect(result).to.deep.equal([])
})
})
})