Skip to content

Commit 50b8093

Browse files
HaoyangYuan2000shunj-nb
authored andcommitted
implement file db (#76)
* implement file and db for prebid-server * move new functions to a new file
1 parent 1b41345 commit 50b8093

File tree

2 files changed

+55
-0
lines changed

2 files changed

+55
-0
lines changed

endpoints/openrtb2/auction.go

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1647,6 +1647,20 @@ func getJsonSyntaxError(testJSON []byte) (bool, string) {
16471647
}
16481648

16491649
func (deps *endpointDeps) getStoredRequests(ctx context.Context, requestJson []byte, impInfo []ImpExtPrebidData) (string, bool, map[string]json.RawMessage, map[string]json.RawMessage, []error) {
1650+
if isDbFetched(requestJson) {
1651+
dbReqMap, dbImpMap, parseErrs := parseDbStoredMaps(requestJson)
1652+
if len(parseErrs) > 0 {
1653+
return "", false, nil, nil, parseErrs
1654+
}
1655+
1656+
// same parameters as normal
1657+
storedBidRequestId, hasStoredBidRequest, err := getStoredRequestId(requestJson)
1658+
if err != nil {
1659+
return "", false, nil, nil, []error{err}
1660+
}
1661+
1662+
return storedBidRequestId, hasStoredBidRequest, dbReqMap, dbImpMap, nil
1663+
}
16501664
// Parse the Stored Request IDs from the BidRequest and Imps.
16511665
storedBidRequestId, hasStoredBidRequest, err := getStoredRequestId(requestJson)
16521666
if err != nil {

endpoints/openrtb2/db_helper.go

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package openrtb2
2+
3+
import (
4+
"encoding/json"
5+
"fmt"
6+
7+
"github.com/buger/jsonparser"
8+
)
9+
10+
func isDbFetched(requestJson []byte) bool {
11+
val, dataType, _, err := jsonparser.Get(requestJson, "ext", "db_fetched")
12+
if err != nil {
13+
return false
14+
}
15+
if dataType == jsonparser.Boolean && string(val) == "true" {
16+
return true
17+
}
18+
return false
19+
}
20+
21+
func parseDbStoredMaps(requestJson []byte) (map[string]json.RawMessage, map[string]json.RawMessage, []error) {
22+
var errs []error
23+
storedReqMap := make(map[string]json.RawMessage)
24+
storedImpMap := make(map[string]json.RawMessage)
25+
26+
rawReqs, dt, _, err := jsonparser.Get(requestJson, "ext", "db_storedrequests")
27+
if err == nil && dt == jsonparser.Object {
28+
if e := json.Unmarshal(rawReqs, &storedReqMap); e != nil {
29+
errs = append(errs, fmt.Errorf("failed to unmarshal db_storedrequests: %v", e))
30+
}
31+
}
32+
33+
rawImps, dt2, _, err2 := jsonparser.Get(requestJson, "ext", "db_storedimps")
34+
if err2 == nil && dt2 == jsonparser.Object {
35+
if e := json.Unmarshal(rawImps, &storedImpMap); e != nil {
36+
errs = append(errs, fmt.Errorf("failed to unmarshal db_storedimps: %v", e))
37+
}
38+
}
39+
40+
return storedReqMap, storedImpMap, errs
41+
}

0 commit comments

Comments
 (0)