Skip to content

Commit

Permalink
PREB-39 added support for imp.ext and added imp.ext.skadn to it (preb…
Browse files Browse the repository at this point in the history
  • Loading branch information
ioan-alexandru-stef-smaato committed May 25, 2023
1 parent 3a5d7c9 commit d527e2f
Show file tree
Hide file tree
Showing 32 changed files with 2,739 additions and 31 deletions.
40 changes: 37 additions & 3 deletions adapters/smaato/smaato.go
Expand Up @@ -17,7 +17,7 @@ import (
"github.com/prebid/prebid-server/util/timeutil"
)

const clientVersion = "prebid_server_0.5"
const clientVersion = "prebid_server_0.6"

type adMarkupType string

Expand Down Expand Up @@ -464,20 +464,25 @@ func setImpForAdspace(imp *openrtb2.Imp) error {
return &errortypes.BadInput{Message: "Missing adspaceId parameter."}
}

impExt, err := makeImpExt(&imp.Ext)
if err != nil {
return err
}

if imp.Banner != nil {
bannerCopy, err := setBannerDimension(imp.Banner)
if err != nil {
return err
}
imp.Banner = bannerCopy
imp.TagID = adSpaceID
imp.Ext = nil
imp.Ext = impExt
return nil
}

if imp.Video != nil || imp.Native != nil {
imp.TagID = adSpaceID
imp.Ext = nil
imp.Ext = impExt
return nil
}

Expand All @@ -494,6 +499,11 @@ func setImpForAdBreak(imps []openrtb2.Imp) error {
return &errortypes.BadInput{Message: "Missing adbreakId parameter."}
}

impExt, err := makeImpExt(&imps[0].Ext)
if err != nil {
return err
}

for i := range imps {
imps[i].TagID = adBreakID
imps[i].Ext = nil
Expand All @@ -506,9 +516,33 @@ func setImpForAdBreak(imps []openrtb2.Imp) error {
imps[i].Video = &videoCopy
}

imps[0].Ext = impExt

return nil
}

func makeImpExt(impExtRaw *json.RawMessage) (json.RawMessage, error) {
var impExt openrtb_ext.ExtImpExtraDataSmaato

if err := json.Unmarshal(*impExtRaw, &impExt); err != nil {
return nil, &errortypes.BadInput{Message: "Invalid imp.ext."}
}

if impExtSkadnRaw := impExt.Skadn; impExtSkadnRaw != nil {
var impExtSkadn map[string]json.RawMessage

if err := json.Unmarshal(impExtSkadnRaw, &impExtSkadn); err != nil {
return nil, &errortypes.BadInput{Message: "Invalid imp.ext.skadn."}
}
}

if impExtJson, err := json.Marshal(impExt); string(impExtJson) != "{}" {
return impExtJson, err
} else {
return nil, nil
}
}

func setBannerDimension(banner *openrtb2.Banner) (*openrtb2.Banner, error) {
if banner.W != nil && banner.H != nil {
return banner, nil
Expand Down

0 comments on commit d527e2f

Please sign in to comment.