Skip to content

Commit 3907f1a

Browse files
authored
Remove Default Request Hardcoded Aliases (#4020)
1 parent df58baf commit 3907f1a

File tree

8 files changed

+261
-490
lines changed

8 files changed

+261
-490
lines changed

endpoints/info/bidders.go

Lines changed: 19 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@ var invalidEnabledOnlyMsg = []byte(`Invalid value for 'enabledonly' query param,
1515
var invalidBaseAdaptersOnlyMsg = []byte(`Invalid value for 'baseadaptersonly' query param, must be of boolean type`)
1616

1717
// NewBiddersEndpoint builds a handler for the /info/bidders endpoint.
18-
func NewBiddersEndpoint(bidders config.BidderInfos, aliases map[string]string) httprouter.Handle {
19-
responseAll, err := prepareBiddersResponseAll(bidders, aliases)
18+
func NewBiddersEndpoint(bidders config.BidderInfos) httprouter.Handle {
19+
responseAll, err := prepareBiddersResponseAll(bidders)
2020
if err != nil {
2121
glog.Fatalf("error creating /info/bidders endpoint all bidders response: %v", err)
2222
}
@@ -26,7 +26,7 @@ func NewBiddersEndpoint(bidders config.BidderInfos, aliases map[string]string) h
2626
glog.Fatalf("error creating /info/bidders endpoint all bidders (base adapters only) response: %v", err)
2727
}
2828

29-
responseEnabledOnly, err := prepareBiddersResponseEnabledOnly(bidders, aliases)
29+
responseEnabledOnly, err := prepareBiddersResponseEnabledOnly(bidders)
3030
if err != nil {
3131
glog.Fatalf("error creating /info/bidders endpoint enabled only response: %v", err)
3232
}
@@ -76,7 +76,6 @@ func readQueryFlag(r *http.Request, queryParam string) (flag, ok bool) {
7676
q := r.URL.Query()
7777

7878
v, exists := q[queryParam]
79-
8079
if !exists || len(v) == 0 {
8180
return false, true
8281
}
@@ -91,26 +90,13 @@ func readQueryFlag(r *http.Request, queryParam string) (flag, ok bool) {
9190
}
9291
}
9392

94-
func prepareBiddersResponseAll(bidders config.BidderInfos, aliases map[string]string) ([]byte, error) {
95-
bidderNames := make([]string, 0, len(bidders)+len(aliases))
96-
97-
for name := range bidders {
98-
bidderNames = append(bidderNames, name)
99-
}
100-
101-
for name := range aliases {
102-
bidderNames = append(bidderNames, name)
103-
}
104-
105-
sort.Strings(bidderNames)
106-
return jsonutil.Marshal(bidderNames)
107-
}
93+
type bidderPredicate func(config.BidderInfo) bool
10894

109-
func prepareBiddersResponseAllBaseOnly(bidders config.BidderInfos) ([]byte, error) {
95+
func prepareResponse(bidders config.BidderInfos, p bidderPredicate) ([]byte, error) {
11096
bidderNames := make([]string, 0, len(bidders))
11197

11298
for name, info := range bidders {
113-
if len(info.AliasOf) == 0 {
99+
if p(info) {
114100
bidderNames = append(bidderNames, name)
115101
}
116102
}
@@ -119,36 +105,24 @@ func prepareBiddersResponseAllBaseOnly(bidders config.BidderInfos) ([]byte, erro
119105
return jsonutil.Marshal(bidderNames)
120106
}
121107

122-
func prepareBiddersResponseEnabledOnly(bidders config.BidderInfos, aliases map[string]string) ([]byte, error) {
123-
bidderNames := make([]string, 0, len(bidders)+len(aliases))
124-
125-
for name, info := range bidders {
126-
if info.IsEnabled() {
127-
bidderNames = append(bidderNames, name)
128-
}
129-
}
108+
func prepareBiddersResponseAll(bidders config.BidderInfos) ([]byte, error) {
109+
filterNone := func(_ config.BidderInfo) bool { return true }
110+
return prepareResponse(bidders, filterNone)
111+
}
130112

131-
for name, bidder := range aliases {
132-
if info, ok := bidders[bidder]; ok && info.IsEnabled() {
133-
bidderNames = append(bidderNames, name)
134-
}
135-
}
113+
func prepareBiddersResponseAllBaseOnly(bidders config.BidderInfos) ([]byte, error) {
114+
filterBaseOnly := func(info config.BidderInfo) bool { return len(info.AliasOf) == 0 }
115+
return prepareResponse(bidders, filterBaseOnly)
116+
}
136117

137-
sort.Strings(bidderNames)
138-
return jsonutil.Marshal(bidderNames)
118+
func prepareBiddersResponseEnabledOnly(bidders config.BidderInfos) ([]byte, error) {
119+
filterEnabledOnly := func(info config.BidderInfo) bool { return info.IsEnabled() }
120+
return prepareResponse(bidders, filterEnabledOnly)
139121
}
140122

141123
func prepareBiddersResponseEnabledOnlyBaseOnly(bidders config.BidderInfos) ([]byte, error) {
142-
bidderNames := make([]string, 0, len(bidders))
143-
144-
for name, info := range bidders {
145-
if info.IsEnabled() && len(info.AliasOf) == 0 {
146-
bidderNames = append(bidderNames, name)
147-
}
148-
}
149-
150-
sort.Strings(bidderNames)
151-
return jsonutil.Marshal(bidderNames)
124+
filterEnabledOnlyBaseOnly := func(info config.BidderInfo) bool { return info.IsEnabled() && len(info.AliasOf) == 0 }
125+
return prepareResponse(bidders, filterEnabledOnlyBaseOnly)
152126
}
153127

154128
func writeBadRequest(w http.ResponseWriter, data []byte) {

endpoints/info/bidders_detail.go

Lines changed: 17 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -19,20 +19,21 @@ const (
1919
)
2020

2121
// NewBiddersDetailEndpoint builds a handler for the /info/bidders/<bidder> endpoint.
22-
func NewBiddersDetailEndpoint(bidders config.BidderInfos, aliases map[string]string) httprouter.Handle {
23-
responses, err := prepareBiddersDetailResponse(bidders, aliases)
22+
func NewBiddersDetailEndpoint(bidders config.BidderInfos) httprouter.Handle {
23+
responses, err := prepareBiddersDetailResponse(bidders)
2424
if err != nil {
2525
glog.Fatalf("error creating /info/bidders/<bidder> endpoint response: %v", err)
2626
}
2727

2828
return func(w http.ResponseWriter, _ *http.Request, ps httprouter.Params) {
2929
bidder := ps.ByName("bidderName")
30+
bidderName, found := getNormalizedBidderName(bidder)
3031

31-
coreBidderName, found := getNormalisedBidderName(bidder, aliases)
3232
if !found {
3333
w.WriteHeader(http.StatusNotFound)
3434
}
35-
if response, ok := responses[coreBidderName]; ok {
35+
36+
if response, ok := responses[bidderName]; ok {
3637
w.Header().Set("Content-Type", "application/json")
3738
if _, err := w.Write(response); err != nil {
3839
glog.Errorf("error writing response to /info/bidders/%s: %v", bidder, err)
@@ -43,25 +44,21 @@ func NewBiddersDetailEndpoint(bidders config.BidderInfos, aliases map[string]str
4344
}
4445
}
4546

46-
func getNormalisedBidderName(bidderName string, aliases map[string]string) (string, bool) {
47+
func getNormalizedBidderName(bidderName string) (string, bool) {
4748
if strings.ToLower(bidderName) == "all" {
4849
return "all", true
4950
}
50-
coreBidderName, ok := openrtb_ext.NormalizeBidderName(bidderName)
51-
if !ok { //check default aliases if not found in coreBidders
52-
if _, isDefaultAlias := aliases[bidderName]; isDefaultAlias {
53-
return bidderName, true
54-
}
51+
52+
bidderNameNormalized, ok := openrtb_ext.NormalizeBidderName(bidderName)
53+
if !ok {
5554
return "", false
5655
}
57-
return coreBidderName.String(), true
56+
57+
return bidderNameNormalized.String(), true
5858
}
5959

60-
func prepareBiddersDetailResponse(bidders config.BidderInfos, aliases map[string]string) (map[string][]byte, error) {
61-
details, err := mapDetails(bidders, aliases)
62-
if err != nil {
63-
return nil, err
64-
}
60+
func prepareBiddersDetailResponse(bidders config.BidderInfos) (map[string][]byte, error) {
61+
details := mapDetails(bidders)
6562

6663
responses, err := marshalDetailsResponse(details)
6764
if err != nil {
@@ -77,25 +74,14 @@ func prepareBiddersDetailResponse(bidders config.BidderInfos, aliases map[string
7774
return responses, nil
7875
}
7976

80-
func mapDetails(bidders config.BidderInfos, aliases map[string]string) (map[string]bidderDetail, error) {
77+
func mapDetails(bidders config.BidderInfos) map[string]bidderDetail {
8178
details := map[string]bidderDetail{}
8279

8380
for bidderName, bidderInfo := range bidders {
8481
details[bidderName] = mapDetailFromConfig(bidderInfo)
8582
}
8683

87-
for aliasName, bidderName := range aliases {
88-
aliasBaseInfo, aliasBaseInfoFound := details[bidderName]
89-
if !aliasBaseInfoFound {
90-
return nil, fmt.Errorf("base adapter %s for alias %s not found", bidderName, aliasName)
91-
}
92-
93-
aliasInfo := aliasBaseInfo
94-
aliasInfo.AliasOf = bidderName
95-
details[aliasName] = aliasInfo
96-
}
97-
98-
return details, nil
84+
return details
9985
}
10086

10187
func marshalDetailsResponse(details map[string]bidderDetail) (map[string][]byte, error) {
@@ -151,6 +137,8 @@ type platform struct {
151137
func mapDetailFromConfig(c config.BidderInfo) bidderDetail {
152138
var bidderDetail bidderDetail
153139

140+
bidderDetail.AliasOf = c.AliasOf
141+
154142
if c.Maintainer != nil {
155143
bidderDetail.Maintainer = &maintainer{
156144
Email: c.Maintainer.Email,

0 commit comments

Comments
 (0)