benjaminch / pricers

This library supports RTB development for Open RTB common price encryption in Golang.
GNU General Public License v3.0
8 stars 5 forks source link
go golang golang-library openrtb price-encryption

pricers

Build Status GoDoc Go Report Card Maintainability Test Coverage GitHub go.mod Go version GitHub tag (latest SemVer)

Overview

This library supports RTB development for Open RTB common price encryption in Golang.

Installation

$ go get github.com/benjaminch/pricers

Supported encryption protocols

Google Private Data

Specs https://developers.google.com/ad-exchange/rtb/response-guide/decrypt-price

Examples

Creating a new Google Private Data Pricer
import "github.com/benjaminch/pricers/doubleclick"

var pricer *doubleclick.DoubleClickPricer
var err error
pricer, err = doubleclick.NewDoubleClickPricer(
    "ZS-DraBUUVeht_sMDgn1nnM3My_nq9TrEESbjubDkTU",   // Encryption key
    "vQo9-4KtlcXmPhWaYvc8asqYuiSVMiGUdZ1RLXfrK7U",   // Integrity key
    true,                                            // Keys are base64
    helpers.Utf8,                                    // Keys should be ingested as Utf-8
    1000000,                                         // Price scale Factor Micro
    false,                                           // No debug
)
Encrypting a clear price
import "github.com/benjaminch/pricers/doubleclick"

var result string
var err error
price := 42 // Clear price
seed := ""
result, err = pricer.Encrypt(seed, price)
if err != nil {
    err = errors.New("Encryption failed. Error : %s", err)
}
Decrypting an encrypted price
import "github.com/benjaminch/pricers/doubleclick"

var result float64
var err error
encryptedPrice := "WEp8nQAAAAADG-y45xxIC1tMWuTjzmDW6HtroQ"
result, err = pricer.Decrypt(encryptedPrice)
if err != nil {
    err = errors.New("Decryption failed. Error : %s", err)
}

Todos