adapters

package
v1.200.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 11, 2022 License: Apache-2.0 Imports: 11 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ExtractReqExtBidderParamsEmbeddedMap

func ExtractReqExtBidderParamsEmbeddedMap(bidRequest *openrtb2.BidRequest) (map[string]map[string]json.RawMessage, error)

func ExtractReqExtBidderParamsMap

func ExtractReqExtBidderParamsMap(bidRequest *openrtb2.BidRequest) (map[string]json.RawMessage, error)

Types

type BidRequestParams

type BidRequestParams struct {
	ImpIndex     int
	VASTTagIndex int
}

type Bidder

type Bidder interface {
	// MakeRequests makes the HTTP requests which should be made to fetch bids.
	//
	// Bidder implementations can assume that the incoming BidRequest has:
	//
	//   1. Only {Imp.Type, Platform} combinations which are valid, as defined by the static/bidder-info.{bidder}.yaml file.
	//   2. Imp.Ext of the form {"bidder": params}, where "params" has been validated against the static/bidder-params/{bidder}.json JSON Schema.
	//
	// nil return values are acceptable, but nil elements *inside* those slices are not.
	//
	// The errors should contain a list of errors which explain why this bidder's bids will be
	// "subpar" in some way. For example: the request contained ad types which this bidder doesn't support.
	//
	// If the error is caused by bad user input, return an errortypes.BadInput.
	MakeRequests(request *openrtb2.BidRequest, reqInfo *ExtraRequestInfo) ([]*RequestData, []error)

	// MakeBids unpacks the server's response into Bids.
	//
	// The bids can be nil (for no bids), but should not contain nil elements.
	//
	// The errors should contain a list of errors which explain why this bidder's bids will be
	// "subpar" in some way. For example: the server response didn't have the expected format.
	//
	// If the error was caused by bad user input, return a errortypes.BadInput.
	// If the error was caused by a bad server response, return a errortypes.BadServerResponse
	MakeBids(internalRequest *openrtb2.BidRequest, externalRequest *RequestData, response *ResponseData) (*BidderResponse, []error)
}

Bidder describes how to connect to external demand.

func BuildInfoAwareBidder

func BuildInfoAwareBidder(bidder Bidder, info config.BidderInfo) Bidder

BuildInfoAwareBidder wraps a bidder to enforce site, app, and media type support.

type BidderResponse

type BidderResponse struct {
	Currency string
	Bids     []*TypedBid
}

BidderResponse wraps the server's response with the list of bids and the currency used by the bidder.

Currency declaration is not mandatory but helps to detect an eventual currency mismatch issue. From the bid response, the bidder accepts a list of valid currencies for the bid. The currency is the same across all bids.

func NewBidderResponse

func NewBidderResponse() *BidderResponse

NewBidderResponse create a new BidderResponse initialising the bids array and the default currency value to "USD".

By default, Bids capacity will be set to 0. By default, currency is USD but this behavior might be subject to change.

func NewBidderResponseWithBidsCapacity

func NewBidderResponseWithBidsCapacity(bidsCapacity int) *BidderResponse

NewBidderResponseWithBidsCapacity create a new BidderResponse initialising the bids array capacity and the default currency value to "USD".

bidsCapacity allows to set initial Bids array capacity. By default, currency is USD but this behavior might be subject to change.

type Builder

type Builder func(openrtb_ext.BidderName, config.Adapter) (Bidder, error)

type ExtImpBidder

type ExtImpBidder struct {
	Prebid *openrtb_ext.ExtImpPrebid `json:"prebid"`

	// Bidder contain the bidder-specific extension. Each bidder should unmarshal this using their
	// corresponding openrtb_ext.ExtImp{Bidder} struct.
	//
	// For example, the Appnexus Bidder should unmarshal this with an openrtb_ext.ExtImpAppnexus object.
	//
	// Bidder implementations may safely assume that this JSON has been validated by their
	// static/bidder-params/{bidder}.json file.
	Bidder json.RawMessage `json:"bidder"`
}

