Documentation
¶
Index ¶
Constants ¶
const ( USERSYNC_OPT_OUT = "usersync.opt_outs" USERSYNC_BAD_REQUEST = "usersync.bad_requests" USERSYNC_SUCCESS = "usersync.%s.sets" )
const MAX_BIDDERS = 8
const RECAPTCHA_URL = "https://www.google.com/recaptcha/api/siteverify"
Recaptcha code from https://github.com/haisum/recaptcha/blob/master/recaptcha.go
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type BidderDebug ¶
type Bids ¶
type Bids struct {
BidderCode string `json:"bidder"`
BidID string `json:"bid_id"`
Params json.RawMessage `json:"params"`
}
type ConfigCache ¶
type PBSBid ¶
type PBSBid struct {
// BidID identifies the Bid Request within the Ad Unit which this Bid targets. It should match one of
// the values inside PBSRequest.AdUnits[i].Bids[j].BidID.
BidID string `json:"bid_id"`
// AdUnitCode identifies the AdUnit which this Bid targets.
// It should match one of PBSRequest.AdUnits[i].Code, where "i" matches the AdUnit used in
// as BidID.
AdUnitCode string `json:"code"`
// Creative_id uniquely identifies the creative being served. It is not used by prebid-server, but
// it helps publishers and bidders identify and communicate about malicious or inappropriate ads.
// This project simply passes it along with the bid.
Creative_id string `json:"creative_id,omitempty"`
// CreativeMediaType shows whether the creative is a video or banner.
CreativeMediaType string `json:"media_type,omitempty"`
// BidderCode is the PBSBidder.BidderCode of the PBSBidder who made this bid.
BidderCode string `json:"bidder"`
// BidHash is the hash of the bidder's unique bid identifier for blockchain. It should not be sent to browser.
BidHash string `json:"-"`
// Price is the cpm, in US Dollars, which the bidder is willing to pay if this bid is chosen.
// TODO: Add support for other currencies someday.
Price float64 `json:"price"`
// NURL is a URL which returns ad markup, and should be called if the bid wins.
// If NURL and Adm are both defined, then Adm takes precedence.
NURL string `json:"nurl,omitempty"`
// Adm is the ad markup which should be used to deliver the ad, if this bid is chosen.
// If NURL and Adm are both defined, then Adm takes precedence.
Adm string `json:"adm,omitempty"`
// Width is the intended width which Adm should be shown, in pixels.
Width int64 `json:"width,omitempty"`
// Height is the intended width which Adm should be shown, in pixels.
Height int64 `json:"height,omitempty"`
// DealId is not used by prebid-server, but may be used by buyers and sellers who make special
// deals with each other. We simply pass this information along with the bid.
DealId string `json:"deal_id,omitempty"`
// CacheId is an ID in prebid-cache which can be used to fetch this ad's content.
// This supports prebid-mobile, which requires that the content be available from a URL.
CacheID string `json:"cache_id,omitempty"`
// Complete cache url returned from the prebid-cache.
// more flexible than a design that assumes the UUID is always appended to the end of the URL.
CacheURL string `json:"cache_url,omitempty"`
// ResponseTime is the number of milliseconds it took for the adapter to return a bid.
ResponseTime int `json:"response_time_ms,omitempty"`
AdServerTargeting map[string]string `json:"ad_server_targeting,omitempty"`
}
PBSBid is a bid from the auction. These are produced by Adapters, and target a particular Ad Unit.
This JSON format is a contract with both Prebid.js and Prebid-mobile. All changes *must* be backwards compatible, since clients cannot be forced to update their code.
type PBSBidSlice ¶
type PBSBidSlice []*PBSBid
PBSBidSlice attaches the methods of sort.Interface to []PBSBid, ordering them by price. If two prices are equal, then the response time will be used as a tiebreaker. For more information, see https://golang.org/pkg/sort/#Interface
func (PBSBidSlice) Len ¶
func (bids PBSBidSlice) Len() int
func (PBSBidSlice) Less ¶
func (bids PBSBidSlice) Less(i, j int) bool
func (PBSBidSlice) Swap ¶
func (bids PBSBidSlice) Swap(i, j int)
type PBSBidder ¶
type PBSBidder struct {
BidderCode string `json:"bidder"`
AdUnitCode string `json:"ad_unit,omitempty"` // for index to dedup responses
ResponseTime int `json:"response_time_ms,omitempty"`
NumBids int `json:"num_bids,omitempty"`
Error string `json:"error,omitempty"`
NoCookie bool `json:"no_cookie,omitempty"`
NoBid bool `json:"no_bid,omitempty"`
UsersyncInfo *UsersyncInfo `json:"usersync,omitempty"`
Debug []*BidderDebug `json:"debug,omitempty"`
AdUnits []PBSAdUnit `json:"-"`
}
func (*PBSBidder) LookupAdUnit ¶
func (*PBSBidder) LookupBidID ¶
type PBSRequest ¶
type PBSRequest struct {
AccountID string `json:"account_id"`
Tid string `json:"tid"`
CacheMarkup int8 `json:"cache_markup"`
SortBids int8 `json:"sort_bids"`
MaxKeyLength int8 `json:"max_key_length"`
Secure int8 `json:"secure"`
TimeoutMillis int64 `json:"timeout_millis"`
AdUnits []AdUnit `json:"ad_units"`
IsDebug bool `json:"is_debug"`
App *openrtb2.App `json:"app"`
Device *openrtb2.Device `json:"device"`
PBSUser json.RawMessage `json:"user"`
SDK *SDK `json:"sdk"`
// internal
Bidders []*PBSBidder `json:"-"`
User *openrtb2.User `json:"-"`
Cookie *usersync.Cookie `json:"-"`
Url string `json:"-"`
Domain string `json:"-"`
Regs *openrtb2.Regs `json:"-"`
Start time.Time
}
func ParsePBSRequest ¶
func ParsePBSRequest(r *http.Request, cfg *config.AuctionTimeouts, cache cache.Cache, hostCookieConfig *config.HostCookie) (*PBSRequest, error)
func (PBSRequest) Elapsed ¶
func (req PBSRequest) Elapsed() int
func (*PBSRequest) ParseConsent ¶
func (req *PBSRequest) ParseConsent() string
parses the "User.ext.consent" from the request, if it exists. Otherwise returns an empty string.
func (*PBSRequest) ParseGDPR ¶
func (req *PBSRequest) ParseGDPR() string
parses the "Regs.ext.gdpr" from the request, if it exists. Otherwise returns an empty string.
func (PBSRequest) String ¶
func (p PBSRequest) String() string
type PBSResponse ¶
type PBSResponse struct {
TID string `json:"tid,omitempty"`
Status string `json:"status,omitempty"`
BidderStatus []*PBSBidder `json:"bidder_status,omitempty"`
Bids PBSBidSlice `json:"bids,omitempty"`
BUrl string `json:"burl,omitempty"`
}
type PBSVideo ¶
type PBSVideo struct {
//Content MIME types supported. Popular MIME types may include “video/x-ms-wmv” for Windows Media and “video/x-flv” for Flash Video.
Mimes []string `json:"mimes,omitempty"`
//Minimum video ad duration in seconds.
Minduration int64 `json:"minduration,omitempty"`
// Maximum video ad duration in seconds.
Maxduration int64 `json:"maxduration,omitempty"`
//Indicates the start delay in seconds for pre-roll, mid-roll, or post-roll ad placements.
Startdelay int64 `json:"startdelay,omitempty"`
// Indicates if the player will allow the video to be skipped ( 0 = no, 1 = yes).
Skippable int `json:"skippable,omitempty"`
// Playback method code Description
// 1 - Initiates on Page Load with Sound On
// 2 - Initiates on Page Load with Sound Off by Default
// 3 - Initiates on Click with Sound On
// 4 - Initiates on Mouse-Over with Sound On
// 5 - Initiates on Entering Viewport with Sound On
// 6 - Initiates on Entering Viewport with Sound Off by Default
PlaybackMethod int8 `json:"playback_method,omitempty"`
//protocols as specified in ORTB 5.8
// 1 VAST 1.0
// 2 VAST 2.0
// 3 VAST 3.0
// 4 VAST 1.0 Wrapper
// 5 VAST 2.0 Wrapper
// 6 VAST 3.0 Wrapper
// 7 VAST 4.0
// 8 VAST 4.0 Wrapper
// 9 DAAST 1.0
// 10 DAAST 1.0 Wrapper
Protocols []int8 `json:"protocols,omitempty"`
}
Structure for holding video-specific information
type UserSyncDeps ¶
type UserSyncDeps struct {
ExternalUrl string
RecaptchaSecret string
HostCookieConfig *config.HostCookie
MetricsEngine metrics.MetricsEngine
PBSAnalytics analytics.PBSAnalyticsModule
}
func (*UserSyncDeps) OptOut ¶
func (deps *UserSyncDeps) OptOut(w http.ResponseWriter, r *http.Request, _ httprouter.Params)
func (*UserSyncDeps) VerifyRecaptcha ¶
func (deps *UserSyncDeps) VerifyRecaptcha(response string) error