Skip to content

Commit 8d5145c

Browse files
adding flag
1 parent 0eaba0f commit 8d5145c

File tree

4 files changed

+23
-16
lines changed

4 files changed

+23
-16
lines changed

packages/destination-actions/src/destinations/amazon-amc/function.ts

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { JSONLikeObject, MultiStatusResponse, PayloadValidationError, RequestCli
33
import { AudienceSettings, Settings } from './generated-types'
44
import type { Payload } from './syncAudiencesToDSP/generated-types'
55
import { MaybeString, AudienceRecord, UserConsent, HashedPIIObject } from './types'
6-
import { CONSTANTS, RecordsResponseType, REGEX_EXTERNALUSERID, COUNTRY_CODES } from './utils'
6+
import { FLAG_CONSENT_REQUIRED, CONSTANTS, RecordsResponseType, REGEX_EXTERNALUSERID, COUNTRY_CODES } from './utils'
77
import { processHashing } from '../../lib/hashing-utils'
88

99
function hasStringValue(value: MaybeString): boolean {
@@ -42,9 +42,10 @@ export async function processPayload(
4242
request: RequestClient,
4343
settings: Settings,
4444
payload: Payload[],
45-
audienceSettings: AudienceSettings
45+
audienceSettings: AudienceSettings,
46+
features?: Record<string, boolean>
4647
) {
47-
const payloadRecord = createPayloadToUploadRecords(payload, audienceSettings)
48+
const payloadRecord = createPayloadToUploadRecords(payload, audienceSettings, features)
4849
// Regular expression to find a audienceId numeric string and replace the quoted audienceId string with an unquoted number
4950
const payloadString = JSON.stringify(payloadRecord).replace(/"audienceId":"(\d+)"/, '"audienceId":$1')
5051

@@ -79,7 +80,8 @@ export async function processPayload(
7980
*/
8081
export function createPayloadToUploadRecords(
8182
payloads: Payload[],
82-
audienceSettings: AudienceSettings
83+
audienceSettings: AudienceSettings,
84+
features?: Record<string, boolean>
8385
) {
8486
const records: AudienceRecord[] = []
8587
const { audienceId } = payloads[0]
@@ -88,14 +90,14 @@ export function createPayloadToUploadRecords(
8890
if (!REGEX_EXTERNALUSERID.test(payload.externalUserId)) {
8991
return // Skip to the next iteration
9092
}
91-
const userConsent = getUserConsent(payload.consent, audienceSettings.countryCode)
93+
const userConsent = features?.[FLAG_CONSENT_REQUIRED] ? getUserConsent(payload.consent, audienceSettings.countryCode) : undefined
9294
const hashedPII = hashedPayload(payload)
9395
const payloadRecord: AudienceRecord = {
9496
externalUserId: payload.externalUserId,
9597
countryCode: audienceSettings.countryCode,
9698
action: payload.event_name == 'Audience Entered' ? CONSTANTS.CREATE : CONSTANTS.DELETE,
9799
hashedPII: [hashedPII],
98-
userConsent
100+
...(userConsent ? { userConsent } : {})
99101
}
100102
records.push(payloadRecord)
101103
})
@@ -115,7 +117,8 @@ export function createPayloadToUploadRecords(
115117
function validateAndPreparePayload(
116118
payloads: Payload[],
117119
multiStatusResponse: MultiStatusResponse,
118-
audienceSettings: AudienceSettings
120+
audienceSettings: AudienceSettings,
121+
features?: Record<string, boolean>
119122
) {
120123
const validPayloadIndicesBitmap: number[] = []
121124
const filteredPayloads: AudienceRecord[] = []
@@ -133,7 +136,7 @@ function validateAndPreparePayload(
133136
let userConsent: UserConsent | undefined
134137

135138
try {
136-
userConsent = getUserConsent(payload.consent, audienceSettings.countryCode)
139+
userConsent = features?.[FLAG_CONSENT_REQUIRED] ? getUserConsent(payload.consent, audienceSettings.countryCode) : undefined
137140
}
138141
catch (error) {
139142
multiStatusResponse.setErrorResponseAtIndex(originalBatchIndex, {
@@ -151,7 +154,7 @@ function validateAndPreparePayload(
151154
countryCode: audienceSettings.countryCode,
152155
action: payload.event_name == 'Audience Entered' ? CONSTANTS.CREATE : CONSTANTS.DELETE,
153156
hashedPII: [hashedPII],
154-
userConsent
157+
...(userConsent ? { userConsent } : {})
155158
}
156159
filteredPayloads.push(payloadRecord)
157160
validPayloadIndicesBitmap.push(originalBatchIndex)
@@ -177,13 +180,15 @@ export async function processBatchPayload(
177180
request: RequestClient,
178181
settings: Settings,
179182
payloads: Payload[],
180-
audienceSettings: AudienceSettings
183+
audienceSettings: AudienceSettings,
184+
features?: Features
181185
) {
182186
const multiStatusResponse = new MultiStatusResponse()
183187
const { filteredPayloads, validPayloadIndicesBitmap } = validateAndPreparePayload(
184188
payloads,
185189
multiStatusResponse,
186-
audienceSettings
190+
audienceSettings,
191+
features
187192
)
188193

189194
if (!filteredPayloads.length) {

packages/destination-actions/src/destinations/amazon-amc/syncAudiencesToDSP/index.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -209,11 +209,11 @@ const action: ActionDefinition<Settings, Payload> = {
209209
minimum: 1500
210210
}
211211
},
212-
perform: (request, { settings, payload, audienceSettings }) => {
213-
return processPayload(request, settings, [payload], audienceSettings as AudienceSettings)
212+
perform: (request, { settings, payload, audienceSettings, features }) => {
213+
return processPayload(request, settings, [payload], audienceSettings as AudienceSettings, features)
214214
},
215-
performBatch: async (request, { settings, payload: payloads, audienceSettings }) => {
216-
return await processBatchPayload(request, settings, payloads, audienceSettings as AudienceSettings)
215+
performBatch: async (request, { settings, payload: payloads, audienceSettings, features }) => {
216+
return await processBatchPayload(request, settings, payloads, audienceSettings as AudienceSettings, features)
217217
}
218218
}
219219

packages/destination-actions/src/destinations/amazon-amc/types.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ export interface AudienceRecord {
5252
externalUserId: string
5353
countryCode: string
5454
action: string
55-
userConsent: UserConsent
55+
userConsent?: UserConsent
5656
}
5757

5858
export interface UserConsent {

packages/destination-actions/src/destinations/amazon-amc/utils.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,8 @@ export const CONSTANTS = {
4949
}
5050
export const CURRENCY = ['USD', 'CAD', 'JPY', 'GBP', 'EUR', 'SAR', 'AUD', 'AED', 'CNY', 'MXN', 'INR', 'SEK', 'TRY']
5151

52+
export const FLAG_CONSENT_REQUIRED = 'actions-amazon-amc-consent-required'
53+
5254
export const COUNTRY_CODES = [
5355
"AD", "AE", "AF", "AG", "AI", "AL", "AM", "AN", "AO", "AQ", "AR", "AS", "AT", "AU", "AW", "AX", "AZ", "BA", "BB", "BD", "BE", "BF",
5456
"BG", "BH", "BI", "BJ", "BL", "BM", "BN", "BO", "BQ", "BR", "BS", "BT", "BV", "BW", "BY", "BZ", "CA", "CC", "CD", "CF", "CG", "CH",

0 commit comments

Comments
 (0)