smartling-api-sdk-nodejs 2.16.1 → 2.17.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.
@@ -2,5 +2,5 @@ projectKey=smartling-api-sdk-nodejs
2
2
  serverUrl=https://sonar-next.connectors.stg.smartling.net
3
3
  serverVersion=8.6.1.40680
4
4
  dashboardUrl=https://sonar-next.connectors.stg.smartling.net/dashboard?id=smartling-api-sdk-nodejs
5
- ceTaskId=AZT0dv92Gh-y-CGibre5
6
- ceTaskUrl=https://sonar-next.connectors.stg.smartling.net/api/ce/task?id=AZT0dv92Gh-y-CGibre5
5
+ ceTaskId=AZT-MpEN_0lymG1kFSkV
6
+ ceTaskUrl=https://sonar-next.connectors.stg.smartling.net/api/ce/task?id=AZT-MpEN_0lymG1kFSkV
@@ -1,4 +1,5 @@
1
1
  export enum ResponseBodyType {
2
2
  TEXT = "TEXT",
3
3
  ARRAY_BUFFER = "ARRAY_BUFFER",
4
+ RAW_RESPONSE = "RAW_RESPONSE",
4
5
  }
package/api/base/index.ts CHANGED
@@ -144,6 +144,11 @@ export class SmartlingBaseApi {
144
144
  return response.arrayBuffer();
145
145
  }
146
146
 