ExtImpBidder can be used by Bidders to unmarshal any request.imp[i].ext.

type ExtraRequestInfo

type ExtraRequestInfo struct {
	PbsEntryPoint              metrics.RequestType
	GlobalPrivacyControlHeader string
	CurrencyConversions        currency.Conversions
}

func NewExtraRequestInfo

func NewExtraRequestInfo(c currency.Conversions) ExtraRequestInfo

func (ExtraRequestInfo) ConvertCurrency

func (r ExtraRequestInfo) ConvertCurrency(value float64, from, to string) (float64, error)

ConvertCurrency converts a given amount from one currency to another, or returns:

  • Error if the `from` or `to` arguments are malformed or unknown ISO-4217 codes.
  • ConversionNotFoundError if the conversion mapping is unknown to Prebid Server and not provided in the bid request.

type InfoAwareBidder

type InfoAwareBidder struct {
	Bidder
	// contains filtered or unexported fields
}

InfoAwareBidder wraps a Bidder to ensure all requests abide by the capabilities and media types defined in the static/bidder-info/{bidder}.yaml file.

It adjusts incoming requests in the following ways:

  1. If App or Site traffic is not supported by the info file, then requests from those sources will be rejected before the delegate is called.
  2. If a given MediaType is not supported for the platform, then it will be set to nil before the request is forwarded to the delegate.
  3. Any Imps which have no MediaTypes left will be removed.
  4. If there are no valid Imps left, the delegate won't be called at all.

func (*InfoAwareBidder) MakeRequests

func (i *InfoAwareBidder) MakeRequests(request *openrtb2.BidRequest, reqInfo *ExtraRequestInfo) ([]*RequestData, []error)

type RequestData

type RequestData struct {
	Params  *BidRequestParams
	Method  string
	Uri     string
	Body    []byte
	Headers http.Header

	BidderName openrtb_ext.BidderName `json:"-"`
}

RequestData packages together the fields needed to make an http.Request.

func (*RequestData) SetBasicAuth

func (r *RequestData) SetBasicAuth(username string, password string)

type ResponseData

type ResponseData struct {
	StatusCode int
	Body       []byte
	Headers    http.Header
}

ResponseData packages together information from the server's http.Response.

type TimeoutBidder

type TimeoutBidder interface {
	Bidder

	// MakeTimeoutNotice functions much the same as MakeRequests, except it is fed the bidder request that timed out,
	// and expects that only one notification "request" will be generated. A use case for multiple timeout notifications
	// has not been anticipated.
	//
	// Do note that if MakeRequests returns multiple requests, and more than one of these times out, MakeTimeoutNotice will be called
	// once for each timed out request.
	MakeTimeoutNotification(req *RequestData) (*RequestData, []error)
}

TimeoutBidder is used to identify bidders that support timeout notifications.

type TypedBid

type TypedBid struct {
	Bid          *openrtb2.Bid
	BidMeta      *openrtb_ext.ExtBidPrebidMeta
	BidType      openrtb_ext.BidType
	BidVideo     *openrtb_ext.ExtBidPrebidVideo
	BidTargets   map[string]string
	DealPriority int
	Seat         openrtb_ext.BidderName
}

TypedBid packages the openrtb2.Bid with any bidder-specific information that PBS needs to populate an openrtb_ext.ExtBidPrebid.

TypedBid.Bid.Ext will become "response.seatbid[i].bid.ext.bidder" in the final OpenRTB response. TypedBid.BidMeta will become "response.seatbid[i].bid.ext.prebid.meta" in the final OpenRTB response. TypedBid.BidType will become "response.seatbid[i].bid.ext.prebid.type" in the final OpenRTB response. TypedBid.BidVideo will become "response.seatbid[i].bid.ext.prebid.video" in the final OpenRTB response. TypedBid.DealPriority is optionally provided by adapters and used internally by the exchange to support deal targeted campaigns. TypedBid.Seat new seat under which the bid should pe placed. Default is adapter name

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL