This application stores short-term data for use in Prebid.
It exists to support Video Ads from Prebid.js, as well as prebid-native
Adds one or more values to the cache. Values can be given as either JSON or XML. A sample request is below.
{
"puts": [
{
"type": "xml",
"value": "<tag>Your XML content goes here.</tag>"
},
{
"type": "json",
"value": [1, true, "JSON value of any type can go here."]
}
]
}
If any of the puts
are invalid, then it responds with a 400 none of the values will be retrievable.
Assuming that all of the values are well-formed, then the server will respond with IDs which can be used to
fetch the values later.
{
"responses": [
{"uuid": "279971e4-70f0-4b18-bd65-5c6e7aa75d40"},
{"uuid": "147c9934-894b-4c1f-9a32-e7bb9cd15376"}
]
}
Retrieves a single value from the cache. If the id
isn't recognized, then it will return a 404.
Assuming the above POST calls have been made, here are some sample GET responses.
GET /cache?uuid=279971e4-70f0-4b18-bd65-5c6e7aa75d40
HTTP/1.1 200 OK
Content-Type: application/xml
<tag>Your XML content goes here.</tag>
GET /cache?uuid=147c9934-894b-4c1f-9a32-e7bb9cd15376
HTTP/1.1 200 OK
Content-Type: application/json
[1, true, "JSON value of any type can go here."]
This section does not describe permanent API contracts; it just describes limitations on the current implementation.
- This application does not validate XML. If users
POST
malformed XML, they'llGET
a bad response too. - The host company can set a max length on payload size limits in the application config. This limit will vary from vendor to vendor.
Golang 1.9.1 or greater and Dep must be installed on your system.
./validate.sh
runs the unit tests and reformats your code with gofmt.
./validate.sh --nofmt
runs the unit tests, but will not reformat your code.
Run prebid-cache
locally with:
go build .
./prebid-cache
The service will respond to requests on localhost:2424
, and the admin data will be available on localhost:2525
Configuration is handled by Viper. The easiest way to set config during development is by editing the config.yaml file.
You can also set the config through environment variables. For example:
PBC_COMPRESSION_TYPE=none ./prebid-cache
Prebid Cache works in Docker out of the box.
CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo .
docker build -t prebid-cache
docker run -p 2424:2424 -t prebid-cache .
pprof stats can be accessed from a running app on localhost:2525