147
+ // Special case for download file with metadata - return raw response.
148
+ if (returnRawResponseBody === ResponseBodyType.RAW_RESPONSE) {
149
+ return response;
150
+ }
151
+
147
152
  try {
148
153
  const textResponse = await response.text();
149
154
  const jsonResponse = JSON.parse(textResponse, (key, value) => {
@@ -0,0 +1,7 @@
1
+ interface TranslatedFileDto {
2
+ fileContent: ArrayBuffer;
3
+ fileName?: string;
4
+ contentType?: string;
5
+ }
6
+
7
+ export { TranslatedFileDto };
@@ -9,6 +9,7 @@ import { TranslateFileParameters } from "./params/translate-file-parameters";
9
9
  import { TranslationStatusDto } from "./dto/translation-status-dto";
10
10
  import { LanguageDetectionDto } from "./dto/language-detection-dto";
11
11
  import { LanguageDetectionStatusDto } from "./dto/language-detection-status-dto";
12
+ import { TranslatedFileDto } from "./dto/translated-file-dto";
12
13
  import { ResponseBodyType } from "../base/enum/response-body-type";
13
14
 
14
15
  export class SmartlingFileTranslationsApi extends SmartlingBaseApi {
@@ -76,6 +77,19 @@ export class SmartlingFileTranslationsApi extends SmartlingBaseApi {
76
77
  );
77
78
  }
78
79
 
80
+ async downloadTranslatedFileWithMetadata(
81
+ accountUid: string, fileUid: string, mtUid: string, localeId: string
82
+ ): Promise<TranslatedFileDto> {
83
+ return await SmartlingFileTranslationsApi.downloadResponseToTranslatedFileDto(
84
+ await this.makeRequest(
85
+ "get",
86
+ `${this.entrypoint}/${accountUid}/files/${fileUid}/mt/${mtUid}/locales/${localeId}/file`,
87
+ null,
88
+ ResponseBodyType.RAW_RESPONSE
89
+ )
90
+ );
91
+ }
92
+
79
93
  async downloadTranslatedFiles(
80
94
  accountUid: string, fileUid: string, mtUid: string
81
95
  ): Promise<ArrayBuffer> {
@@ -87,6 +101,19 @@ export class SmartlingFileTranslationsApi extends SmartlingBaseApi {
87
101
  );
88
102
  }
89
103
 
104
+ async downloadTranslatedFilesWithMetadata(
105
+ accountUid: string, fileUid: string, mtUid: string
106
+ ): Promise<TranslatedFileDto> {
107
+ return await SmartlingFileTranslationsApi.downloadResponseToTranslatedFileDto(
108
+ await this.makeRequest(
109
+ "get",
110
+ `${this.entrypoint}/${accountUid}/files/${fileUid}/mt/${mtUid}/locales/all/file/zip`,
111
+ null,
112
+ ResponseBodyType.RAW_RESPONSE
113
+ )
114
+ );
115
+ }
116
+
90
117
  async cancelFileTranslation(
91
118
  accountUid: string, fileUid: string, mtUid: string
92
119
  ): Promise<void> {
@@ -120,4 +147,23 @@ export class SmartlingFileTranslationsApi extends SmartlingBaseApi {
120
147
  delete headers["content-type"];
121
148
  return headers;
122
149
  }
150
+
151
+ private static async downloadResponseToTranslatedFileDto(
152
+ response: Response
153
+ ): Promise<TranslatedFileDto> {
154
+ const contentType = response.headers.get("content-type") ?? undefined;
155
+ const contentDisposition = response.headers.get("content-disposition");
156
+ let fileName;
157
+ if (contentDisposition) {
158
+ const fileNameMatch = contentDisposition.match(/filename="((?:[^"\\]|\\.)*)"/);
159
+ if (fileNameMatch) {
160
+ fileName = fileNameMatch[1].replace(/\\"/g, "\"");
161
+ }
162
+ }
163
+ return {
164
+ fileContent: await response.arrayBuffer(),
165
+ fileName,
166
+ contentType
167
+ };
168
+ }
123
169
  }
@@ -1,4 +1,5 @@
1
1
  export declare enum ResponseBodyType {
2
2
  TEXT = "TEXT",
3
- ARRAY_BUFFER = "ARRAY_BUFFER"
3
+ ARRAY_BUFFER = "ARRAY_BUFFER",
4
+ RAW_RESPONSE = "RAW_RESPONSE"
4
5
  }
@@ -5,5 +5,6 @@ var ResponseBodyType;
5
5
  (function (ResponseBodyType) {
6
6
  ResponseBodyType["TEXT"] = "TEXT";
7
7
  ResponseBodyType["ARRAY_BUFFER"] = "ARRAY_BUFFER";
8
+ ResponseBodyType["RAW_RESPONSE"] = "RAW_RESPONSE";
8
9
  })(ResponseBodyType = exports.ResponseBodyType || (exports.ResponseBodyType = {}));
9
10
  //# sourceMappingURL=response-body-type.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"response-body-type.js","sourceRoot":"","sources":["../../../../api/base/enum/response-body-type.ts"],"names":[],"mappings":";;;AAAA,IAAY,gBAGX;AAHD,WAAY,gBAAgB;IACxB,iCAAa,CAAA;IACb,iDAA6B,CAAA;AACjC,CAAC,EAHW,gBAAgB,GAAhB,wBAAgB,KAAhB,wBAAgB,QAG3B"}
1
+ {"version":3,"file":"response-body-type.js","sourceRoot":"","sources":["../../../../api/base/enum/response-body-type.ts"],"names":[],"mappings":";;;AAAA,IAAY,gBAIX;AAJD,WAAY,gBAAgB;IACxB,iCAAa,CAAA;IACb,iDAA6B,CAAA;IAC7B,iDAA6B,CAAA;AACjC,CAAC,EAJW,gBAAgB,GAAhB,wBAAgB,KAAhB,wBAAgB,QAI3B"}
@@ -108,6 +108,9 @@ class SmartlingBaseApi {
108
108
  if (returnRawResponseBody === response_body_type_1.ResponseBodyType.ARRAY_BUFFER) {
109
109
  return response.arrayBuffer();
110
110
  }
111
+ if (returnRawResponseBody === response_body_type_1.ResponseBodyType.RAW_RESPONSE) {
112
+ return response;
113
+ }
111
114
  try {
112
115
  const textResponse = yield response.text();
113
116
  const jsonResponse = JSON.parse(textResponse, (key, value) => {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../api/base/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../api/base/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ interface TranslatedFileDto {
2
+ fileContent: ArrayBuffer;
3
+ fileName?: string;
4
+ contentType?: string;
5
+ }
6
+ export { TranslatedFileDto };
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=translated-file-dto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"translated-file-dto.js","sourceRoot":"","sources":["../../../../api/file-translations/dto/translated-file-dto.ts"],"names":[],"mappings":""}
@@ -9,15 +9,19 @@ import { TranslateFileParameters } from "./params/translate-file-parameters";
9
9
  import { TranslationStatusDto } from "./dto/translation-status-dto";
10
10
  import { LanguageDetectionDto } from "./dto/language-detection-dto";
11
11
  import { LanguageDetectionStatusDto } from "./dto/language-detection-status-dto";
12
+ import { TranslatedFileDto } from "./dto/translated-file-dto";
12
13
  export declare class SmartlingFileTranslationsApi extends SmartlingBaseApi {
13
14
  constructor(smartlingApiBaseUrl: string, authApi: SmartlingAuthApi, logger: Logger);
14
15
  uploadFile(accountUid: string, parameters: FtsUploadFileParameters): Promise<FtsUploadedFileDto>;
15
16
  translateFile(accountUid: string, fileUid: string, params: TranslateFileParameters): Promise<TranslationDto>;
16
17
  getTranslationProgress(accountUid: string, fileUid: string, mtUid: string): Promise<TranslationStatusDto>;
17
18
  downloadTranslatedFile(accountUid: string, fileUid: string, mtUid: string, localeId: string): Promise<string>;
19
+ downloadTranslatedFileWithMetadata(accountUid: string, fileUid: string, mtUid: string, localeId: string): Promise<TranslatedFileDto>;
18
20
  downloadTranslatedFiles(accountUid: string, fileUid: string, mtUid: string): Promise<ArrayBuffer>;
21
+ downloadTranslatedFilesWithMetadata(accountUid: string, fileUid: string, mtUid: string): Promise<TranslatedFileDto>;
19
22
  cancelFileTranslation(accountUid: string, fileUid: string, mtUid: string): Promise<void>;
20
23
  detectFileLanguage(accountUid: string, fileUid: string): Promise<LanguageDetectionDto>;
21
24
  getLanguageDetectionProgress(accountUid: string, fileUid: string, languageDetectionUid: string): Promise<LanguageDetectionStatusDto>;
22
25
  static fixContentTypeHeaderCase(form: FormData): Record<string, unknown>;
26
+ private static downloadResponseToTranslatedFileDto;
23
27
  }
@@ -55,11 +55,21 @@ class SmartlingFileTranslationsApi extends base_1.SmartlingBaseApi {
55
55
  return yield this.makeRequest("get", `${this.entrypoint}/${accountUid}/files/${fileUid}/mt/${mtUid}/locales/${localeId}/file`, null, true);
56
56
  });
57
57
  }
58
+ downloadTranslatedFileWithMetadata(accountUid, fileUid, mtUid, localeId) {
59
+ return __awaiter(this, void 0, void 0, function* () {
60
+ return yield SmartlingFileTranslationsApi.downloadResponseToTranslatedFileDto(yield this.makeRequest("get", `${this.entrypoint}/${accountUid}/files/${fileUid}/mt/${mtUid}/locales/${localeId}/file`, null, response_body_type_1.ResponseBodyType.RAW_RESPONSE));
61
+ });
62
+ }
58
63
  downloadTranslatedFiles(accountUid, fileUid, mtUid) {
59
64
  return __awaiter(this, void 0, void 0, function* () {
60
65
  return yield this.makeRequest("get", `${this.entrypoint}/${accountUid}/files/${fileUid}/mt/${mtUid}/locales/all/file/zip`, null, response_body_type_1.ResponseBodyType.ARRAY_BUFFER);
61
66
  });
62
67
  }
68
+ downloadTranslatedFilesWithMetadata(accountUid, fileUid, mtUid) {
69
+ return __awaiter(this, void 0, void 0, function* () {
70
+ return yield SmartlingFileTranslationsApi.downloadResponseToTranslatedFileDto(yield this.makeRequest("get", `${this.entrypoint}/${accountUid}/files/${fileUid}/mt/${mtUid}/locales/all/file/zip`, null, response_body_type_1.ResponseBodyType.RAW_RESPONSE));
71
+ });
72
+ }
63
73
  cancelFileTranslation(accountUid, fileUid, mtUid) {
64
74
  return __awaiter(this, void 0, void 0, function* () {
65
75
  yield this.makeRequest("post", `${this.entrypoint}/${accountUid}/files/${fileUid}/mt/${mtUid}/cancel`);
@@ -81,6 +91,25 @@ class SmartlingFileTranslationsApi extends base_1.SmartlingBaseApi {
81
91
  delete headers["content-type"];
82
92
  return headers;
83
93
  }
94
+ static downloadResponseToTranslatedFileDto(response) {
95
+ var _a;
96
+ return __awaiter(this, void 0, void 0, function* () {
97
+ const contentType = (_a = response.headers.get("content-type")) !== null && _a !== void 0 ? _a : undefined;
98
+ const contentDisposition = response.headers.get("content-disposition");
99
+ let fileName;
100
+ if (contentDisposition) {
101
+ const fileNameMatch = contentDisposition.match(/filename="((?:[^"\\]|\\.)*)"/);
102
+ if (fileNameMatch) {
103
+ fileName = fileNameMatch[1].replace(/\\"/g, "\"");
104
+ }
105
+ }
106
+ return {
107
+ fileContent: yield response.arrayBuffer(),
108
+ fileName,
109
+ contentType
110
+ };
111
+ });
112
+ }
84
113
  }
85
114
  exports.SmartlingFileTranslationsApi = SmartlingFileTranslationsApi;
86
115
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../api/file-translations/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../api/file-translations/index.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "smartling-api-sdk-nodejs",
3
- "version": "2.16.1",
3
+ "version": "2.17.0",
4
4
  "description": "Package for Smartling API",
5
5
  "main": "built/index.js",
6
6
  "engines": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "smartling-api-sdk-nodejs",
3
- "version": "2.16.1",
3
+ "version": "2.17.0",
4
4
  "description": "Package for Smartling API",
5
5
  "main": "built/index.js",
6
6
  "engines": {
@@ -21,6 +21,7 @@ describe("SmartlingFileTranslationsApi class tests.", () => {
21
21
  let fileTranslationsApiFetchStub;
22
22
  let fileTranslationsApiUaStub;
23
23
  let responseMockJsonStub;
24
+ let getHeaderStub;
24
25
 
25
26
  beforeEach(() => {
26
27
  fileTranslationsApi = new SmartlingFileTranslationsApi(
@@ -37,12 +38,15 @@ describe("SmartlingFileTranslationsApi class tests.", () => {
37
38
  responseMockJsonStub.returns({
38
39
  response: {}
39
40
  });
41
+ getHeaderStub = sinon.stub(responseMock.headers, "get");
42
+ getHeaderStub.returns(null);
40
43
  });
41
44
 
42
45
  afterEach(() => {
43
46
  fileTranslationsApiFetchStub.restore();
44
47
  fileTranslationsApiUaStub.restore();
45
48
  responseMockJsonStub.restore();
49
+ getHeaderStub.restore();
46
50
  });
47
51
 
48
52
  describe("Methods", () => {
@@ -359,6 +363,89 @@ describe("SmartlingFileTranslationsApi class tests.", () => {
359
363
  );
360
364
  });
361
365
 
366
+ it("Download translated file with metadata when no headers", async () => {
367
+ const localeId = "de-DE";
368
+
369
+ const fileWithMetadata = await fileTranslationsApi.downloadTranslatedFileWithMetadata(
370
+ accountUid, fileUid, mtUid, localeId
371
+ );
372
+
373
+ sinon.assert.calledOnceWithExactly(
374
+ fileTranslationsApiFetchStub,
375
+ `https://test.com/file-translations-api/v2/accounts/${accountUid}/files/${fileUid}/mt/${mtUid}/locales/${localeId}/file`,
376
+ {
377
+ method: "get",
378
+ headers: {
379
+ Authorization: "test_token_type test_access_token",
380
+ "Content-Type": "application/json",
381
+ "User-Agent": userAgent
382
+ }
383
+ }
384
+ );
385
+
386
+ assert.ok(fileWithMetadata.contentType === undefined);
387
+ assert.ok(fileWithMetadata.fileName === undefined);
388
+ assert.ok(fileWithMetadata.fileContent.byteLength === 1);
389
+ });
390
+
391
+ it("Download translated file with metadata", async () => {
392
+ const localeId = "de-DE";
393
+
394
+ getHeaderStub.onCall(0).returns("application/xml");
395
+ getHeaderStub.onCall(1).returns("attachment; filename=\"test.xml\"");
396
+ getHeaderStub.returns(null);
397
+
398
+ const fileWithMetadata = await fileTranslationsApi.downloadTranslatedFileWithMetadata(
399
+ accountUid, fileUid, mtUid, localeId
400
+ );
401
+
402
+ sinon.assert.calledOnceWithExactly(
403
+ fileTranslationsApiFetchStub,
404
+ `https://test.com/file-translations-api/v2/accounts/${accountUid}/files/${fileUid}/mt/${mtUid}/locales/${localeId}/file`,
405
+ {
406
+ method: "get",
407
+ headers: {
408
+ Authorization: "test_token_type test_access_token",
409
+ "Content-Type": "application/json",
410
+ "User-Agent": userAgent
411
+ }
412
+ }
413
+ );
414
+
415
+ assert.ok(fileWithMetadata.contentType === "application/xml");
416
+ assert.ok(fileWithMetadata.fileName === "test.xml");
417
+ assert.ok(fileWithMetadata.fileContent.byteLength === 1);
418
+ });
419
+
420
+ it("Download translated file with escaped quotes in the file name", async () => {
421
+ const localeId = "de-DE";
422
+
423
+ getHeaderStub.onCall(0).returns("application/xml");
424
+ getHeaderStub.onCall(1).returns("attachment; filename=\"test - \\\"phase 1\\\".xml\"");
425
+ getHeaderStub.returns(null);
426
+
427
+ const fileWithMetadata = await fileTranslationsApi.downloadTranslatedFileWithMetadata(
428
+ accountUid, fileUid, mtUid, localeId
429
+ );
430
+
431
+ sinon.assert.calledOnceWithExactly(
432
+ fileTranslationsApiFetchStub,
433
+ `https://test.com/file-translations-api/v2/accounts/${accountUid}/files/${fileUid}/mt/${mtUid}/locales/${localeId}/file`,
434
+ {
435
+ method: "get",
436
+ headers: {
437
+ Authorization: "test_token_type test_access_token",
438
+ "Content-Type": "application/json",
439
+ "User-Agent": userAgent
440
+ }
441
+ }
442
+ );
443
+
444
+ assert.ok(fileWithMetadata.contentType === "application/xml");
445
+ assert.ok(fileWithMetadata.fileName === "test - \"phase 1\".xml");
446
+ assert.ok(fileWithMetadata.fileContent.byteLength === 1);
447
+ });
448
+
362
449
  it("Download translated files", async () => {
363
450
  await fileTranslationsApi.downloadTranslatedFiles(accountUid, fileUid, mtUid);
364
451
 
@@ -376,6 +463,56 @@ describe("SmartlingFileTranslationsApi class tests.", () => {
376
463
  );
377
464
  });
378
465
 
466
+ it("Download translated files with metadata when no headers", async () => {
467
+ const fileWithMetadata = await fileTranslationsApi.downloadTranslatedFilesWithMetadata(
468
+ accountUid, fileUid, mtUid
469
+ );
470
+
471
+ sinon.assert.calledOnceWithExactly(
472
+ fileTranslationsApiFetchStub,
473
+ `https://test.com/file-translations-api/v2/accounts/${accountUid}/files/${fileUid}/mt/${mtUid}/locales/all/file/zip`,
474
+ {
475
+ method: "get",
476
+ headers: {
477
+ Authorization: "test_token_type test_access_token",
478
+ "Content-Type": "application/json",
479
+ "User-Agent": userAgent
480
+ }
481
+ }
482
+ );
483
+
484
+ assert.ok(fileWithMetadata.contentType === undefined);
485
+ assert.ok(fileWithMetadata.fileName === undefined);
486
+ assert.ok(fileWithMetadata.fileContent.byteLength === 1);
487
+ });
488
+
489
+ it("Download translated files with metadata", async () => {
490
+ getHeaderStub.onCall(0).returns("application/zip");
491
+ getHeaderStub.onCall(1).returns("attachment; filename=\"test.zip\"");
492
+ getHeaderStub.returns(null);
493
+
494
+ const fileWithMetadata = await fileTranslationsApi.downloadTranslatedFilesWithMetadata(
495
+ accountUid, fileUid, mtUid
496
+ );
497
+
498
+ sinon.assert.calledOnceWithExactly(
499
+ fileTranslationsApiFetchStub,
500
+ `https://test.com/file-translations-api/v2/accounts/${accountUid}/files/${fileUid}/mt/${mtUid}/locales/all/file/zip`,
501
+ {
502
+ method: "get",
503
+ headers: {
504
+ Authorization: "test_token_type test_access_token",
505
+ "Content-Type": "application/json",
506
+ "User-Agent": userAgent
507
+ }
508
+ }
509
+ );
510
+
511
+ assert.ok(fileWithMetadata.contentType === "application/zip");
512
+ assert.ok(fileWithMetadata.fileName === "test.zip");
513
+ assert.ok(fileWithMetadata.fileContent.byteLength === 1);
514
+ });
515
+
379
516
  it("Cancel file translation", async () => {
380
517
  await fileTranslationsApi.cancelFileTranslation(accountUid, fileUid, mtUid);
381
518