From d953e3a4140469fd7561ec0a7295d74021b22f6f Mon Sep 17 00:00:00 2001 From: Roman Filippov Date: Mon, 9 Mar 2020 21:50:06 +0700 Subject: [PATCH] fix: adds countryCode to AmazonMarketplaceAdvertising Adds countryCode prop to AmazonMarketplaceAdvertising, that is separate from Amazon Marketplace countryCode, as it uses different values. BREAKING CHANGE: Adds countryCode to AmazonMarketplaceAdvertising that is different from AmazonMarketplaceCountryCode enum. Closes https://github.com/ScaleLeap/amazon-marketplaces/issues/122 --- README.md | 1 + src/amazon-marketplace.ts | 30 +++++++++++++++++++++++++++++ src/european-advertising-factory.ts | 25 ++++++++++++++++++++++++ src/marketplaces/AE.ts | 2 ++ src/marketplaces/AU.ts | 2 ++ src/marketplaces/DE.ts | 18 +++-------------- src/marketplaces/ES.ts | 5 +++-- src/marketplaces/FR.ts | 5 +++-- src/marketplaces/GB.ts | 2 ++ src/marketplaces/IT.ts | 5 +++-- src/marketplaces/JP.ts | 2 ++ src/marketplaces/US.ts | 2 ++ 12 files changed, 78 insertions(+), 21 deletions(-) create mode 100644 src/european-advertising-factory.ts diff --git a/README.md b/README.md index f6c30d78..8faadbe6 100644 --- a/README.md +++ b/README.md @@ -81,6 +81,7 @@ const US = findAmazonMarketplaceOrFail('countryCode', AmazonMarketplaceAdvertisi "webServiceUri": "https://mws.amazonservices.ca", "advertising": { "uri": "https://advertising-api.amazon.com", + "countryCode": "CA", "bids": { "sponsoredBrands": { "min": 10, diff --git a/src/amazon-marketplace.ts b/src/amazon-marketplace.ts index dfabd0df..b7535f28 100644 --- a/src/amazon-marketplace.ts +++ b/src/amazon-marketplace.ts @@ -40,6 +40,24 @@ export enum AmazonMarketplaceAdvertisingCurrency { USD = 'USD', } +/** + * Amazon Marketplace Advertising country code enum. + * + * The country code identifying the publisher(s) on which ads will run. + */ +export enum AmazonMarketplaceAdvertisingCountryCode { + AE = 'AE', + AU = 'AU', + CA = 'CA', + DE = 'DE', + ES = 'ES', + FR = 'FR', + IT = 'IT', + JP = 'JP', + UK = 'UK', // Not a real country code, but such is life. See https://github.com/ScaleLeap/amazon-marketplaces/issues/122 + US = 'US', +} + /** * Time Zone enum. */ @@ -67,6 +85,18 @@ export interface AmazonMarketplaceAdvertising { */ readonly timeZone: AmazonMarketplaceAdvertisingTimeZone + /** + * The country code identifying the publisher(s) on which ads will run. + * + * [ISO 3166-1](https://en.wikipedia.org/wiki/ISO_3166-1) with the exception of UK, which uses + * `UK` instead of `GB`. + * + * @example + * + * AmazonMarketplaceAdvertisingCountryCode.CA + */ + readonly countryCode: AmazonMarketplaceAdvertisingCountryCode + /** * Minimum and maximum bids for each advertising type. */ diff --git a/src/european-advertising-factory.ts b/src/european-advertising-factory.ts new file mode 100644 index 00000000..964cbeb7 --- /dev/null +++ b/src/european-advertising-factory.ts @@ -0,0 +1,25 @@ +import { + AmazonMarketplaceAdvertisingCountryCode, + AmazonMarketplaceAdvertisingTimeZone, + AmazonMarketplaceAdvertising, +} from './amazon-marketplace' + +export function europeanAdvertisingFactory( + countryCode: AmazonMarketplaceAdvertisingCountryCode, +): AmazonMarketplaceAdvertising { + return { + uri: 'https://advertising-api-eu.amazon.com', + countryCode, + bids: { + sponsoredBrands: { + min: 10, + max: 3900, + }, + sponsoredProducts: { + min: 2, + max: 100000, + }, + }, + timeZone: AmazonMarketplaceAdvertisingTimeZone.EUROPE_PARIS, + } +} diff --git a/src/marketplaces/AE.ts b/src/marketplaces/AE.ts index c9cd99a1..dfb387e8 100644 --- a/src/marketplaces/AE.ts +++ b/src/marketplaces/AE.ts @@ -3,6 +3,7 @@ import { AmazonMarketplaceAdvertisingTimeZone, AmazonMarketplaceCountryCode, AmazonMarketplaceAdvertisingCurrency, + AmazonMarketplaceAdvertisingCountryCode, } from '../amazon-marketplace' export const AE = new AmazonMarketplace({ @@ -14,6 +15,7 @@ export const AE = new AmazonMarketplace({ webServiceUri: 'https://mws.amazonservices.ae', advertising: { uri: 'https://advertising-api-eu.amazon.com', + countryCode: AmazonMarketplaceAdvertisingCountryCode.AE, bids: { sponsoredBrands: { min: 24, diff --git a/src/marketplaces/AU.ts b/src/marketplaces/AU.ts index ba08b679..8072d176 100644 --- a/src/marketplaces/AU.ts +++ b/src/marketplaces/AU.ts @@ -3,6 +3,7 @@ import { AmazonMarketplaceAdvertisingTimeZone, AmazonMarketplaceCountryCode, AmazonMarketplaceAdvertisingCurrency, + AmazonMarketplaceAdvertisingCountryCode, } from '../amazon-marketplace' export const AU = new AmazonMarketplace({ @@ -14,6 +15,7 @@ export const AU = new AmazonMarketplace({ webServiceUri: 'https://mws.amazonservices.com.au', advertising: { uri: 'https://advertising-api-fe.amazon.com', + countryCode: AmazonMarketplaceAdvertisingCountryCode.AU, bids: { sponsoredBrands: { min: 10, diff --git a/src/marketplaces/DE.ts b/src/marketplaces/DE.ts index 5757e465..9b508e3b 100644 --- a/src/marketplaces/DE.ts +++ b/src/marketplaces/DE.ts @@ -1,9 +1,10 @@ import { AmazonMarketplace, - AmazonMarketplaceAdvertisingTimeZone, AmazonMarketplaceCountryCode, AmazonMarketplaceAdvertisingCurrency, + AmazonMarketplaceAdvertisingCountryCode, } from '../amazon-marketplace' +import { europeanAdvertisingFactory } from '../european-advertising-factory' export const DE = new AmazonMarketplace({ countryCode: AmazonMarketplaceCountryCode.DE, @@ -12,18 +13,5 @@ export const DE = new AmazonMarketplace({ name: 'Germany', uri: 'https://www.amazon.de', webServiceUri: 'https://mws-eu.amazonservices.com', - advertising: { - uri: 'https://advertising-api-eu.amazon.com', - bids: { - sponsoredBrands: { - min: 10, - max: 3900, - }, - sponsoredProducts: { - min: 2, - max: 100000, - }, - }, - timeZone: AmazonMarketplaceAdvertisingTimeZone.EUROPE_PARIS, - }, + advertising: europeanAdvertisingFactory(AmazonMarketplaceAdvertisingCountryCode.DE), }) diff --git a/src/marketplaces/ES.ts b/src/marketplaces/ES.ts index 7530d112..2d35e3e8 100644 --- a/src/marketplaces/ES.ts +++ b/src/marketplaces/ES.ts @@ -2,8 +2,9 @@ import { AmazonMarketplace, AmazonMarketplaceCountryCode, AmazonMarketplaceAdvertisingCurrency, + AmazonMarketplaceAdvertisingCountryCode, } from '../amazon-marketplace' -import { DE } from './DE' +import { europeanAdvertisingFactory } from '../european-advertising-factory' export const ES = new AmazonMarketplace({ countryCode: AmazonMarketplaceCountryCode.ES, @@ -12,5 +13,5 @@ export const ES = new AmazonMarketplace({ name: 'Spain', uri: 'https://www.amazon.es', webServiceUri: 'https://mws-eu.amazonservices.com', - advertising: Object.assign({}, DE.advertising), + advertising: europeanAdvertisingFactory(AmazonMarketplaceAdvertisingCountryCode.ES), }) diff --git a/src/marketplaces/FR.ts b/src/marketplaces/FR.ts index 481fa64c..5fed67e2 100644 --- a/src/marketplaces/FR.ts +++ b/src/marketplaces/FR.ts @@ -2,8 +2,9 @@ import { AmazonMarketplace, AmazonMarketplaceCountryCode, AmazonMarketplaceAdvertisingCurrency, + AmazonMarketplaceAdvertisingCountryCode, } from '../amazon-marketplace' -import { DE } from './DE' +import { europeanAdvertisingFactory } from '../european-advertising-factory' export const FR = new AmazonMarketplace({ countryCode: AmazonMarketplaceCountryCode.FR, @@ -12,5 +13,5 @@ export const FR = new AmazonMarketplace({ name: 'France', uri: 'https://www.amazon.fr', webServiceUri: 'https://mws-eu.amazonservices.com', - advertising: Object.assign({}, DE.advertising), + advertising: europeanAdvertisingFactory(AmazonMarketplaceAdvertisingCountryCode.FR), }) diff --git a/src/marketplaces/GB.ts b/src/marketplaces/GB.ts index 43651dde..1fca434a 100644 --- a/src/marketplaces/GB.ts +++ b/src/marketplaces/GB.ts @@ -3,6 +3,7 @@ import { AmazonMarketplaceAdvertisingTimeZone, AmazonMarketplaceCountryCode, AmazonMarketplaceAdvertisingCurrency, + AmazonMarketplaceAdvertisingCountryCode, } from '../amazon-marketplace' import { DE } from './DE' @@ -19,6 +20,7 @@ export const GB = new AmazonMarketplace({ webServiceUri: DE.webServiceUri, advertising: { uri: DE.advertising.uri, + countryCode: AmazonMarketplaceAdvertisingCountryCode.UK, bids: { sponsoredBrands: { min: 10, diff --git a/src/marketplaces/IT.ts b/src/marketplaces/IT.ts index bcc2684a..94f2869e 100644 --- a/src/marketplaces/IT.ts +++ b/src/marketplaces/IT.ts @@ -2,8 +2,9 @@ import { AmazonMarketplace, AmazonMarketplaceCountryCode, AmazonMarketplaceAdvertisingCurrency, + AmazonMarketplaceAdvertisingCountryCode, } from '../amazon-marketplace' -import { DE } from './DE' +import { europeanAdvertisingFactory } from '../european-advertising-factory' export const IT = new AmazonMarketplace({ countryCode: AmazonMarketplaceCountryCode.IT, @@ -12,5 +13,5 @@ export const IT = new AmazonMarketplace({ name: 'Italy', uri: 'https://www.amazon.it', webServiceUri: 'https://mws-eu.amazonservices.com', - advertising: Object.assign({}, DE.advertising), + advertising: europeanAdvertisingFactory(AmazonMarketplaceAdvertisingCountryCode.DE), }) diff --git a/src/marketplaces/JP.ts b/src/marketplaces/JP.ts index 3a26728b..fe00b400 100644 --- a/src/marketplaces/JP.ts +++ b/src/marketplaces/JP.ts @@ -3,6 +3,7 @@ import { AmazonMarketplaceAdvertisingTimeZone, AmazonMarketplaceCountryCode, AmazonMarketplaceAdvertisingCurrency, + AmazonMarketplaceAdvertisingCountryCode, } from '../amazon-marketplace' export const JP = new AmazonMarketplace({ @@ -14,6 +15,7 @@ export const JP = new AmazonMarketplace({ webServiceUri: 'https://mws.amazonservices.jp', advertising: { uri: 'https://advertising-api-fe.amazon.com', + countryCode: AmazonMarketplaceAdvertisingCountryCode.JP, bids: { sponsoredBrands: { min: 1000, diff --git a/src/marketplaces/US.ts b/src/marketplaces/US.ts index ca13d8cf..af663e5f 100644 --- a/src/marketplaces/US.ts +++ b/src/marketplaces/US.ts @@ -3,6 +3,7 @@ import { AmazonMarketplaceAdvertisingTimeZone, AmazonMarketplaceCountryCode, AmazonMarketplaceAdvertisingCurrency, + AmazonMarketplaceAdvertisingCountryCode, } from '../amazon-marketplace' export const US = new AmazonMarketplace({ @@ -14,6 +15,7 @@ export const US = new AmazonMarketplace({ webServiceUri: 'https://mws.amazonservices.com', advertising: { uri: 'https://advertising-api.amazon.com', + countryCode: AmazonMarketplaceAdvertisingCountryCode.US, bids: { sponsoredBrands: { min: 10,