Skip to content

Commit

Permalink
Removed support for Adpod in request.Ext
Browse files Browse the repository at this point in the history
  • Loading branch information
Pubmatic-Dhruv-Sonone committed Sep 16, 2024
1 parent eea2dd8 commit 6493ba9
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 40 deletions.
6 changes: 3 additions & 3 deletions modules/pubmatic/openwrap/adpod/adpod.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,8 @@ func setDefaultValues(adpodConfig *models.AdPod) {

}

func GetV25AdpodConfigs(impVideo *openrtb2.Video, requestExtConfigs *models.ExtRequestAdPod, adUnitConfig *adunitconfig.AdConfig, partnerConfigMap map[int]map[string]string, pubId string, me metrics.MetricsEngine) (*models.AdPod, error) {
adpodConfigs, ok, err := resolveV25AdpodConfigs(impVideo, requestExtConfigs, adUnitConfig, pubId, me)
func GetV25AdpodConfigs(impVideo *openrtb2.Video, adUnitConfig *adunitconfig.AdConfig, partnerConfigMap map[int]map[string]string, pubId string, me metrics.MetricsEngine) (*models.AdPod, error) {
adpodConfigs, ok, err := resolveV25AdpodConfigs(impVideo, adUnitConfig, pubId, me)
if !ok || err != nil {
return nil, err
}
Expand All @@ -47,7 +47,7 @@ func GetV25AdpodConfigs(impVideo *openrtb2.Video, requestExtConfigs *models.ExtR
return adpodConfigs, nil
}

func resolveV25AdpodConfigs(impVideo *openrtb2.Video, requestExtConfigs *models.ExtRequestAdPod, adUnitConfig *adunitconfig.AdConfig, pubId string, me metrics.MetricsEngine) (*models.AdPod, bool, error) {
func resolveV25AdpodConfigs(impVideo *openrtb2.Video, adUnitConfig *adunitconfig.AdConfig, pubId string, me metrics.MetricsEngine) (*models.AdPod, bool, error) {
var adpodConfig *models.AdPod

// Check in impression extension
Expand Down
73 changes: 36 additions & 37 deletions modules/pubmatic/openwrap/beforevalidationhook.go
Original file line number Diff line number Diff line change
Expand Up @@ -142,40 +142,47 @@ func (m OpenWrap) handleBeforeValidationHook(
return result, err
}

if rCtx.IsCTVRequest && rCtx.Endpoint == models.EndpointJson {
if len(rCtx.ResponseFormat) > 0 {
if rCtx.ResponseFormat != models.ResponseFormatJSON && rCtx.ResponseFormat != models.ResponseFormatRedirect {
result.NbrCode = int(nbr.InvalidResponseFormat)
result.Errors = append(result.Errors, "Invalid response format, must be 'json' or 'redirect'")
return result, nil
if rCtx.IsCTVRequest {
if rCtx.Endpoint == models.EndpointJson {
if len(rCtx.ResponseFormat) > 0 {
if rCtx.ResponseFormat != models.ResponseFormatJSON && rCtx.ResponseFormat != models.ResponseFormatRedirect {
result.NbrCode = int(nbr.InvalidResponseFormat)
result.Errors = append(result.Errors, "Invalid response format, must be 'json' or 'redirect'")
return result, nil
}
}
}

if len(rCtx.RedirectURL) == 0 {
rCtx.RedirectURL = models.GetVersionLevelPropertyFromPartnerConfig(partnerConfigMap, models.OwRedirectURL)
}
if len(rCtx.RedirectURL) == 0 {
rCtx.RedirectURL = models.GetVersionLevelPropertyFromPartnerConfig(partnerConfigMap, models.OwRedirectURL)
}

if len(rCtx.RedirectURL) > 0 {
rCtx.RedirectURL = strings.TrimSpace(rCtx.RedirectURL)
if rCtx.ResponseFormat == models.ResponseFormatRedirect && !isValidURL(rCtx.RedirectURL) {
result.NbrCode = int(nbr.InvalidRedirectURL)
result.Errors = append(result.Errors, "Invalid redirect URL")
return result, nil
if len(rCtx.RedirectURL) > 0 {
rCtx.RedirectURL = strings.TrimSpace(rCtx.RedirectURL)
if rCtx.ResponseFormat == models.ResponseFormatRedirect && !isValidURL(rCtx.RedirectURL) {
result.NbrCode = int(nbr.InvalidRedirectURL)
result.Errors = append(result.Errors, "Invalid redirect URL")
return result, nil
}
}
}

if rCtx.ResponseFormat == models.ResponseFormatRedirect && len(rCtx.RedirectURL) == 0 {
result.NbrCode = int(nbr.MissingOWRedirectURL)
result.Errors = append(result.Errors, "owRedirectURL is missing")
return result, nil
if rCtx.ResponseFormat == models.ResponseFormatRedirect && len(rCtx.RedirectURL) == 0 {
result.NbrCode = int(nbr.MissingOWRedirectURL)
result.Errors = append(result.Errors, "owRedirectURL is missing")
return result, nil
}
}
}

videoAdDuration := models.GetVersionLevelPropertyFromPartnerConfig(partnerConfigMap, models.VideoAdDurationKey)
if len(videoAdDuration) > 0 {
rCtx.AdpodProfileConfig = &models.AdpodProfileConfig{
AdserverCreativeDurations: utils.GetIntArrayFromString(videoAdDuration, models.ArraySeparator),
AdserverCreativeDurationMatchingPolicy: models.GetVersionLevelPropertyFromPartnerConfig(partnerConfigMap, models.VideoAdDurationMatchingKey),
videoAdDuration := models.GetVersionLevelPropertyFromPartnerConfig(partnerConfigMap, models.VideoAdDurationKey)
if len(videoAdDuration) > 0 {
rCtx.AdpodProfileConfig = &models.AdpodProfileConfig{
AdserverCreativeDurations: utils.GetIntArrayFromString(videoAdDuration, models.ArraySeparator),
AdserverCreativeDurationMatchingPolicy: models.GetVersionLevelPropertyFromPartnerConfig(partnerConfigMap, models.VideoAdDurationMatchingKey),
}
} else if rCtx.IsTestRequest > 0 {
//Adding default durations for CTV Test requests
rCtx.AdpodProfileConfig = &models.AdpodProfileConfig{
AdserverCreativeDurations: []int{5, 10},
AdserverCreativeDurationMatchingPolicy: openrtb_ext.OWRoundupVideoAdDurationMatching,
}
}
}

Expand Down Expand Up @@ -401,22 +408,14 @@ func (m OpenWrap) handleBeforeValidationHook(

var adpodConfig *models.AdPod
if rCtx.IsCTVRequest {
adpodConfig, err = adpod.GetV25AdpodConfigs(imp.Video, requestExt.AdPod, videoAdUnitCtx.AppliedSlotAdUnitConfig, partnerConfigMap, rCtx.PubIDStr, m.metricEngine)
adpodConfig, err = adpod.GetV25AdpodConfigs(imp.Video, videoAdUnitCtx.AppliedSlotAdUnitConfig, partnerConfigMap, rCtx.PubIDStr, m.metricEngine)
if err != nil {
result.NbrCode = int(nbr.InvalidAdpodConfig)
result.Errors = append(result.Errors, "failed to get adpod configurations for "+imp.ID+" reason: "+err.Error())
rCtx.ImpBidCtx = getDefaultImpBidCtx(*payload.BidRequest)
return result, nil
}

//Adding default durations for CTV Test requests
if rCtx.IsTestRequest > 0 && adpodConfig != nil && rCtx.AdpodProfileConfig == nil {
rCtx.AdpodProfileConfig = &models.AdpodProfileConfig{
AdserverCreativeDurations: []int{5, 10},
AdserverCreativeDurationMatchingPolicy: openrtb_ext.OWRoundupVideoAdDurationMatching,
}
}

if err := adpod.ValidateV25Configs(rCtx, adpodConfig); err != nil {
result.NbrCode = int(nbr.InvalidAdpodConfig)
result.Errors = append(result.Errors, "invalid adpod configurations for "+imp.ID+" reason: "+err.Error())
Expand Down

0 comments on commit 6493ba9

Please sign in to comment.