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

Making targeting keys configurable #3140

Merged
merged 20 commits into from
Oct 2, 2018

Conversation

pm-harshad-mane
Copy link
Contributor

Type of change

  • Feature
  • Refactoring (no functional changes, no api changes)

Description of change

As of now the targeting keys in Prebid.js are hard-coded, starting with "hb_" , I have made changes to make these key names configurable. So now publishers will be able to change key-names.
This will help the wrapper solutions which are build using Prebid.

@pm-harshad-mane
Copy link
Contributor Author

Hello @jsnellbaker ,
Can you help me with this PR?
There are some conflicts we need to merge.

Copy link
Collaborator

@harpere harpere left a comment

Choose a reason for hiding this comment

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

looks fine overall, just some recommendations about making the code cleaner.

'foobar': '300x250'
},
'netRevenue': true,
'currency': 'USD',
'ttl': 300
};
bid2['adserverTargeting'][CONSTANTS.TARGETING_KEYS.BIDDER] = 'rubicon';
bid2['adserverTargeting'][CONSTANTS.TARGETING_KEYS.AD_ID] = '5454545';
bid2['adserverTargeting'][CONSTANTS.TARGETING_KEYS.PRICE_BUCKET] = '0.25';
Copy link
Collaborator

Choose a reason for hiding this comment

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

same comment as above recommending using "computed" properties

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Done, thanks for suggestion

'foobar': '300x600'
},
'netRevenue': true,
'currency': 'USD',
'ttl': 300
};
bid3['adserverTargeting'][CONSTANTS.TARGETING_KEYS.BIDDER] = 'rubicon';
bid3['adserverTargeting'][CONSTANTS.TARGETING_KEYS.AD_ID] = '48747745';
bid3['adserverTargeting'][CONSTANTS.TARGETING_KEYS.PRICE_BUCKET] = '0.75';
Copy link
Collaborator

Choose a reason for hiding this comment

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

same comment as above recommending using "computed" properties

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Done, thanks for the suggestion

'foobar': '300x250'
},
'netRevenue': true,
'currency': 'USD',
'ttl': 300
};
bid1['adserverTargeting'][CONSTANTS.TARGETING_KEYS.BIDDER] = 'rubicon';
bid1['adserverTargeting'][CONSTANTS.TARGETING_KEYS.AD_ID] = '148018fe5e';
bid1['adserverTargeting'][CONSTANTS.TARGETING_KEYS.PRICE_BUCKET] = '0.53';
Copy link
Collaborator

Choose a reason for hiding this comment

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

rather than setting these separately, I think it would be cleaner to use "computed" properties when you first define the object. For example:
'adserverTargeting': { [CONSTANTS.TARGETING_KEYS.BIDDER]: 'rubicon', ... }

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Done, thanks for suggestion :)

expected['/19968336/header-bid-tag1'][CONSTANTS.TARGETING_KEYS.SIZE] = '728x90';
expected['/19968336/header-bid-tag1'][CONSTANTS.TARGETING_KEYS.PRICE_BUCKET] = '10.00';
expected['/19968336/header-bid-tag1'][CONSTANTS.TARGETING_KEYS.AD_ID] = '24bd938435ec3fc';
expected['/19968336/header-bid-tag1'][CONSTANTS.TARGETING_KEYS.BIDDER] = 'appnexus';
Copy link
Collaborator

Choose a reason for hiding this comment

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

cleaner to use "computed" properties.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Done, thanks for the suggestion

expected['/19968336/header-bid-tag1'][CONSTANTS.TARGETING_KEYS.SIZE] = '728x90';
expected['/19968336/header-bid-tag1'][CONSTANTS.TARGETING_KEYS.PRICE_BUCKET] = '10.00';
expected['/19968336/header-bid-tag1'][CONSTANTS.TARGETING_KEYS.AD_ID] = '24bd938435ec3fc';
expected['/19968336/header-bid-tag1'][CONSTANTS.TARGETING_KEYS.BIDDER] = 'appnexus';
Copy link
Collaborator

