Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

New Module: 51Degrees #3650

Merged

Conversation

jwrosewell
Copy link
Contributor

Type of change

  • Feature
  • New module

Description of change

51Degrees module enriches an incoming OpenRTB request with 51Degrees Device Data.

51Degrees module sets the following fields of the device object: make, model, os, osv, h, w, ppi, pxratio - interested bidder adapters may use these fields as needed. In addition the module sets device.ext.fiftyonedegrees_deviceId to a permanent device ID which can be rapidly looked up in on premise data exposing over 250 properties including the device age, chip set, codec support, and price, operating system and app/browser versions, age, and embedded features.

The module is based on the open source 51Degrees device detection library: https://github.com/51Degrees/device-detection-go.

Integration details are specified in the modules/fiftyone_degrees/device_detection/README.md.

Maintainer contacts:

[email protected]

@bsardo bsardo changed the title 51Degrees module: initial commit New Module: 51Degrees Apr 30, 2024
@bsardo
Copy link
Collaborator

bsardo commented Jun 15, 2024

Hello. Thanks for your patience. I just want to give you a quick status update. For various reasons, we are going to need a couple more weeks before we're able to tackle this. There's a lot here so it requires a significant time investment to review, and on top of that, we may also need to perform a security review of your library and quite possibly lock the version in PBS. Stay tuned.

@jwrosewell
Copy link
Contributor Author

@bsardo - Thank you. To help make the review process more efficient for everyone I'd be happy to setup a virtual meeting with the reviewers to answer questions and clarify feedback in real time. Please let me know if this is something you or other reviewers would like to arrange.

remove fields that could be overwritten
}
}

func (x *AccountValidator) IsWhiteListed(cfg Config, req []byte) bool {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nitpick: Consider renaming to "IsAllowed" to align with the "AccountFilter.AllowList" terminology and to use use more inclusive language.

func (x EvidenceFromRequestHeadersExtractor) extractEvidenceStrings(r *http.Request, keys []dd.EvidenceKey) []StringEvidence {
evidence := make([]StringEvidence, 0)
for _, e := range keys {
lowerKey := strings.ToLower(e.Key)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nitpick / Performance: There is no need to convert the key to lower case r.Header.Get is case insensitive.

package device_detection

// Contains checks if a string is in a slice of strings
func Contains(source []string, item string) bool {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Consider using the built-in slices.Contains added in Go 1.21.

@justadreamer justadreamer deleted the feature/51Degrees-device-detection-module branch July 24, 2024 07:21
@justadreamer justadreamer restored the feature/51Degrees-device-detection-module branch July 24, 2024 07:25
Copy link
Collaborator

@bsardo bsardo left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good. I left a lot of comments but I imagine most warrant easy changes or no action.

I still need to finish going through the tests, which I will do this week, but I wanted to give you feedback on the code first.

Comment on lines +71 to +74
github.com/tidwall/gjson v1.17.1 // indirect
github.com/tidwall/match v1.1.1 // indirect
github.com/tidwall/pretty v1.2.0 // indirect
github.com/tidwall/sjson v1.2.5 // indirect
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As discussed, I ran some gjson vs jsonparser benchmark tests and while jsonparser is slightly faster for more complex cases with less bytes per operation, we consider the difference small enough that we are good with using gjson in this module. We do also like that gjson has a sister library sjson that you can use. The jsonparser library has a set feature but it is experimental and we have found that it is buggy.

Here are the benchmark test results:

goos: darwin
goarch: amd64
pkg: github.com/prebid/prebid-server/v2/modules/fiftyone_degrees/device_detection
cpu: Intel(R) Core(TM) i7-9750H CPU @ 2.60GHz
BenchmarkSingleTopLevelGJSON-12         	 3016309	       398.3 ns/op	      80 B/op	       1 allocs/op
BenchmarkSingleTopLevelJSONParser-12    	 2739925	       426.3 ns/op	       0 B/op	       0 allocs/op
BenchmarkSingleNestedGJSON-12           	 2841622	       423.3 ns/op	      24 B/op	       1 allocs/op
BenchmarkSingleNestedJSONParser-12      	 2601579	       406.7 ns/op	       0 B/op	       0 allocs/op
BenchmarkManyNestedGJSON-12             	  622218	      1928 ns/op	     624 B/op	       6 allocs/op
BenchmarkManyNestedJSONParser-12        	  769302	      1388 ns/op	     304 B/op	       8 allocs/op

See the attached file containing the benchmark tests.
json_benchmark_test.txt


### Account-Level Config

To start using current module in PBS-Java you have to enable module and add `fiftyone-devicedetection-entrypoint-hook` and `fiftyone-devicedetection-raw-auction-request-hook` into hooks execution plan inside your config file:
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Typo: PBS-Java --> PBS-Go

fiftyone_degrees:
device_detection:
enabled: true
data-file:
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Typo: data-file --> data_file

Comment on lines 35 to 36
var cfg Config
ncfg, err := ParseConfig(rawConfig)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nitpick: I think you can get rid of cfg and just use ncfg and get rid of the cfg = ncfg assignment on line 46.

// handleAuctionEntryPointRequestHook is a hookstage.HookFunc that is used to handle the auction entrypoint request hook.
func handleAuctionEntryPointRequestHook(cfg Config, payload hookstage.EntrypointPayload, deviceDetector deviceDetector, evidenceExtractor evidenceExtractor, accountValidator accountValidator) (result hookstage.HookResult[hookstage.EntrypointPayload], err error) {
// if account/domain is not whitelisted, return failure
if accountValidator.IsWhiteListed(cfg, payload.Body) != true {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nitpick: go best practice would be to use the not operator instead of != true:
if !accountValidator.IsWhiteListed(cfg, payload.Body) {

Comment on lines 58 to 59
// fiftyOneDtToRTB converts a 51Degrees device type to an OpenRTB device type.
// If the device type is not recognized, it defaults to PC.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you move this comment down so it is right above the fiftyOneDtToRTB function?

Comment on lines 98 to 100
func (x DeviceInfoExtractor) getValue(
results Results,
propertyName DeviceInfoProperty) string {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nitpick: please put the whole function signature on the same line.

",",
)
if err != nil {
log.Printf("ERROR: Failed to get results values string.")
Copy link
Collaborator

@bsardo bsardo Jul 24, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm curious why you're using log here and in a few other places instead of glog. I think we should use glog throughout, in which case this would probably be a glog.Errorf.

",",
)
if err != nil {
log.Printf("ERROR: Failed to get results values string.")
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also if you do get this error, it looks like the error would get returned via lines 120-122. Would it be better to just early return here so it is more obvious?


// Extract extracts the account information from the payload
// The account information is extracted from the publisher id or site publisher id
func (x AccountInfoExtractor) Extract(payload []byte) *AccountInfo {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As a general comment applicable to all public functions and variables, please assess whether these need to be exported. I don't think most of these are meant to be accessed outside of the device_detection package, in which case they should begin with a lower case letter.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

totally agree, thanks

@justadreamer
Copy link
Contributor

Thanks for this review @SyntaxNode and @bsardo! The recent push addresses Scott's comments, we'll work on addressing Brian's comments tomorrow.

@justadreamer
Copy link
Contributor

Hi @bsardo, thanks for the super-thorough code review! The above comments have been addressed with the latest pushes from @legendko and myself - we are ready for the next review pass :).

Copy link
Collaborator

@bsardo bsardo left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've finished going through the updates made in response to my last review as well as all of the tests. This is very close. Most of my comments are nitpicks and quick tweaks. The more time consuming ones are recommendations to move some of the tests to a table-based format with additional test cases. I've provided some of those to expedite things. Hopefully we can get this into this week's release.

@SyntaxNode do you have time this week to review?

",",
)
if err != nil {
glog.Errorf("ERROR: Failed to get results values string.")
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nitpick: I think you can remove ERROR: from the message since glog will handle indicating that fact.

onpremise.WithProperties([]string{
"HardwareVendor",
"HardwareName",
"deviceType",
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this supposed to be "DeviceType",?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, thanks for noticing!

func (x defaultDeviceDetector) getDeviceInfo(evidence []onpremise.Evidence, ua string) (*deviceInfo, error) {
results, err := x.engine.Process(evidence)
if err != nil {
return nil, errors.Wrap(err, "Failed to Process evidence")
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should Process be lowercase?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sure

const (
deviceInfoHardwareVendor deviceInfoProperty = "HardwareVendor"
deviceInfoHardwareName deviceInfoProperty = "HardwareName"
deviceInfoDeviceType deviceInfoProperty = "deviceType"
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"deviceType" should be "DeviceType"?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, thanks again! It seems like some renaming went wrong

Comment on lines 39 to 41
er := fmt.Sprintf("error hydrating fields %s", err)
glog.Error(er)
return rawPayload, hookexecution.NewFailure(er)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm curious if we really want to log an error here. There are plenty of other hook execution failures caught both in this file and in the module where we don't do that. Thoughts?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

that's a leftover from the previous version of code, before your first review.
it had only the log part: glog.Errorf("error hydrating fields %s", err) but you suggested returning a hookexecution Failure error here instead of just logging. I'll remove the log here as it is redundant now.

)
}

func TestModule_HandleRawAuctionHookDoesNotHaveModuleCtx(t *testing.T) {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nitpick: TestHandleRawAuctionHookNoCtx

assert.Errorf(t, err, "entrypoint hook was not configured")
}

func TestModule_TestModule_HandleRawAuctionHookExtractError(t *testing.T) {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nitpick: TestHandleRawAuctionHookExtractError

module := Module{}

_, err := module.HandleRawAuctionHook(
nil, hookstage.ModuleInvocationContext{},
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nitpick: Please put these two parameters on separate lines.


}

func TestModule_HandleRawAuctionHookEnrichment(t *testing.T) {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nitpick: TestHandleRawAuctionHookEnrichment

assert.Errorf(t, err, "error getting device info")
}

func TestModule_HandleRawAuctionHookEnrichmentWithErrors(t *testing.T) {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nitpick: TestHandleRawAuctionHookEnrichmentWithErrors

@justadreamer
Copy link
Contributor

Hi @bsardo the latest push should address the above comments - please check. As always thank you for such a thorough review! Not sure we made it into the release, but hopefully we are close.

Copy link
Collaborator

@bsardo bsardo left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is looking good; I have just one very minor ask to make identifying test failures easier.

Comment on lines 34 to 39
name: "allow list is nil",
allowList: nil,
expectedResult: true,
},
{
name: "allow list contains multiple",
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nitpick: for all test cases here, replace spaces in name field with underscores which is what t.Run will do when it encounters spaces (e.g. "allow list contains multiple" --> "allow_list_contains_multiple"). This will make it easy to find a failing test via copy and search.

Comment on lines 112 to 121
name: "Success path",
engineResponse: &dd.ResultsHash{},
engineError: nil,
expectedResult: &deviceInfo{
DeviceId: "123",
},
expectedError: "",
},
{
name: "Error path",
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nitpick: for all test cases here, replace spaces in name field with underscores which is what t.Run will do when it encounters spaces (e.g. "Error path" --> "Error_path"). This will make it easy to find a failing test via copy and search.

expectedValue string
}{
{
name: "from SUA tag",
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nitpick: for all test cases here, replace spaces in name field with underscores which is what t.Run will do when it encounters spaces (e.g. "from SUA tag" --> "from_SUA_tag"). This will make it easy to find a failing test via copy and search.

"github.com/stretchr/testify/assert"
)

func TestExtractEvidenceStrings(t *testing.T) {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nitpick: for all test cases here, replace spaces in name field with underscores which is what t.Run will do when it encounters spaces (e.g. "Ignored query evidence" --> "Ignored_query_evidence"). This will make it easy to find a failing test via copy and search.

Copy link
Collaborator

@bsardo bsardo left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@bsardo bsardo merged commit 2606e75 into prebid:master Aug 16, 2024
5 checks passed
bevenio pushed a commit to tamedia-adtec/prebid-server that referenced this pull request Aug 22, 2024
Co-authored-by: James Rosewell <[email protected]>
Co-authored-by: Marin Miletic <[email protected]>
Co-authored-by: Sarana-Anna <[email protected]>
Co-authored-by: Eugene Dorfman <[email protected]>
Co-authored-by: Krasilchuk Yaroslav <[email protected]>
bsardo added a commit to bsardo/prebid-server that referenced this pull request Aug 26, 2024
bsardo added a commit that referenced this pull request Aug 27, 2024
bevenio added a commit to tamedia-adtec/prebid-server that referenced this pull request Oct 30, 2024
commit df58baf
Author: Brian Sardo <[email protected]>
Date:   Tue Oct 29 21:05:07 2024 -0400

    Cookie Sync: Use max when limit is 0 (prebid#4022)

commit db2a872
Author: Brian Sardo <[email protected]>
Date:   Tue Oct 29 17:20:57 2024 -0400

    ORTB 2.6: Full support with down convert for 2.5 adapters (prebid#4019)

    Co-authored-by: hhhjort <[email protected]>
    Co-authored-by: Veronika Solovei <[email protected]>

commit 1419761
Author: Scott Kay <[email protected]>
Date:   Tue Oct 29 16:35:05 2024 -0400

    Rename Blacklisted Apps to Blocked Apps (prebid#3620)

commit ddf897c
Author: AlexBVolcy <[email protected]>
Date:   Tue Oct 29 14:07:49 2024 -0400

    Update Cookie Sync Chooser Debug Message to match Java (prebid#3558)

commit a23380f
Author: Mohammad Nurul Islam Shihan <[email protected]>
Date:   Tue Oct 29 21:34:31 2024 +0600

    ImproveDigital: Remove placementKey & addtlconsent parsing (prebid#3728)

commit 03a4abd
Author: Alex Maltsev <[email protected]>
Date:   Tue Oct 22 22:26:45 2024 +0300

    Sample: Fix prebid js loading bug on sample html page (prebid#3792)

commit 18f6798
Author: Sebastien Boisvert <[email protected]>
Date:   Tue Oct 22 15:15:07 2024 -0400

    Bump Go version to 1.22 in dev containers config (prebid#3983)

commit bcf6491
Author: sindhuja-sridharan <[email protected]>
Date:   Thu Oct 17 15:20:45 2024 -0600

    GumGum: Declare ORTB 2.6 support (prebid#3985)

commit 451bc44
Author: Bluesea <[email protected]>
Date:   Thu Oct 17 03:12:50 2024 +0800

    BlueSea: Add site capability (prebid#3910)

    Co-authored-by: prebid-bluesea <[email protected]>

commit 8134328
Author: Boris Yu <[email protected]>
Date:   Wed Oct 16 21:08:50 2024 +0300

    Displayio: Make imp.bidfloor optional (prebid#3959)

commit b56923c
Author: Piotr Jaworski <[email protected]>
Date:   Tue Oct 15 21:49:39 2024 +0200

    RTB House: Resolve AUCTION_PRICE macro (prebid#3901)

commit cbe9876
Author: Irakli Gotsiridze <[email protected]>
Date:   Tue Oct 15 23:30:17 2024 +0400

    enable gzip (prebid#3946)

commit 5fcbbbf
Author: Patrick Loughrey <[email protected]>
Date:   Tue Oct 15 15:19:47 2024 -0400

    Triplelift: Adding flag for 2.6 support (prebid#3966)

commit c37951a
Author: ym-winston <[email protected]>
Date:   Tue Oct 15 15:18:54 2024 -0400

    update yieldmo.yaml to indicate support for ortb 2.6 (prebid#3968)

commit 9bb9b3d
Author: bhainesnexxen <[email protected]>
Date:   Tue Oct 15 12:09:33 2024 -0700

    Unruly: Indicate Support for OpenRTB 2.6 (prebid#3984)

commit 87d4412
Author: Brian Sardo <[email protected]>
Date:   Wed Oct 9 19:08:14 2024 +0000

    Refactor: Move privacy init up (prebid#3958)

commit 64584f6
Author: Brian Sardo <[email protected]>
Date:   Tue Oct 8 19:52:25 2024 +0000

    Refactor: Remove getAuctionBidderRequests (prebid#3957)

commit d54c3ed
Author: ysfbsf <[email protected]>
Date:   Tue Oct 8 15:42:40 2024 +0200

    New Adapter: Missena (prebid#3761)

commit 8689e0d
Author: Nick <[email protected]>
Date:   Mon Oct 7 10:39:59 2024 -0400

    Sonobi: native and currency conversion support (prebid#3889)

    Co-authored-by: bansawbanchee <[email protected]>

commit f27bcef
Author: dkornet-ad <[email protected]>
Date:   Thu Oct 3 09:33:54 2024 +0300

    New Adapter: Bidmatic (prebid#3731)

    authored by @dkornet-ad

commit 6c154e0
Author: Alexander Pykhteyev <[email protected]>
Date:   Wed Sep 25 23:08:23 2024 +0700

    New Adapter: Streamlyn  (prebid#3900)

    Co-authored-by: apykhteyev <[email protected]>

commit 53f51a6
Author: przemkaczmarek <[email protected]>
Date:   Wed Sep 25 17:53:07 2024 +0200

    GPC: Set extension based on header (prebid#3895)

commit c42fe53
Author: bkaneyama <[email protected]>
Date:   Wed Sep 25 07:46:01 2024 -0700

    InMobi: mtype support (prebid#3921)

commit 8b1b96e
Author: Brian Sardo <[email protected]>
Date:   Wed Sep 25 14:22:18 2024 +0000

    Add docs build readme  (prebid#3930)

commit 4462fce
Author: Eugene Dorfman <[email protected]>
Date:   Wed Sep 25 16:11:45 2024 +0200

    51degrees module (prebid#3893)

commit 11b6546
Author: Alex Maltsev <[email protected]>
Date:   Mon Sep 23 16:54:18 2024 +0300

    Rubicon: Pass PBS host info to XAPI (prebid#3903)

commit 93368cc
Author: rtuschkany <[email protected]>
Date:   Thu Sep 19 23:45:32 2024 +0200

    ConnectAd: String/int fix (prebid#3925)

commit 905b3a5
Author: ShriprasadM <[email protected]>
Date:   Thu Sep 19 18:30:20 2024 +0530

    Log non bid reasons in bidder framework (prebid#2891)

    Co-authored-by: Shriprasad Marathe <[email protected]>
    Co-authored-by: ashish.shinde <[email protected]>
    Co-authored-by: dhruv.sonone <[email protected]>

commit 3c4527e
Author: Mikael Lundin <[email protected]>
Date:   Wed Sep 18 13:38:49 2024 +0200

    Adnuntius: Return DSA in bid response (prebid#3777)

commit 640b97c
Author: lm-ved <[email protected]>
Date:   Mon Sep 16 12:17:54 2024 +0530

    LemmaDigital: change endpoint (prebid#3862)

commit 3e24be7
Author: Alexander Pykhteyev <[email protected]>
Date:   Sat Sep 14 04:04:09 2024 +0700

    New Adapter: TGM (prebid#3848)

    Co-authored-by: apykhteyev <[email protected]>

commit ffdd75f
Author: Robert Kawecki <[email protected]>
Date:   Thu Sep 12 21:52:51 2024 +0200

    New Adapter: AdTonos (prebid#3853)

commit c02ee8c
Author: Laurentiu Badea <[email protected]>
Date:   Thu Sep 12 12:34:46 2024 -0700

    Update exchange json tests with correct hb_pb_cat_dur  (prebid#3836)

commit 7613ff5
Author: Laurentiu Badea <[email protected]>
Date:   Thu Sep 12 12:27:07 2024 -0700

    Update adapter json test framework to validate BidVideo (prebid#3835)

commit 6cbedf0
Author: schubert-sc <[email protected]>
Date:   Wed Sep 11 19:41:53 2024 +0300

    Smartx: Declare OpenRTB 2.6 support (prebid#3896)

commit e0a21d0
Author: qt-io <[email protected]>
Date:   Wed Sep 11 19:31:58 2024 +0300

    QT: Add tcfeu support (prebid#3892)

    Co-authored-by: qt-io <[email protected]>

commit b920cca
Author: Yanivplaydigo <[email protected]>
Date:   Wed Sep 11 19:19:12 2024 +0300

    Playdigo: Add tcfeu support (prebid#3890)

commit 6a011ed
Author: ccorbo <[email protected]>
Date:   Wed Sep 11 09:53:54 2024 -0400

    Update github.com/rs/cors to v1.11.0 (prebid#3884)

    Co-authored-by: Chris Corbo <[email protected]>

commit ec6a45d
Author: Steffen Müller <[email protected]>
Date:   Wed Sep 4 15:51:44 2024 +0200

    Agma: Allow app.bundle to be used as selector for apps (prebid#3780)

commit 8237f7f
Author: Scott Kay <[email protected]>
Date:   Tue Sep 3 14:34:56 2024 -0400

    Refactor Bid Splitter Privacy Functions (prebid#3645)

commit f7caea5
Author: Brian Schmidt <[email protected]>
Date:   Fri Aug 30 06:47:45 2024 -0700

    OpenX: indicate support for OpenRTB 2.6 (prebid#3879)

commit e825553
Author: Ben Oraki <[email protected]>
Date:   Fri Aug 30 16:36:22 2024 +0300

    New Adapter: Oraki (prebid#3839)

commit 2e2b49f
Author: escalax <[email protected]>
Date:   Fri Aug 30 16:28:04 2024 +0300

    New Adapter: Escalax (prebid#3798)

commit 4ea0e33
Author: Copper6SSP <[email protected]>
Date:   Fri Aug 30 16:18:46 2024 +0300

    New Adapter: Copper6SSP (prebid#3755)

commit 8d7117d
Author: Brian Sardo <[email protected]>
Date:   Tue Aug 27 13:23:34 2024 -0400

    Revert "New Module: 51Degrees (prebid#3650)" (prebid#3888)

    This reverts commit 2606e75.

commit 84a8162
Author: Anand Venkatraman <[email protected]>
Date:   Thu Aug 22 16:14:32 2024 +0530

    PulsePoint: ortb 2.6 version and gpp support (prebid#3874)

    authored by @anand-venkatraman

commit bd85ba4
Author: Nick Llerandi <[email protected]>
Date:   Thu Aug 22 02:15:12 2024 -0400

    specifies ortb 2.6 support (prebid#3) (prebid#3876)

commit 54f8759
Author: dtbarne <[email protected]>
Date:   Wed Aug 21 07:26:30 2024 -0500

    Update mobilefuse.yaml to indicate support for OpenRTB 2.6 and GPP (prebid#3871)

commit 59a5b07
Author: mwang-sticky <[email protected]>
Date:   Wed Aug 21 20:26:15 2024 +0800

    freewheel-adapter: support 2.6 (prebid#3873)

commit a556e2d
Author: Dubyk Danylo <[email protected]>
Date:   Wed Aug 21 15:23:39 2024 +0300

    Fix currency conversion bug. (prebid#3867)

    Co-authored-by: ddubyk <[email protected]>

commit d161712
Author: Pubrise <[email protected]>
Date:   Wed Aug 21 12:43:39 2024 +0300

    new adapter (prebid#3833)

    authored by @Pubrise

commit e8509e6
Author: bretg <[email protected]>
Date:   Wed Aug 21 05:40:26 2024 -0400

    declare support for ORTB 2.6 (prebid#3872)

    authored by @bretg

commit 6be7244
Author: Saar Amrani <[email protected]>
Date:   Wed Aug 21 12:37:59 2024 +0300

    Update Vidazoo bidder info for GPP support (prebid#3869)

commit e4bd6d3
Author: gg-natalia <[email protected]>
Date:   Sun Aug 18 06:52:28 2024 -0300

    ADTS-455 remove video validations (prebid#3842)

    authored by @gg-natalia

commit 2606e75
Author: James Rosewell <[email protected]>
Date:   Fri Aug 16 14:20:22 2024 +0100

    New Module: 51Degrees (prebid#3650)

    Co-authored-by: James Rosewell <[email protected]>
    Co-authored-by: Marin Miletic <[email protected]>
    Co-authored-by: Sarana-Anna <[email protected]>
    Co-authored-by: Eugene Dorfman <[email protected]>
    Co-authored-by: Krasilchuk Yaroslav <[email protected]>

commit 0e9b234
Author: Antonios Sarhanis <[email protected]>
Date:   Tue Aug 13 18:28:44 2024 +1000

    Use format=prebid on adserver requests. (prebid#3846)

commit 4d64623
Author: ownAdx <[email protected]>
Date:   Mon Aug 12 18:51:53 2024 +0530

    OwnAdx: Bidder param and URL updates (prebid#3813)

    Co-authored-by: Hina Yadav <[email protected]>

commit 2a19924
Author: ahmadlob <[email protected]>
Date:   Mon Aug 12 16:09:23 2024 +0300

    taboola-support-app-in-prebid-server (prebid#3795)

commit 4f177ca
Author: benben2001 <[email protected]>
Date:   Mon Aug 12 21:07:38 2024 +0800

    New Adapter: MeloZen (prebid#3784)
scr-oath added a commit to scr-oath/prebid-server that referenced this pull request Nov 15, 2024
* New Adapter: MeloZen (prebid#3784)

* taboola-support-app-in-prebid-server (prebid#3795)

* OwnAdx: Bidder param and URL updates (prebid#3813)

Co-authored-by: Hina Yadav <[email protected]>

* Use format=prebid on adserver requests. (prebid#3846)

* New Module: 51Degrees (prebid#3650)

Co-authored-by: James Rosewell <[email protected]>
Co-authored-by: Marin Miletic <[email protected]>
Co-authored-by: Sarana-Anna <[email protected]>
Co-authored-by: Eugene Dorfman <[email protected]>
Co-authored-by: Krasilchuk Yaroslav <[email protected]>

* ADTS-455 remove video validations (prebid#3842)

authored by @gg-natalia

* Update Vidazoo bidder info for GPP support (prebid#3869)

* declare support for ORTB 2.6 (prebid#3872)

authored by @bretg

* new adapter (prebid#3833)

authored by @Pubrise

* Fix currency conversion bug. (prebid#3867)

Co-authored-by: ddubyk <[email protected]>

* freewheel-adapter: support 2.6 (prebid#3873)

* Update mobilefuse.yaml to indicate support for OpenRTB 2.6 and GPP (prebid#3871)

* specifies ortb 2.6 support (prebid#3) (prebid#3876)

* PulsePoint: ortb 2.6 version and gpp support (prebid#3874)

authored by @anand-venkatraman

* Revert "New Module: 51Degrees (prebid#3650)" (prebid#3888)

This reverts commit 2606e75.

---------

Co-authored-by: benben2001 <[email protected]>
Co-authored-by: ahmadlob <[email protected]>
Co-authored-by: ownAdx <[email protected]>
Co-authored-by: Hina Yadav <[email protected]>
Co-authored-by: Antonios Sarhanis <[email protected]>
Co-authored-by: James Rosewell <[email protected]>
Co-authored-by: Marin Miletic <[email protected]>
Co-authored-by: Sarana-Anna <[email protected]>
Co-authored-by: Eugene Dorfman <[email protected]>
Co-authored-by: Krasilchuk Yaroslav <[email protected]>
Co-authored-by: gg-natalia <[email protected]>
Co-authored-by: Saar Amrani <[email protected]>
Co-authored-by: bretg <[email protected]>
Co-authored-by: Pubrise <[email protected]>
Co-authored-by: Dubyk Danylo <[email protected]>
Co-authored-by: ddubyk <[email protected]>
Co-authored-by: mwang-sticky <[email protected]>
Co-authored-by: dtbarne <[email protected]>
Co-authored-by: Nick Llerandi <[email protected]>
Co-authored-by: Anand Venkatraman <[email protected]>
Co-authored-by: Brian Sardo <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants