Skip to content

Commit f6bf119

Browse files
authored
V1.0.26 (#420)
* SMP-3191 | @token-io/core v1.0.25 * SMP-3191 | @token-io/core v1.0.25 * SMP-3191 | fixes linting issues * SMP-3191 | adds a build step to sdk-js * SMP-3191 | resolves build error * v1.0.26 - removes changes done on default headers * Added sibins revised changes
1 parent c571673 commit f6bf119

File tree

11 files changed

+118
-38
lines changed

11 files changed

+118
-38
lines changed

app/src/http/AuthHttpClient.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -270,6 +270,16 @@ class AuthHttpClient extends CoreAuthHttpClient {
270270
this._resetRequestInterceptor();
271271
}
272272

273+
/**
274+
* Populate misc headers
275+
*
276+
* @param {MiscHeaders} miscHeaders
277+
*/
278+
setMiscHeaders(miscHeaders) {
279+
this._context.miscHeaders = miscHeaders;
280+
this._resetRequestInterceptor();
281+
}
282+
273283
/**
274284
* Unlinks bank accounts previously linked by the linkAccounts call.
275285
*

app/src/main/Member.js

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ import type {
2929
BulkTransfer,
3030
BulkTransferBodyTransfers,
3131
CustomerTrackingMetadata,
32+
MiscHeaders,
3233
} from '@token-io/core';
3334

3435
/**
@@ -840,6 +841,23 @@ export default class Member extends CoreMember {
840841
});
841842
}
842843

844+
/**
845+
* Populate misc headers in token calls
846+
*
847+
* @param {MiscHeaders} miscHeaders
848+
*/
849+
setMiscHeaders(
850+
miscHeaders: MiscHeaders,
851+
): void {
852+
return Util.callSync(this.setMiscHeaders, () => {
853+
if(miscHeaders && Object.keys(miscHeaders).length === 0){
854+
throw new Error('Misc headers are empty.');
855+
}
856+
857+
this._client.setMiscHeaders(miscHeaders);
858+
});
859+
}
860+
843861
/**
844862
* Generates a blocking function to cancel a token. (Called by the payer or the redeemer)
845863
*

core/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@token-io/core",
3-
"version": "1.0.25",
3+
"version": "1.0.26",
44
"description": "Token JavaScript Core SDK",
55
"license": "ISC",
66
"author": {

core/src/http/AuthHttpClient.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,14 @@ import AuthContext from './AuthContext';
55
import config from '../config.json';
66
import ErrorHandler from './ErrorHandler';
77
import CustomerTrackingMetadataHeader from './CustomerTrackingMetadataHeader';
8+
import MiscHeaders from './MiscHeaders';
89
import DeveloperHeader from './DeveloperHeader';
910
import VersionHeader from './VersionHeader';
1011
import stringify from 'fast-json-stable-stringify';
1112
import setAdditionalHeaders from './setAdditionalHeaders';
1213

1314
/**
1415
* Client for making authenticated requests to the Token gateway.
15-
* defaultHeaders argument is for passing in optional headers like https://developer.token.io/token_rest_api_doc/content/0_-_common/request-headers.htm
1616
*/
1717
export class AuthHttpClient {
1818
constructor({
@@ -24,7 +24,6 @@ export class AuthHttpClient {
2424
loggingEnabled,
2525
customSdkUrl,
2626
customResponseInterceptor,
27-
defaultHeaders
2827
}) {
2928
if (!(config.urls[env] || customSdkUrl)) {
3029
throw new Error('Invalid environment string. Please use one of: ' +
@@ -44,7 +43,6 @@ export class AuthHttpClient {
4443
this._authHeader = new AuthHeader(customSdkUrl || config.urls[env], this);
4544

4645
this._developerKey = developerKey;
47-
this.defaultHeaders = defaultHeaders;
4846
this._resetRequestInterceptor();
4947

5048
const errorHandler = new ErrorHandler(globalRpcErrorCallback);
@@ -623,12 +621,14 @@ export class AuthHttpClient {
623621
const versionHeader = new VersionHeader();
624622
const developerHeader = new DeveloperHeader(this._developerKey);
625623
const customerTrackingMetadataHeader = new CustomerTrackingMetadataHeader();
624+
const miscHeaders = new MiscHeaders();
626625
this._interceptor = this._instance.interceptors.request.use(async request => {
627626
await this._authHeader.addAuthorizationHeader(this._memberId, request, this._context);
628627
versionHeader.addVersionHeader(request);
629628
developerHeader.addDeveloperHeader(request);
630629
customerTrackingMetadataHeader.addCustomerTrackingMetadata(request, this._context);
631-
setAdditionalHeaders(request, this.defaultHeaders);
630+
miscHeaders.setMiscHeaders(request, this._context)
631+
setAdditionalHeaders(request);
632632

633633
return request;
634634
});

core/src/http/MiscHeaders.js

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
/**
2+
* Class to add misc headers
3+
*/
4+
class MiscHeaders {
5+
/**
6+
* Adds the misc headers
7+
*
8+
* @param {Object} config - config of the request
9+
* @param {AuthContext} context - auth context for access token redemption
10+
*/
11+
setMiscHeaders(config, context) {
12+
if(context && Object.keys(context.miscHeaders).length > 0){
13+
if (context.miscHeaders.jsonError){
14+
config.headers['token-json-error'] = context.miscHeaders.jsonError;
15+
}
16+
}
17+
}
18+
}
19+
20+
export default MiscHeaders;

core/src/http/setAdditionalHeaders.js

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,4 @@
1-
export default function setAdditionalHeaders(config, defaultHeaders = {}) {
2-
// defaultHeaders are set when the http client class is instantiated and applies to all requests
3-
if (defaultHeaders) {
4-
config.headers = {...config.headers, ...defaultHeaders}
5-
}
6-
1+
export default function setAdditionalHeaders(config) {
72
// requestHeaders are set when a method fires and applies to only one request
83
if (config.requestHeaders) {
94
config.headers = {...config.headers, ...config.requestHeaders}

core/src/main/TokenClient.js

Lines changed: 2 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ export class TokenClient {
2525
ManualCryptoEngine: Class<MemoryCryptoEngine>;
2626
Util: Util;
2727
_unauthenticatedClient: HttpClient;
28-
defaultHeaders: Object;
2928

3029
constructor(options: {
3130
// Token environment to target, defaults to 'prd'
@@ -40,16 +39,13 @@ export class TokenClient {
4039
customSdkUrl?: string,
4140
// custom HTTP response interceptor for axios
4241
customResponseInterceptor?: Object,
43-
// default headers passed into a authHttpClient
44-
defaultHeaders?: Object
4542
} = {}) {
4643
this.options = options;
4744
this.options.developerKey = this.options.developerKey || config.devKey.default;
4845
this.KeyLevel = config.KeyLevel;
4946
this.Crypto = Crypto;
5047
this.MemoryCryptoEngine = MemoryCryptoEngine;
5148
this.ManualCryptoEngine = ManualCryptoEngine;
52-
this.setDefaultHeaders(options.defaultHeaders);
5349
}
5450

5551
/**
@@ -101,7 +97,7 @@ export class TokenClient {
10197
const member = new Member({
10298
memberId: response.data.memberId,
10399
cryptoEngine: engine,
104-
...this.options,
100+
...this.options
105101
});
106102
alias && await member.addAlias(alias);
107103
return member;
@@ -130,8 +126,7 @@ export class TokenClient {
130126
return new Member({
131127
memberId,
132128
cryptoEngine: engine,
133-
...this.options,
134-
defaultHeaders: this.getDefaultHeaders()
129+
...this.options
135130
});
136131
});
137132
}
@@ -186,22 +181,4 @@ export class TokenClient {
186181
return res.data.countries;
187182
});
188183
}
189-
190-
/**
191-
* Sets default headers passed into authHttpClient
192-
*
193-
* @param defaultHeaders - object with string values passed into axios headers
194-
*/
195-
setDefaultHeaders(defaultHeaders: Object) {
196-
this.defaultHeaders = defaultHeaders || {};
197-
}
198-
199-
/**
200-
* Gets default headers passed into authHttpClient. Used to understand what default headers are existing
201-
*
202-
* @return object with string values
203-
*/
204-
getDefaultHeaders() {
205-
return this.defaultHeaders;
206-
}
207184
}

core/src/types.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -296,6 +296,10 @@ export type CustomerTrackingMetadata = {
296296
userAgent: string,
297297
};
298298

299+
export type MiscHeaders = {
300+
jsonError: boolean
301+
};
302+
299303
export type StandingOrder = {
300304
id: string,
301305
status: string,

tpp/src/http/AuthHttpClient.js

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -584,6 +584,28 @@ class AuthHttpClient extends CoreAuthHttpClient {
584584
config.KeyLevel.STANDARD),
585585
};
586586
}
587+
588+
/**
589+
* Populate customer tracking metadata headers
590+
*
591+
* @param {CustomerTrackingMetadata} customerTrackingMetadata
592+
*/
593+
addCustomerTrackingMetadata(customerTrackingMetadata) {
594+
this._context.customerInitiated = true;
595+
this._context.customerTrackingMetadata = customerTrackingMetadata;
596+
this._resetRequestInterceptor();
597+
}
598+
599+
/**
600+
* Populate misc headers
601+
*
602+
* @param {MiscHeaders} miscHeaders
603+
*/
604+
setMiscHeaders(miscHeaders) {
605+
this._context.miscHeaders = miscHeaders;
606+
this._resetRequestInterceptor();
607+
}
608+
587609
}
588610

589611
export default AuthHttpClient;

tpp/src/main/Member.js

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import type {
2424
CustomerTrackingMetadata,
2525
GetEidasVerificationStatusResponse,
2626
WebhookConfig,
27+
MiscHeaders,
2728
} from '@token-io/core';
2829

2930
/**
@@ -629,4 +630,39 @@ export default class Member extends CoreMember {
629630
await this._client.deleteWebhookConfig();
630631
});
631632
}
633+
634+
/**
635+
* Populate customer tracking metadata headers in token calls.
636+
*
637+
* @param {CustomerTrackingMetadata} customerTrackingMetadata
638+
*/
639+
addCustomerTrackingMetadata(
640+
customerTrackingMetadata: CustomerTrackingMetadata,
641+
): void {
642+
return Util.callSync(this.addCustomerTrackingMetadata, () => {
643+
if(customerTrackingMetadata && Object.keys(customerTrackingMetadata).length === 0){
644+
throw new Error('User tracking metadata is empty.');
645+
}
646+
647+
this._client.addCustomerTrackingMetadata(customerTrackingMetadata);
648+
});
649+
}
650+
651+
/**
652+
* Populate misc headers in token calls
653+
*
654+
* @param {MiscHeaders} miscHeaders
655+
*/
656+
setMiscHeaders(
657+
miscHeaders: MiscHeaders,
658+
): void {
659+
return Util.callSync(this.setMiscHeaders, () => {
660+
if(miscHeaders && Object.keys(miscHeaders).length === 0){
661+
throw new Error('Misc headers are empty.');
662+
}
663+
664+
this._client.setMiscHeaders(miscHeaders);
665+
});
666+
}
667+
632668
}

0 commit comments

Comments
 (0)