Skip to content

Commit

Permalink
Adnuntius: Add Price Type (#3084)
Browse files Browse the repository at this point in the history
  • Loading branch information
mikael-lundin authored Sep 29, 2023
1 parent 6a36178 commit 4ad946b
Show file tree
Hide file tree
Showing 6 changed files with 292 additions and 7 deletions.
46 changes: 39 additions & 7 deletions adapters/adnuntius/adnuntius.go
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,12 @@ type Ad struct {
Amount float64
Currency string
}
NetBid struct {
Amount float64
}
GrossBid struct {
Amount float64
}
DealID string `json:"dealId,omitempty"`
AdId string
CreativeWidth string
Expand Down Expand Up @@ -194,6 +200,7 @@ func (a *adapter) generateRequests(ortbRequest openrtb2.BidRequest) ([]*adapters
Message: fmt.Sprintf("ignoring imp id=%s, Adnuntius supports only Banner", imp.ID),
}}
}

var bidderExt adapters.ExtImpBidder
if err := json.Unmarshal(imp.Ext, &bidderExt); err != nil {
return nil, []error{&errortypes.BadInput{
Expand All @@ -204,7 +211,7 @@ func (a *adapter) generateRequests(ortbRequest openrtb2.BidRequest) ([]*adapters
var adnuntiusExt openrtb_ext.ImpExtAdnunitus
if err := json.Unmarshal(bidderExt.Bidder, &adnuntiusExt); err != nil {
return nil, []error{&errortypes.BadInput{
Message: fmt.Sprintf("Error unmarshalling ExtImpBmtm: %s", err.Error()),
Message: fmt.Sprintf("Error unmarshalling ExtImpValues: %s", err.Error()),
}}
}

Expand Down Expand Up @@ -328,7 +335,7 @@ func getGDPR(request *openrtb2.BidRequest) (string, string, error) {
return gdpr, consent, nil
}

func generateAdResponse(ad Ad, impId string, html string, request *openrtb2.BidRequest) (*openrtb2.Bid, []error) {
func generateAdResponse(ad Ad, imp openrtb2.Imp, html string, request *openrtb2.BidRequest) (*openrtb2.Bid, []error) {

creativeWidth, widthErr := strconv.ParseInt(ad.CreativeWidth, 10, 64)
if widthErr != nil {
Expand All @@ -344,6 +351,31 @@ func generateAdResponse(ad Ad, impId string, html string, request *openrtb2.BidR
}}
}

price := ad.Bid.Amount

var bidderExt adapters.ExtImpBidder
if err := json.Unmarshal(imp.Ext, &bidderExt); err != nil {
return nil, []error{&errortypes.BadInput{
Message: fmt.Sprintf("Error unmarshalling ExtImpBidder: %s", err.Error()),
}}
}

var adnuntiusExt openrtb_ext.ImpExtAdnunitus
if err := json.Unmarshal(bidderExt.Bidder, &adnuntiusExt); err != nil {
return nil, []error{&errortypes.BadInput{
Message: fmt.Sprintf("Error unmarshalling ExtImpValues: %s", err.Error()),
}}
}

if adnuntiusExt.BidType != "" {
if strings.EqualFold(string(adnuntiusExt.BidType), "net") {
price = ad.NetBid.Amount
}
if strings.EqualFold(string(adnuntiusExt.BidType), "gross") {
price = ad.GrossBid.Amount
}
}

adDomain := []string{}
for _, url := range ad.DestinationUrls {
domainArray := strings.Split(url, "/")
Expand All @@ -353,14 +385,14 @@ func generateAdResponse(ad Ad, impId string, html string, request *openrtb2.BidR

bid := openrtb2.Bid{
ID: ad.AdId,
ImpID: impId,
ImpID: imp.ID,
W: creativeWidth,
H: creativeHeight,
AdID: ad.AdId,
DealID: ad.DealID,
CID: ad.LineItemId,
CrID: ad.CreativeId,
Price: ad.Bid.Amount * 1000,
Price: price * 1000,
AdM: html,
ADomain: adDomain,
}
Expand All @@ -377,7 +409,7 @@ func generateBidResponse(adnResponse *AdnResponse, request *openrtb2.BidRequest)
adunitMap[adnRespAdunit.TargetId] = adnRespAdunit
}

for i, imp := range request.Imp {
for _, imp := range request.Imp {

auId, _, _, err := jsonparser.Get(imp.Ext, "bidder", "auId")
if err != nil {
Expand All @@ -394,7 +426,7 @@ func generateBidResponse(adnResponse *AdnResponse, request *openrtb2.BidRequest)
ad := adunit.Ads[0]
currency = ad.Bid.Currency

adBid, err := generateAdResponse(ad, request.Imp[i].ID, adunit.Html, request)
adBid, err := generateAdResponse(ad, imp, adunit.Html, request)
if err != nil {
return nil, []error{&errortypes.BadInput{
Message: fmt.Sprintf("Error at ad generation"),
Expand All @@ -407,7 +439,7 @@ func generateBidResponse(adnResponse *AdnResponse, request *openrtb2.BidRequest)
})

for _, deal := range adunit.Deals {
dealBid, err := generateAdResponse(deal, request.Imp[i].ID, deal.Html, request)
dealBid, err := generateAdResponse(deal, imp, deal.Html, request)
if err != nil {
return nil, []error{&errortypes.BadInput{
Message: fmt.Sprintf("Error at ad generation"),
Expand Down
103 changes: 103 additions & 0 deletions adapters/adnuntius/adnuntiustest/supplemental/check-gross-bids.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
{
"mockBidRequest": {
"id": "test-request-id",
"user": {
"id": "1kjh3429kjh295jkl"
},
"imp": [
{
"id": "test-imp-id",
"banner": {
"format": [
{
"w": 300,
"h": 250
},
{
"w": 300,
"h": 600
}
]
},
"ext": {
"bidder": {
"auId": "123",
"bidType": "gross"
}
}
}
]
},
"httpCalls": [
{
"expectedRequest": {
"uri": "http://whatever.url?format=json&tzo=0",
"body": {
"adUnits": [
{
"auId": "123",
"targetId": "123-test-imp-id",
"dimensions": [[300,250],[300,600]]
}
],
"metaData": {
"usi": "1kjh3429kjh295jkl"
},
"context": "unknown"
}
},
"mockResponse": {
"status": 200,
"body": {
"adUnits": [
{
"auId": "0000000000000123",
"targetId": "123-test-imp-id",
"html": "<ADCODE>",
"responseId": "adn-rsp-900646517",
"ads": [
{
"destinationUrls": {
"url": "http://www.google.com"
},
"bid": { "amount": 20.0, "currency": "NOK" },
"grossBid": {"amount": 0.1, "currency": "NOK"},
"netBid": {"amount": 0.075, "currency": "NOK"},
"adId": "adn-id-1559784094",
"creativeWidth": "980",
"creativeHeight": "240",
"creativeId": "jn9hpzvlsf8cpdmm",
"lineItemId": "q7y9qm5b0xt9htrv"
}
]
}
]
}
}
}
],
"expectedBidResponses": [
{
"bids": [
{
"bid": {
"id": "adn-id-1559784094",
"impid": "test-imp-id",
"price": 100,
"adm": "<ADCODE>",
"adid": "adn-id-1559784094",
"adomain": [
"google.com"
],
"cid": "q7y9qm5b0xt9htrv",
"crid": "jn9hpzvlsf8cpdmm",
"w": 980,
"h": 240
},
"type": "banner"
}
],
"currency": "NOK"
}
]
}
103 changes: 103 additions & 0 deletions adapters/adnuntius/adnuntiustest/supplemental/check-net-bids.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
{
"mockBidRequest": {
"id": "test-request-id",
"user": {
"id": "1kjh3429kjh295jkl"
},
"imp": [
{
"id": "test-imp-id",
"banner": {
"format": [
{
"w": 300,
"h": 250
},
{
"w": 300,
"h": 600
}
]
},
"ext": {
"bidder": {
"auId": "123",
"bidType": "net"
}
}
}
]
},
"httpCalls": [
{
"expectedRequest": {
"uri": "http://whatever.url?format=json&tzo=0",
"body": {
"adUnits": [
{
"auId": "123",
"targetId": "123-test-imp-id",
"dimensions": [[300,250],[300,600]]
}
],
"metaData": {
"usi": "1kjh3429kjh295jkl"
},
"context": "unknown"
}
},
"mockResponse": {
"status": 200,
"body": {
"adUnits": [
{
"auId": "0000000000000123",
"targetId": "123-test-imp-id",
"html": "<ADCODE>",
"responseId": "adn-rsp-900646517",
"ads": [
{
"destinationUrls": {
"url": "http://www.google.com"
},
"bid": { "amount": 20.0, "currency": "NOK" },
"grossBid": {"amount": 0.1, "currency": "NOK"},
"netBid": {"amount": 0.075, "currency": "NOK"},
"adId": "adn-id-1559784094",
"creativeWidth": "980",
"creativeHeight": "240",
"creativeId": "jn9hpzvlsf8cpdmm",
"lineItemId": "q7y9qm5b0xt9htrv"
}
]
}
]
}
}
}
],
"expectedBidResponses": [
{
"bids": [
{
"bid": {
"id": "adn-id-1559784094",
"impid": "test-imp-id",
"price": 75,
"adm": "<ADCODE>",
"adid": "adn-id-1559784094",
"adomain": [
"google.com"
],
"cid": "q7y9qm5b0xt9htrv",
"crid": "jn9hpzvlsf8cpdmm",
"w": 980,
"h": 240
},
"type": "banner"
}
],
"currency": "NOK"
}
]
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
{
"mockBidRequest": {
"id": "test-request-id",
"user": {
"id": "1kjh3429kjh295jkl"
},
"imp": [
{
"id": "test-imp-id",
"banner": {
"format": [
{
"w": 300,
"h": 250
},
{
"w": 300,
"h": 600
}
]
},
"ext": {
"bidder": {
"auId": "123",
"bidType": 123
}
}
}
]
},
"httpCalls": [],
"expectedMakeRequestsErrors": [
{
"value": "Error unmarshalling ExtImpValues: json: cannot unmarshal number into Go struct field ImpExtAdnunitus.bidType of type string",
"comparison": "literal"
}
]
}
1 change: 1 addition & 0 deletions openrtb_ext/imp_adnuntius.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,5 @@ type ImpExtAdnunitus struct {
Network string `json:"network"`
NoCookies bool `json:"noCookies"`
MaxDeals int `json:"maxDeals"`
BidType string `json:"bidType,omitempty"`
}
8 changes: 8 additions & 0 deletions static/bidder-params/adnuntius.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,21 @@
"type": "string",
"description": "Placement ID"
},
"maxDeals": {
"type": "integer",
"description": "Specify how many deals that you want to return from the auction."
},
"network": {
"type": "string",
"description": "Network if required"
},
"noCookies": {
"type": "boolean",
"description": "Disable cookies being set by the ad server."
},
"bidType": {
"type": "string",
"description": "Allows you to specify Net or Gross bids."
}
},

Expand Down

0 comments on commit 4ad946b

Please sign in to comment.