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.
- package/.scannerwork/report-task.txt +2 -2
- package/api/base/enum/response-body-type.ts +1 -0
- package/api/base/index.ts +5 -0
- package/api/file-translations/dto/translated-file-dto.ts +7 -0
- package/api/file-translations/index.ts +46 -0
- package/built/api/base/enum/response-body-type.d.ts +2 -1
- package/built/api/base/enum/response-body-type.js +1 -0
- package/built/api/base/enum/response-body-type.js.map +1 -1
- package/built/api/base/index.js +3 -0
- package/built/api/base/index.js.map +1 -1
- package/built/api/file-translations/dto/translated-file-dto.d.ts +6 -0
- package/built/api/file-translations/dto/translated-file-dto.js +3 -0
- package/built/api/file-translations/dto/translated-file-dto.js.map +1 -0
- package/built/api/file-translations/index.d.ts +4 -0
- package/built/api/file-translations/index.js +29 -0
- package/built/api/file-translations/index.js.map +1 -1
- package/built/package.json +1 -1
- package/package.json +1 -1
- package/test/file-translations.spec.ts +137 -0
|
@@ -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=
|
|
6
|
-
ceTaskUrl=https://sonar-next.connectors.stg.smartling.net/api/ce/task?id=
|
|
5
|
+
ceTaskId=AZT-MpEN_0lymG1kFSkV
|
|
6
|
+
ceTaskUrl=https://sonar-next.connectors.stg.smartling.net/api/ce/task?id=AZT-MpEN_0lymG1kFSkV
|
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) => {
|
|
@@ -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
|
}
|
|
@@ -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,
|
|
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"}
|
package/built/api/base/index.js
CHANGED
|
@@ -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":";;;;;;;;;;;;;;;AAAA,4DAA+B;AAC/B,4EAAoC;AAEpC,8DAAgC;AAChC,6CAA6D;AAE7D,8CAAwD;AAExD,kEAA6D;AAG7D,MAAM,WAAW,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;AAElD,MAAa,gBAAgB;IAUzB,YAAY,MAAc;QAThB,YAAO,GAAqB,SAAS,CAAC;QAU5C,IAAI,CAAC,kBAAkB,GAAG,WAAW,CAAC,IAAI,CAAC;QAC3C,IAAI,CAAC,oBAAoB,GAAG,WAAW,CAAC,OAAO,CAAC;QAChD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC;QAC3C,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,oBAAoB,CAAC;QAClD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;IACtB,CAAC;IAED,UAAU,CAAC,OAAgC;QACvC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IAC3B,CAAC;IAEM,cAAc;QACjB,OAAO,IAAI,CAAC,WAAW,CAAC;IAC5B,CAAC;IAEM,cAAc,CAAC,WAAmB;QACrC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACnC,CAAC;IAEM,mBAAmB;QACtB,OAAO,IAAI,CAAC,gBAAgB,CAAC;IACjC,CAAC;IAEM,mBAAmB,CAAC,gBAAwB;QAC/C,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;IAC7C,CAAC;IAGK,KAAK,CAAC,GAAW,EAAE,OAAgC;;YACrD,OAAO,MAAM,IAAA,qBAAK,EAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QACrC,CAAC;KAAA;IAGD,EAAE,CAAC,QAAgB,EAAE,aAAqB;QACtC,OAAO,IAAA,4BAAE,EAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;IACvC,CAAC;IAGD,gBAAgB,CAAC,GAAW,EAAE,IAA6B;QACvD,OAAO,IAAI,CAAC;IAChB,CAAC;IAEK,iBAAiB,CACnB,UAAmC,EAAE;;YAErC,IAAI,cAAc,GAAG,EAAE,CAAC;YAGxB,IAAI,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,SAAS,KAAK,IAAI,CAAC,OAAO,EAAE;gBAC9D,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;gBACxD,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;gBAEpD,cAAc,GAAG;oBACb,aAAa,EAAE,GAAG,SAAS,IAAI,WAAW,EAAE;iBAC/C,CAAC;aACL;YAED,cAAc,CAAC,cAAc,CAAC,GAAG,kBAAkB,CAAC;YACpD,cAAc,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAEhF,OAAO,IAAA,oBAAK,EAAC,cAAc,EAAE,OAAO,CAAC,CAAC;QAC1C,CAAC;KAAA;IAEK,WAAW,CACb,IAAY,EACZ,GAAW,EACX,UAAuD,IAAI,EAC3D,wBAAoD,KAAK,EACzD,UAAmC,EAAE;;;YAGrC,MAAM,IAAI,GAAG,IAAA,oBAAK,EAAC;gBACf,MAAM,EAAE,IAAI;gBACZ,OAAO,EAAE,MAAM,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC;aACjD,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YAEjB,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,KAAK,IAAI,OAAO,EAAE;gBACzC,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC;aACvB;iBAAM,IAAI,OAAO,EAAE;gBAGhB,GAAG,GAAG,GAAG,GAAG,IAAI,IAAA,uBAAS,EAAC,OAAyC,CAAC,EAAE,CAAC;aAC1E;YAED,IAAI,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;YAEvE,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE;gBACzB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kEAAkE,CAAC,CAAC;gBAGrF,IAAI,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE;oBAC9D,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;iBAC7B;gBAGD,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;gBAC7D,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,cAAc,CAAC,aAAa,CAAC;gBAE1D,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;aACtE;YAED,IAAI,QAAQ,CAAC,MAAM,IAAI,GAAG,EAAE;gBACxB,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;gBAE3C,MAAM,IAAI,0BAAkB,CAAC,eAAe,GAAG,SAAS,EAAE;oBACtD,UAAU,EAAE,QAAQ,CAAC,MAAM;oBAC3B,aAAa,EAAE,YAAY;oBAC3B,SAAS,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;iBACpD,CAAC,CAAC;aACN;YAGD,IAAI,qBAAqB,KAAK,IAAI,IAAI,qBAAqB,KAAK,qCAAgB,CAAC,IAAI,EAAE;gBACnF,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;aAC1B;YAGD,IAAI,qBAAqB,KAAK,qCAAgB,CAAC,YAAY,EAAE;gBACzD,OAAO,QAAQ,CAAC,WAAW,EAAE,CAAC;aACjC;YAED,IAAI;gBACA,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;gBAC3C,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;oBACzD,MAAM,cAAc,GAAG;wBACnB,SAAS;wBACT,UAAU;wBACV,SAAS;wBACT,aAAa;wBACb,cAAc;wBACd,aAAa;wBACb,SAAS;wBACT,YAAY;wBACZ,aAAa;wBACb,cAAc;qBACjB,CAAC;oBAEF,IAAI,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,KAAK,EAAE;wBACvC,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;qBAC1B;oBAED,OAAO,KAAK,CAAC;gBACjB,CAAC,CAAC,CAAC;gBAEH,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,QAAQ,CAAC,MAAM,cAAc,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,gBAAgB,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;gBAEpI,OAAO,CAAA,MAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,QAAQ,0CAAE,IAAI,EAAC,CAAC,CAAC,MAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,QAAQ,0CAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;aAC7E;YAAC,OAAO,CAAC,EAAE;gBACR,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;gBAEnE,MAAM,IAAI,0BAAkB,CAAC,8BAA8B,EAAE;oBACzD,UAAU,EAAE,QAAQ,CAAC,MAAM;oBAC3B,aAAa,EAAE,MAAM,QAAQ,CAAC,IAAI,EAAE;oBACpC,SAAS,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;iBACpD,CAAC,CAAC;aACN;;KACJ;IAEM,MAAM,CAAC,iBAAiB,CAAC,GAAW,EAAE,KAAU;QACnD,MAAM,mBAAmB,GAAG;YACxB,gBAAgB;YAChB,YAAY;YACZ,aAAa;YACb,cAAc;SACjB,CAAC;QAEF,IAAI,mBAAmB,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YACzE,OAAO,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC;SAC3C;QAED,OAAO,KAAK,CAAC;IACjB,CAAC;CACJ;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../api/base/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -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":";;;;;;;;;;;;;;;AAAA,0DAAiC;AACjC,kCAA2C;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../api/file-translations/index.ts"],"names":[],"mappings":"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"}
|
package/built/package.json
CHANGED
package/package.json
CHANGED
|
@@ -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
|
|