Choose a reason for hiding this comment

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

same

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Done, thanks for the suggestion

expected['/19968336/header-bid-tag1'][CONSTANTS.TARGETING_KEYS.AD_ID] = '24bd938435ec3fc';
expected['/19968336/header-bid-tag1'][CONSTANTS.TARGETING_KEYS.PRICE_BUCKET] = '10.00';
expected['/19968336/header-bid-tag1'][CONSTANTS.TARGETING_KEYS.SIZE] = '728x90';
expected['/19968336/header-bid-tag1']['foobar'] = '728x90';
Copy link
Collaborator

Choose a reason for hiding this comment

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

same

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Done, thanks for the suggestion

$$PREBID_GLOBAL$$._bidsReceived[0]['adserverTargeting'][CONSTANTS.TARGETING_KEYS.AD_ID] = '233bcbee889d46d';
$$PREBID_GLOBAL$$._bidsReceived[0]['adserverTargeting'][CONSTANTS.TARGETING_KEYS.PRICE_BUCKET] = '10.00';
$$PREBID_GLOBAL$$._bidsReceived[0]['adserverTargeting'][CONSTANTS.TARGETING_KEYS.SIZE] = '300x250';
$$PREBID_GLOBAL$$._bidsReceived[0]['adserverTargeting'][CONSTANTS.TARGETING_KEYS.DEAL + '_appnexusDummyName'] = '1234';
Copy link
Collaborator

Choose a reason for hiding this comment

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

same

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Done, thanks for the suggestion

src/targeting.js Show resolved Hide resolved
src/targeting.js Outdated Show resolved Hide resolved
src/native.js Show resolved Hide resolved
@harpere harpere added needs review needs update needs 2nd review Core module updates require two approvals from the core team labels Sep 28, 2018
Copy link
Collaborator

@harpere harpere left a comment

Choose a reason for hiding this comment

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

changes look LGTM, but there are merge conflicts that need to be fixed/resolved.

@pm-harshad-mane
Copy link
Contributor Author

Hello @harpere ,

I have resolved conflicts and eslint suggestions.
I think we are good to go.

@pm-harshad-mane
Copy link
Contributor Author

Hello @harpere and @jsnellbaker ,
Am I missing anything? is something pending from my side?

Copy link
Collaborator

@jsnellbaker jsnellbaker left a comment

Choose a reason for hiding this comment

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

@pm-harshad-mane Thanks for putting together these changes. I gave them a test try and they seem to be working. I did see something that should be reviewed (mainly syntax thing). Please take a look when you can.

@@ -720,7 +719,7 @@ describe('Unit: Prebid Module', function () {
ajaxStub.restore();
});

