@segment/action-destinations 3.472.1-staging-264bd0c81.0 → 3.472.1-staging-faefdc6b4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -5,5 +5,7 @@ import { StatsClient } from '@segment/actions-core/destination-kit';
5
5
  export declare function gen_customer_taxonomy_payload(settings: Settings): string;
6
6
  export declare function gen_segment_subtaxonomy_payload(payload: YahooSubTaxonomy): string;
7
7
  export declare function gen_random_id(length: number): string;
8
+ export declare function generate_taxonomy_jwt(client_id: string, client_secret: string): string;
9
+ export declare function get_taxonomy_access_token(client_id: string, client_secret: string, request: RequestClient): Promise<string>;
8
10
  export declare function gen_oauth1_signature(client_key: string, client_secret: string, method: string, url: string): string;
9
11
  export declare function update_taxonomy(engage_space_id: string, tx_creds: CredsObj, request: RequestClient, body_form_data: string, statsClient: StatsClient | undefined, statsTags: string[] | undefined): Promise<any>;
@@ -3,6 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.gen_customer_taxonomy_payload = gen_customer_taxonomy_payload;
4
4
  exports.gen_segment_subtaxonomy_payload = gen_segment_subtaxonomy_payload;
5
5
  exports.gen_random_id = gen_random_id;
6
+ exports.generate_taxonomy_jwt = generate_taxonomy_jwt;
7
+ exports.get_taxonomy_access_token = get_taxonomy_access_token;
6
8
  exports.gen_oauth1_signature = gen_oauth1_signature;
7
9
  exports.update_taxonomy = update_taxonomy;
8
10
  const crypto_1 = require("crypto");
@@ -36,6 +38,48 @@ function gen_random_id(length) {
36
38
  }
37
39
  return random_id.join('');
38
40
  }
41
+ function generate_taxonomy_jwt(client_id, client_secret) {
42
+ const random_id = gen_random_id(24);
43
+ const current_time = Math.floor(new Date().getTime() / 1000);
44
+ const url = 'https://id.b2b.yahooincapis.com/zts/v1';
45
+ const jwt_payload = {
46
+ iss: client_id,
47
+ sub: client_id,
48
+ aud: url,
49
+ jti: random_id,
50
+ exp: current_time + 3600,
51
+ iat: current_time
52
+ };
53
+ const jwt_header = {
54
+ alg: 'HS256',
55
+ typ: 'JWT'
56
+ };
57
+ const jwt_header_encoded = Buffer.from(JSON.stringify(jwt_header)).toString('base64');
58
+ const jwt_payload_encoded = Buffer.from(JSON.stringify(jwt_payload)).toString('base64');
59
+ const jwt_head_payload = jwt_header_encoded + '.' + jwt_payload_encoded;
60
+ const hash = (0, crypto_1.createHmac)('sha256', client_secret);
61
+ const signature = hash.update(jwt_head_payload).digest('base64');
62
+ const jwt = jwt_head_payload + '.' + signature;
63
+ return jwt;
64
+ }
65
+ async function get_taxonomy_access_token(client_id, client_secret, request) {
66
+ const jwt = generate_taxonomy_jwt(client_id, client_secret);
67
+ const tokenResponse = await request('https://id.b2b.yahooincapis.com/zts/v1/oauth2/token', {
68
+ method: 'POST',
69
+ headers: {
70
+ 'Content-Type': 'application/x-www-form-urlencoded',
71
+ Accept: 'application/json'
72
+ },
73
+ body: new URLSearchParams({
74
+ grant_type: 'client_credentials',
75
+ client_assertion_type: 'urn:ietf:params:oauth:client-assertion-type:jwt-bearer',
76
+ client_assertion: jwt,
77
+ scope: 'idb2b.dsp.datax:role.batch.writer'
78
+ })
79
+ });
80
+ const access_token = tokenResponse.data.access_token;
81
+ return access_token;
82
+ }
39
83
  function gen_oauth1_signature(client_key, client_secret, method, url) {
40
84
  const timestamp = Math.floor(new Date().getTime() / 1000);
41
85
  const nonce = gen_random_id(15);
@@ -52,13 +96,13 @@ async function update_taxonomy(engage_space_id, tx_creds, request, body_form_dat
52
96
  const tx_client_secret = tx_creds.tx_client_secret;
53
97
  const tx_client_key = tx_creds.tx_client_key;
54
98
  const url = `https://datax.yahooapis.com/v1/taxonomy/append${engage_space_id.length > 0 ? '/' + engage_space_id : ''}`;
55
- const oauth1_auth_string = gen_oauth1_signature(tx_client_key, tx_client_secret, 'PUT', url);
56
99
  try {
100
+ const access_token = await get_taxonomy_access_token(tx_client_key, tx_client_secret, request);
57
101
  const add_segment_node = await request(url, {
58
102
  method: 'PUT',
59
103
  body: body_form_data,
60
104
  headers: {
61
- Authorization: oauth1_auth_string,
105
+ Authorization: `Bearer ${access_token}`,
62
106
  'Content-Type': 'multipart/form-data; boundary=SEGMENT-DATA'
63
107
  }
64
108
  });
@@ -1 +1 @@
1
- {"version":3,"file":"utils-tax.js","sourceRoot":"","sources":["../../../src/destinations/yahoo-audiences/utils-tax.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils-tax.js","sourceRoot":"","sources":["../../../src/destinations/yahoo-audiences/utils-tax.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@segment/action-destinations",
3
3
  "description": "Destination Actions engine and definitions.",
4
- "version": "3.472.1-staging-264bd0c81.0",
4
+ "version": "3.472.1-staging-faefdc6b4.0",
5
5
  "repository": {
6
6
  "type": "git",
7
7
  "url": "https://github.com/segmentio/action-destinations",
@@ -47,8 +47,8 @@
47
47
  "@aws-sdk/client-sts": "3.614.0",
48
48
  "@bufbuild/protobuf": "^2.2.3",
49
49
  "@segment/a1-notation": "^2.1.4",
50
- "@segment/actions-core": "^3.164.0",
51
- "@segment/actions-shared": "^1.147.0",
50
+ "@segment/actions-core": "3.164.1-staging-faefdc6b4.0",
51
+ "@segment/actions-shared": "1.147.1-staging-faefdc6b4.0",
52
52
  "@types/node": "^22.13.1",
53
53
  "ajv-formats": "^2.1.1",
54
54
  "aws4": "^1.12.0",
@@ -92,5 +92,5 @@
92
92
  "__tests__/__helpers__/"
93
93
  ]
94
94
  },
95
- "gitHead": "ae4fb114d6d93b3fe1577be8656b18bcae08cfcb"
95
+ "gitHead": "f96e8c17e9afe81fd0b5265d921753dcca961048"
96
96
  }