github.com/prebid/prebid-server@v0.275.0/hooks/hookstage/bidderrequest_mutations.go (about) 1 package hookstage 2 3 import ( 4 "errors" 5 6 "github.com/prebid/openrtb/v19/adcom1" 7 "github.com/prebid/openrtb/v19/openrtb2" 8 ) 9 10 func (c *ChangeSet[T]) BidderRequest() ChangeSetBidderRequest[T] { 11 return ChangeSetBidderRequest[T]{changeSet: c} 12 } 13 14 type ChangeSetBidderRequest[T any] struct { 15 changeSet *ChangeSet[T] 16 } 17 18 func (c ChangeSetBidderRequest[T]) BAdv() ChangeSetBAdv[T] { 19 return ChangeSetBAdv[T]{changeSetBidderRequest: c} 20 } 21 22 func (c ChangeSetBidderRequest[T]) BCat() ChangeSetBCat[T] { 23 return ChangeSetBCat[T]{changeSetBidderRequest: c} 24 } 25 26 func (c ChangeSetBidderRequest[T]) CatTax() ChangeSetCatTax[T] { 27 return ChangeSetCatTax[T]{changeSetBidderRequest: c} 28 } 29 30 func (c ChangeSetBidderRequest[T]) BApp() ChangeSetBApp[T] { 31 return ChangeSetBApp[T]{changeSetBidderRequest: c} 32 } 33 34 func (c ChangeSetBidderRequest[T]) castPayload(p T) (*openrtb2.BidRequest, error) { 35 if payload, ok := any(p).(BidderRequestPayload); ok { 36 if payload.BidRequest == nil { 37 return nil, errors.New("empty BidRequest provided") 38 } 39 return payload.BidRequest, nil 40 } 41 return nil, errors.New("failed to cast BidderRequestPayload") 42 } 43 44 type ChangeSetBAdv[T any] struct { 45 changeSetBidderRequest ChangeSetBidderRequest[T] 46 } 47 48 func (c ChangeSetBAdv[T]) Update(badv []string) { 49 c.changeSetBidderRequest.changeSet.AddMutation(func(p T) (T, error) { 50 bidRequest, err := c.changeSetBidderRequest.castPayload(p) 51 if err == nil { 52 bidRequest.BAdv = badv 53 } 54 return p, err 55 }, MutationUpdate, "bidrequest", "badv") 56 } 57 58 type ChangeSetBCat[T any] struct { 59 changeSetBidderRequest ChangeSetBidderRequest[T] 60 } 61 62 func (c ChangeSetBCat[T]) Update(bcat []string) { 63 c.changeSetBidderRequest.changeSet.AddMutation(func(p T) (T, error) { 64 bidRequest, err := c.changeSetBidderRequest.castPayload(p) 65 if err == nil { 66 bidRequest.BCat = bcat 67 } 68 return p, err 69 }, MutationUpdate, "bidrequest", "bcat") 70 } 71 72 type ChangeSetCatTax[T any] struct { 73 changeSetBidderRequest ChangeSetBidderRequest[T] 74 } 75 76 func (c ChangeSetCatTax[T]) Update(cattax adcom1.CategoryTaxonomy) { 77 c.changeSetBidderRequest.changeSet.AddMutation(func(p T) (T, error) { 78 bidRequest, err := c.changeSetBidderRequest.castPayload(p) 79 if err == nil { 80 bidRequest.CatTax = cattax 81 } 82 return p, err 83 }, MutationUpdate, "bidrequest", "cattax") 84 } 85 86 type ChangeSetBApp[T any] struct { 87 changeSetBidderRequest ChangeSetBidderRequest[T] 88 } 89 90 func (c ChangeSetBApp[T]) Update(bapp []string) { 91 c.changeSetBidderRequest.changeSet.AddMutation(func(p T) (T, error) { 92 bidRequest, err := c.changeSetBidderRequest.castPayload(p) 93 if err == nil { 94 bidRequest.BApp = bapp 95 } 96 return p, err 97 }, MutationUpdate, "bidrequest", "bapp") 98 }