it('should get correct hb_pb with cpm between 0 - 5', function () {
it('should get correct ' + CONSTANTS.TARGETING_KEYS.PRICE_BUCKET + ' with cpm between 0 - 5', () => {
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 change back the various () => { references to the , function() { variant? These were implemented to make the unit tests more compliant with Mocha.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Hello @jsnellbaker ,
sure, let me check.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Hello @jsnellbaker ,
I have made these changes.

Copy link
Collaborator

@jsnellbaker jsnellbaker left a comment

Choose a reason for hiding this comment

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

LGTM

@harpere harpere added LGTM and removed needs 2nd review Core module updates require two approvals from the core team needs update labels Oct 2, 2018
@harpere harpere merged commit 4e8955e into prebid:master Oct 2, 2018
AlessandroDG pushed a commit to simplaex/Prebid.js that referenced this pull request Oct 17, 2018
* Make size mapping mediaType aware (prebid#3134)

* make sizeMapping mediaTypes aware

* no sizeMapping if the only mediaType is not banner

* better logging for size mapping and no auction when no bids

* fix size mapping tests to ignore filter results (which are only for logging)

* Making targeting keys configurable (prebid#3140)

* moved NATIVE_KEYS to constants

* Changed TARGETING_KEYS from array to an array

- Now you can change key names
- Made changes in code at auction.js and targeting.js to handle the TARGETING_KEYS object than array

* fixed aauctionmanager test cases for dynamic targeting key names

* fixed native test cases for dynamic targeting key names

* fixed test cases of targeting for dynamic targeting key names

* in-dev changes

* replace old keys with new keys

* fixed a typo

* fixed a unit case in utils

* updated convertTargetingsFromOldToNew in fixtures

this will now replace partner specific keys as well as per config

* removed a log

* keep test case as it was

* improved convertTargetingsFromOldToNew in fixtures

* Capitalized key names in TARGETING_KEYS object; not values in object

* using computed properties

* using computed properties

* fixed eslint suggestion

* fixed eslint suggestions

* keeping unit tests more compliant with Mocha

* 4235 prebid endpoint return empty array instead of 204 when no bids returned (prebid#3136)

* corrected user sync type

* add alias pxyz
add version to endpoint
add validation for 204 bid response

* add validation with serverResponse is undefined
fix test for 204 (no bid response)

* remove package lock

* restore package-lock

* update gulp 4 notes on README (prebid#3154)

* Add teads bidder adapter (prebid#3135)

* Add teads bidder adapter

* Remove bidder code & tests arrow functions

* Added the option to pass a deal id instead of a partnership id (prebid#3148)

* increment Prebid version

* Prebid 1.26.0 release

* increment prebid version

* implement find polyfill in unit test (prebid#3156)

* InvibesBidAdapter - gdpr support (prebid#3151)

* removed `cookieSyncDelay` from `config` since we have more configuration options now with the `userSync` object (prebid#3142)

* Livewrapped bid and analytics adapter (prebid#3157)

* Livewrapped bid and analytics adapter

* Fixed some tests for browser compatibility

* Fixed some tests for browser compatibility

* Changed analytics adapter code name

* Fix double quote in debug message

* Adding appnexus debug via cookie/params (prebid#3152)

* adding appnexus debug via cookie/params

* removing nested object

* added documentation link and removed useless conditional

* fix lint error on documentation message

* Add RSA validation to Criteo FastBid (prebid#3110)

* Pass Prebid version to Criteo direct bidder

* Update Criteo profile IDs

* Add RSA verification to Criteo FastBid

* Update package-lock with jsencrypt and crypto-js

* Replacing all arrow functions in Mocha function calls

* Update Adapter Version to 14

* Added support for user syncing pixel (prebid#3092)

* Added Polymorph adapter

* Cleaned up code

* Updated var to let

* Updated with mediaType

* Updated tests

* Fixed tests

* Updated polymorph adapter to support cookie syncing and network key integration

* Fixed parens for lint

* Fixed a bug related to network_key approach

* Fixed double negation warning

* Updated tests for network_key

* Added bidId as cache buster and updated tests

* Fixed tests

* Small bugfix and cleanup for Prebid Server OpenRTB code (prebid#3113)

* change bid map to bid_id map and clean up openrtb in pbs

* add src to bids in bid request when known

* Revert "Adding appnexus debug via cookie/params" (prebid#3164)

* Revert "Small bugfix and cleanup for Prebid Server OpenRTB code (prebid#3113)"

This reverts commit a1f07e9.

* Revert "Added support for user syncing pixel (prebid#3092)"

This reverts commit 8fdf61d.

* Revert "Add RSA validation to Criteo FastBid (prebid#3110)"

This reverts commit e72e2dc.

* Revert "Adding appnexus debug via cookie/params (prebid#3152)"

This reverts commit 4797ea2.

* add bid ttl to cache call (prebid#3163)

* Render outstream safeframe  (prebid#3159)

* render outstream safeframe

* move code to Renderer module

* some more logic to move

* Prebid 1.27.0 Release

* increment Prebid version

* rubiconBidAdapter - Checking FPD values are defined before toString() (prebid#3165)

* rubiconBidAdapter - Checking FPD values are defined before toString()
                  - Added two tests for this behavior

* Removing unused variable

* changed to compare against null

added some null params to the tests to verify

* Adding mediaType param to parseSizes in order to ALWAYS get the correct parse Size method correct. (prebid#3166)

* PubMatic to support DigiTrust Id passing (prebid#3160)

* in-dev changes

* included config

* Unit test cases for DigitrustId passing in PubMatic bid adapter

* eslint fixes

* removed a comment

* replaced "() => {" with "() => {"

* OpenX Adapter: Added support for pubcid (prebid#3158)

* use version replace rather than package.json in widespace (prebid#3143)

* Trafficroots Resubmit (prebid#3141)

circleci is still failing, but I cannot find a workaround for this PR at the moment

* Rubicon skip video request in mutlti format when video is not setup (prebid#3167)

* Update rubiconBidAdapter.js

* OpenXOutstream Bid Adapter (prebid#3153)

* adds openxoutstreamadapter files

* cleans up url, adds bidder config and version, removes unused code

* updates template ad response

* remove final unused custom param code

* add openrtb to list of params again.

* add payload back so we can read bidId

* extra checks for cpm (pub_rev)

* adds unit tests

* adds unit tests

* update md page

* undo openx adapter space changes from autosave

* undo openx adapter space changes from autosave

* test cleanup

* test cleanup

* update md file

* update example page params

* remove sneaky console.log

* return false

* adds yieldmo to the md. remove useless docEl assignment

* remove useless docEl assignments

* move crid and adid to constants

* fix test

* remove another useless variable assignment caught by LGTM

* changes CR_ID. moves tdoc to within if scope

* updates crid on test

* use more constants and use crid for lfid

* remove superfluous trailing argument

* adds viewport meta tag to header. removes unnecessary string interpolation.

* move ad_id to a string

* undo changes for pacakge-lock

* fixes lfid to lfId, pID to pId

* fixes lfid to lfId, pID to pId

* remove rti:1

* adds openx maintainer email

* improves additional data passed to the handler in AuctionInit and AuctionEnd events (prebid#3168)

* removing cookieSet (prebid#3175)

* removing cookieSet

* removing blank line

* not including src/cookie anymore

* Removed deprecated priceType option (+tests) (prebid#3170)

* Improve Digital adapter: set dealID based on buying type (prebid#3182)

* Adding GDPR support

* Always drop user syncs when available

* Set dealID based on buying type

* disabling tests that are failing in safari (prebid#3186)

* Prebid 1.28.0 Release

* Increment pre version

* RVR-1124 Setup initial skeleton analytics adapter that can send something.

Approved-by: Alessandro Di Giovanni <alessandro.digiovanni@gamegenetics.de>

* Formatted auction/events data to fit needed schema.

* RVR-1135 fetched device data.

* Applied feedback.

* Applied feedback.

* Fetched core.

* Added click handler for reporting banners click events.

* Applied analyzer for reporting displayed impressions.

* Applied feedback.

* Merged in RVR-1214-invoke-handlers-on-rendering (pull request #7)

RVR-1214 Invoke handlers on rendering

* RVR-1214 Invoked handlers right after ad is displayed.

* Applied feedback.

Approved-by: Alessandro Di Giovanni <alessandro.digiovanni@gamegenetics.de>

* Merged in RVR-1192-configuration-global-parameters (pull request #8)

RVR-1192 Configuration/Global parameters

Approved-by: Alessandro Di Giovanni <alessandro.digiovanni@gamegenetics.de>

* Merged in RVR-1181-Prebid-js-unit-tests-setup (pull request #6)

RVR-1181 Prebid.js Unit tests setup

Approved-by: Alessandro Di Giovanni <alessandro.digiovanni@gamegenetics.de>

* Merged in RVR-1247-additional-data-to-impression-records (pull request #9)

RVR-1247 Additional data to impression records

Approved-by: Alessandro Di Giovanni <alessandro.digiovanni@gamegenetics.de>

* Merged in RVR-1249-add-requestedbids-to-auction (pull request #10)

RVR-1249 Add requested bids to auction object request.

Approved-by: Alessandro Di Giovanni <alessandro.digiovanni@gamegenetics.de>

* Merged in RVR-1261-fix-tests (pull request prebid#11)

RVR-1261 fix tests

* RVR-1261 Secured adapter from no containers configuration. And changed fetching URL.

* RVR-1261 Added event check for request and changed some names.

* Applied feedback.

Approved-by: Alessandro Di Giovanni <alessandro.digiovanni@gamegenetics.de>

* RVR-1352 analytics adapter bugs

Approved-by: Alessandro Di Giovanni <alessandro.digiovanni@gamegenetics.de>

* Fixed bug with geolocation notification.

* fixed missing bracket.

* one more fix.

* RVR-1357 Different optimisation responses & tracking into auction event

* RVR-1852 - Add content type and hardcoded auth headers

(cherry picked from commit 4def881)

* RVR-1852 - Change tracker host

* RVR-1852 - Override content type instead of adding header

* districtmDMX new adapter (prebid#2765)

* adding DMX

test @97%, two files added one updated

* Update districtm_spec.js

* Update districtmDMX.js

* adding all districtm needed file

* remove legacy file

* remove typo || 0 in the test method

* force default to return a valid width and height

* update unit test code for failing test

* changed class for an object

* remove package-lock.json

* upgrade to gulp 4 (prebid#2930)

* upgrade to gulp 4

* update circleci config

* removed some tasks and added notest flag

* update lint dependency for test task

* RVR-1914 Consistent data types in events

Also removes undefined and null properties in audience events

* Merged in RVR-1883-Add-Basic-Access-Authentication (pull request prebid#17)

RVR-1883 Add Basic Access Authentication

* RVR-1914 - Rename functions

* RVR-1914 - Set default total_duration to null in bid response

* RVR-1883 - Use RIVR_CLIENT_AUTH_TOKEN global variable for Auth token

* RVR-1883 - Restore stub after every test not just at the end

* RVR-1883 - Remove commented code

* Increase code coverage

* Fix for IE 11.0.0 and Safari 8.0.8 - includes()

Use core-js includes function for array
ghost pushed a commit to devunrulymedia/Prebid.js that referenced this pull request Jan 30, 2019
* moved NATIVE_KEYS to constants

* Changed TARGETING_KEYS from array to an array

- Now you can change key names
- Made changes in code at auction.js and targeting.js to handle the TARGETING_KEYS object than array

* fixed aauctionmanager test cases for dynamic targeting key names

* fixed native test cases for dynamic targeting key names

* fixed test cases of targeting for dynamic targeting key names

* in-dev changes

* replace old keys with new keys

* fixed a typo

* fixed a unit case in utils

* updated convertTargetingsFromOldToNew in fixtures

this will now replace partner specific keys as well as per config

* removed a log

* keep test case as it was

* improved convertTargetingsFromOldToNew in fixtures

* Capitalized key names in TARGETING_KEYS object; not values in object

* using computed properties

* using computed properties

* fixed eslint suggestion

* fixed eslint suggestions

* keeping unit tests more compliant with Mocha
pedrolopezmrf pushed a commit to Marfeel/Prebid.js that referenced this pull request Mar 18, 2019
* moved NATIVE_KEYS to constants

* Changed TARGETING_KEYS from array to an array

- Now you can change key names
- Made changes in code at auction.js and targeting.js to handle the TARGETING_KEYS object than array

* fixed aauctionmanager test cases for dynamic targeting key names

* fixed native test cases for dynamic targeting key names

* fixed test cases of targeting for dynamic targeting key names

* in-dev changes

* replace old keys with new keys

* fixed a typo

* fixed a unit case in utils

* updated convertTargetingsFromOldToNew in fixtures

this will now replace partner specific keys as well as per config

* removed a log

* keep test case as it was

* improved convertTargetingsFromOldToNew in fixtures

* Capitalized key names in TARGETING_KEYS object; not values in object

* using computed properties

* using computed properties

* fixed eslint suggestion

* fixed eslint suggestions

* keeping unit tests more compliant with Mocha
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants