Skip to content

Commit

Permalink
FPD for amp endpoint (#2672)
Browse files Browse the repository at this point in the history
  • Loading branch information
VeronikaSolovei9 authored Apr 10, 2023
1 parent 8da6f69 commit 0087620
Show file tree
Hide file tree
Showing 4 changed files with 156 additions and 10 deletions.
16 changes: 11 additions & 5 deletions endpoints/openrtb2/amp_auction.go
Original file line number Diff line number Diff line change
Expand Up @@ -590,15 +590,16 @@ func (deps *endpointDeps) overrideWithParams(ampParams amp.Params, req *openrtb2
req.TMax = int64(*ampParams.Timeout) - deps.cfg.AMPTimeoutAdjustment
}

if err := setTargeting(req, ampParams.Targeting); err != nil {
return []error{err}
var errors []error
if warn := setTargeting(req, ampParams.Targeting); warn != nil {
errors = append(errors, warn)
}

if err := setTrace(req, ampParams.Trace); err != nil {
return []error{err}
return append(errors, err)
}

return nil
return errors
}

// setConsentedProviders sets the addtl_consent value to user.ext.ConsentedProvidersSettings.consented_providers
Expand Down Expand Up @@ -652,7 +653,12 @@ func setTargeting(req *openrtb2.BidRequest, targeting string) error {
if len(req.Imp[0].Ext) > 0 {
newImpExt, err := jsonpatch.MergePatch(req.Imp[0].Ext, targetingData)
if err != nil {
return fmt.Errorf("unable to merge imp.ext with targeting data, check targeting data is correct: %s", err.Error())
warn := errortypes.Warning{
WarningCode: errortypes.BadInputErrorCode,
Message: fmt.Sprintf("unable to merge imp.ext with targeting data, check targeting data is correct: %s", err.Error()),
}

return &warn
}
req.Imp[0].Ext = newImpExt
return nil
Expand Down
13 changes: 9 additions & 4 deletions endpoints/openrtb2/amp_auction_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ import (
"github.com/prebid/prebid-server/analytics"
analyticsConf "github.com/prebid/prebid-server/analytics/config"
"github.com/prebid/prebid-server/config"
"github.com/prebid/prebid-server/errortypes"
"github.com/prebid/prebid-server/exchange"
"github.com/prebid/prebid-server/hooks"
"github.com/prebid/prebid-server/hooks/hookexecution"
Expand Down Expand Up @@ -398,8 +399,9 @@ func TestOverrideWithParams(t *testing.T) {
bidRequest *openrtb2.BidRequest
}
type testOutput struct {
bidRequest *openrtb2.BidRequest
errorMsgs []string
bidRequest *openrtb2.BidRequest
errorMsgs []string
expectFatalErrors bool
}
testCases := []struct {
desc string
Expand Down Expand Up @@ -520,7 +522,8 @@ func TestOverrideWithParams(t *testing.T) {
Site: &openrtb2.Site{Ext: json.RawMessage(`{"amp":1}`)},
User: &openrtb2.User{Ext: json.RawMessage(`malformed`)},
},
errorMsgs: []string{"invalid character 'm' looking for beginning of value"},
errorMsgs: []string{"invalid character 'm' looking for beginning of value"},
expectFatalErrors: true,
},
},
{
Expand Down Expand Up @@ -567,7 +570,8 @@ func TestOverrideWithParams(t *testing.T) {
User: &openrtb2.User{Ext: json.RawMessage(`{"prebid":{malformed}}`)},
Site: &openrtb2.Site{Ext: json.RawMessage(`{"amp":1}`)},
},
errorMsgs: []string{"invalid character 'm' looking for beginning of object key string"},
errorMsgs: []string{"invalid character 'm' looking for beginning of object key string"},
expectFatalErrors: true,
},
},
}
Expand All @@ -579,6 +583,7 @@ func TestOverrideWithParams(t *testing.T) {
assert.Len(t, errs, len(test.expected.errorMsgs), test.desc)
if len(test.expected.errorMsgs) > 0 {
assert.Equal(t, test.expected.errorMsgs[0], errs[0].Error(), test.desc)
assert.Equal(t, test.expected.expectFatalErrors, errortypes.ContainsFatalError(errs), test.desc)
}
}
}
Expand Down
4 changes: 3 additions & 1 deletion exchange/exchange.go
Original file line number Diff line number Diff line change
Expand Up @@ -262,7 +262,9 @@ func (e *exchange) HoldAuction(ctx context.Context, r AuctionRequest, debugLog *
}
e.me.RecordDebugRequest(responseDebugAllow || accountDebugAllow, r.PubID)

if r.RequestType == metrics.ReqTypeORTB2Web || r.RequestType == metrics.ReqTypeORTB2App {
if r.RequestType == metrics.ReqTypeORTB2Web ||
r.RequestType == metrics.ReqTypeORTB2App ||
r.RequestType == metrics.ReqTypeAMP {
//Extract First party data for auction endpoint only
resolvedFPD, fpdErrors := firstpartydata.ExtractFPDForBidders(r.BidRequestWrapper)
if len(fpdErrors) > 0 {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,133 @@
{
"requestType": "amp",
"incomingRequest": {
"ortbRequest": {
"id": "some-request-id",
"site": {
"page": "test.somepage.com"
},
"imp": [
{
"id": "some-imp-id",
"banner": {
"format": [
{
"w": 600,
"h": 500
},
{
"w": 300,
"h": 600
}
]
},
"ext": {
"prebid": {
"bidder": {
"appnexus": {
"placementId": 1
}
}
},
"data": {
"keywords": "prebid server example"
},
"context": {
"data": {
"keywords": "another prebid server example"
}
}
}
}
]
}
},
"outgoingRequests": {
"appnexus": {
"expectRequest": {
"ortbRequest": {
"id": "some-request-id",
"site": {
"page": "test.somepage.com"
},
"imp": [
{
"id": "some-imp-id",
"banner": {
"format": [
{
"w": 600,
"h": 500
},
{
"w": 300,
"h": 600
}
]
},
"ext": {
"bidder": {
"placementId": 1
},
"data": {
"keywords": "prebid server example"
},
"context": {
"data": {
"keywords": "another prebid server example"
}
}
}
}
]
}
},
"mockResponse": {
"pbsSeatBids": [
{
"pbsBids": [
{
"ortbBid": {
"id": "apn-bid",
"impid": "some-imp-id",
"price": 0.3,
"w": 200,
"h": 500,
"crid": "creative-1"
},
"bidType": "banner"
}
],
"seat": "appnexus"
}
]
}
}
},
"response": {
"bids": {
"id": "some-request-id",
"seatbid": [
{
"seat": "appnexus",
"bid": [
{
"id": "apn-bid",
"impid": "some-imp-id",
"price": 0.3,
"w": 200,
"h": 500,
"crid": "creative-1",
"ext": {
"origbidcpm": 0.3,
"prebid": {
"type": "banner"
}
}
}
]
}
]
}
}
}

0 comments on commit 0087620

Please sign in to comment.