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  }