@lokalise/file-storage-service-sdk
Advanced tools
import type { Either } from '@lokalise/node-core/dist/src/errors/either'; | ||
import type { FileDescription, FileMappingData, FileMetadata, FileUploadData, HttpRequestContext } from './model'; | ||
import type { FileData, FileMappingData, FileMetadata, FileUploadData, HttpRequestContext } from './model'; | ||
import type { ContentHeaders, ERROR_RESPONSE_SCHEMA_TYPE, UseCaseEnum } from './schema/storageSchemas'; | ||
@@ -22,4 +22,4 @@ import { StatisticsClient } from './statisticsClient'; | ||
constructor(config: FileStorageClientConfig); | ||
uploadFile(teamId: number, projectId: string, useCase: UseCaseEnum, fileDescription: FileDescription, bearerToken: string, contentHeaders: ContentHeaders, requestContext: HttpRequestContext): Promise<Either<ERROR_RESPONSE_SCHEMA_TYPE, string>>; | ||
createUploadUrl(teamId: number, projectId: string, useCase: UseCaseEnum, fileDescription: FileDescription, requestContext: HttpRequestContext, contentHeaders: ContentHeaders): Promise<Either<ERROR_RESPONSE_SCHEMA_TYPE, FileUploadData>>; | ||
uploadFile(teamId: number, projectId: string, useCase: UseCaseEnum, fileData: FileData, contentHeaders: ContentHeaders, requestContext: HttpRequestContext): Promise<Either<ERROR_RESPONSE_SCHEMA_TYPE, string>>; | ||
createUploadUrl(teamId: number, projectId: string, useCase: UseCaseEnum, fileData: FileData, requestContext: HttpRequestContext, contentHeaders: ContentHeaders): Promise<Either<ERROR_RESPONSE_SCHEMA_TYPE, FileUploadData>>; | ||
getFileMetadata(teamId: number, projectId: string, useCase: UseCaseEnum, fileId: string, requestContext: HttpRequestContext): Promise<Either<ERROR_RESPONSE_SCHEMA_TYPE, FileMetadata>>; | ||
@@ -35,2 +35,3 @@ getFileDownloadUrl(teamId: number, projectId: string, fileId: string, useCase: UseCaseEnum, requestContext: HttpRequestContext): Promise<Either<ERROR_RESPONSE_SCHEMA_TYPE, string>>; | ||
private getFileIdMappingEndpoint; | ||
private createBearerAuth; | ||
} |
@@ -23,4 +23,4 @@ "use strict"; | ||
} | ||
async uploadFile(teamId, projectId, useCase, fileDescription, bearerToken, contentHeaders, requestContext) { | ||
const { error, result } = await this.createUploadUrl(teamId, projectId, useCase, fileDescription, requestContext, contentHeaders); | ||
async uploadFile(teamId, projectId, useCase, fileData, contentHeaders, requestContext) { | ||
const { error, result } = await this.createUploadUrl(teamId, projectId, useCase, fileData, requestContext, contentHeaders); | ||
if (error) | ||
@@ -37,3 +37,3 @@ return { error: error }; | ||
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument,@typescript-eslint/no-unsafe-call | ||
(0, node_core_1.buildClient)(uploadBaseUrl), uploadUrlObject.pathname, fileDescription.fileData, { | ||
(0, node_core_1.buildClient)(uploadBaseUrl), uploadUrlObject.pathname, fileData.file, { | ||
headers, | ||
@@ -49,4 +49,4 @@ safeParseJson: true, | ||
} | ||
async createUploadUrl(teamId, projectId, useCase, fileDescription, requestContext, contentHeaders) { | ||
const { filename, mimeType, metadata } = fileDescription; | ||
async createUploadUrl(teamId, projectId, useCase, fileData, requestContext, contentHeaders) { | ||
const { filename, mimeType, metadata } = fileData; | ||
const body = { | ||
@@ -60,3 +60,3 @@ metadata, | ||
headers: { | ||
authorization: requestContext.jwtToken, | ||
authorization: this.createBearerAuth(requestContext.jwtToken), | ||
'Content-Type': 'application/json', | ||
@@ -104,3 +104,3 @@ }, | ||
headers: { | ||
authorization: requestContext.jwtToken, | ||
authorization: this.createBearerAuth(requestContext.jwtToken), | ||
}, | ||
@@ -120,3 +120,3 @@ safeParseJson: true, | ||
headers: { | ||
authorization: requestContext.jwtToken, | ||
authorization: this.createBearerAuth(requestContext.jwtToken), | ||
}, | ||
@@ -137,3 +137,3 @@ safeParseJson: true, | ||
headers: { | ||
authorization: requestContext.jwtToken, | ||
authorization: this.createBearerAuth(requestContext.jwtToken), | ||
}, | ||
@@ -178,4 +178,5 @@ safeParseJson: true, | ||
getFileIdMappingEndpoint = (teamId) => `/teams/${teamId}/mappings`; | ||
createBearerAuth = (jwtToken) => `Bearer ${jwtToken}`; | ||
} | ||
exports.FileStorageClient = FileStorageClient; | ||
//# sourceMappingURL=fileStorageClient.js.map |
@@ -64,3 +64,3 @@ "use strict"; | ||
await mockStorageServer.forPut(uploadPath).thenReply(200, '{}'); | ||
await expect(fileStorageClient.uploadFile(testFs_1.FS_TEST_DATA.TEAM_ID, testFs_1.FS_TEST_DATA.PROJECT_ID, 'bundles', testFs_1.FS_TEST_DATA.FILE_DESCRIPTION, testFs_1.FS_TEST_DATA.BEARER_TOKEN, {}, testFs_1.FS_TEST_DATA.REQUEST_CONTEXT)).resolves.toEqual({ result: fileId }); | ||
await expect(fileStorageClient.uploadFile(testFs_1.FS_TEST_DATA.TEAM_ID, testFs_1.FS_TEST_DATA.PROJECT_ID, 'bundles', testFs_1.FS_TEST_DATA.FILE_DESCRIPTION, {}, testFs_1.FS_TEST_DATA.REQUEST_CONTEXT)).resolves.toEqual({ result: fileId }); | ||
await mockStorageServer.stop(); | ||
@@ -86,3 +86,3 @@ }); | ||
await mockStorageServer.forPut(uploadUrl).withQuery({ key: 'token' }).thenReply(200, '{}'); | ||
await expect(fileStorageClient.uploadFile(testFs_1.FS_TEST_DATA.TEAM_ID, testFs_1.FS_TEST_DATA.PROJECT_ID, 'bundles', testFs_1.FS_TEST_DATA.FILE_DESCRIPTION, testFs_1.FS_TEST_DATA.BEARER_TOKEN, {}, testFs_1.FS_TEST_DATA.REQUEST_CONTEXT)).resolves.toEqual({ result: fileId }); | ||
await expect(fileStorageClient.uploadFile(testFs_1.FS_TEST_DATA.TEAM_ID, testFs_1.FS_TEST_DATA.PROJECT_ID, 'bundles', testFs_1.FS_TEST_DATA.FILE_DESCRIPTION, {}, testFs_1.FS_TEST_DATA.REQUEST_CONTEXT)).resolves.toEqual({ result: fileId }); | ||
await mockStorageServer.stop(); | ||
@@ -100,3 +100,3 @@ }); | ||
}); | ||
await expect(fileStorageClient.uploadFile(testFs_1.FS_TEST_DATA.TEAM_ID, testFs_1.FS_TEST_DATA.PROJECT_ID, 'bundles', testFs_1.FS_TEST_DATA.FILE_DESCRIPTION, testFs_1.FS_TEST_DATA.BEARER_TOKEN, {}, testFs_1.FS_TEST_DATA.REQUEST_CONTEXT)).resolves.toEqual({ error: testFs_1.FS_TEST_DATA.ERROR_REPLY }); | ||
await expect(fileStorageClient.uploadFile(testFs_1.FS_TEST_DATA.TEAM_ID, testFs_1.FS_TEST_DATA.PROJECT_ID, 'bundles', testFs_1.FS_TEST_DATA.FILE_DESCRIPTION, {}, testFs_1.FS_TEST_DATA.REQUEST_CONTEXT)).resolves.toEqual({ error: testFs_1.FS_TEST_DATA.ERROR_REPLY }); | ||
}); | ||
@@ -130,3 +130,3 @@ it('returns error on uploading file by generated upload url', async () => { | ||
}); | ||
await expect(fileStorageClient.uploadFile(testFs_1.FS_TEST_DATA.TEAM_ID, testFs_1.FS_TEST_DATA.PROJECT_ID, 'bundles', testFs_1.FS_TEST_DATA.FILE_DESCRIPTION, testFs_1.FS_TEST_DATA.BEARER_TOKEN, {}, testFs_1.FS_TEST_DATA.REQUEST_CONTEXT)).resolves.toEqual({ error: testFs_1.FS_TEST_DATA.ERROR_REPLY }); | ||
await expect(fileStorageClient.uploadFile(testFs_1.FS_TEST_DATA.TEAM_ID, testFs_1.FS_TEST_DATA.PROJECT_ID, 'bundles', testFs_1.FS_TEST_DATA.FILE_DESCRIPTION, {}, testFs_1.FS_TEST_DATA.REQUEST_CONTEXT)).resolves.toEqual({ error: testFs_1.FS_TEST_DATA.ERROR_REPLY }); | ||
await mockStorageServer.stop(); | ||
@@ -133,0 +133,0 @@ }); |
/// <reference types="node" /> | ||
/// <reference types="node" /> | ||
import type { Readable } from 'node:stream'; | ||
import type { StatusEnum } from './schema/storageSchemas'; | ||
export interface HttpRequestContext { | ||
reqId: string; | ||
jwtToken?: string; | ||
jwtToken: string; | ||
} | ||
export interface FileDescription { | ||
export interface FileData { | ||
filename: string; | ||
fileData: Buffer; | ||
file: Buffer | Readable; | ||
mimeType: string; | ||
@@ -11,0 +13,0 @@ metadata?: Record<string, string>; |
@@ -9,3 +9,3 @@ /// <reference types="node" /> | ||
filename: string; | ||
fileData: Buffer; | ||
file: Buffer; | ||
mimeType: string; | ||
@@ -12,0 +12,0 @@ metadata: { |
@@ -11,3 +11,3 @@ "use strict"; | ||
filename: 'testFile.zip', | ||
fileData: Buffer.from('UEsFBgAAAAAAAAAAAAAAAAAAAAAAAA==', 'base64'), | ||
file: Buffer.from('UEsFBgAAAAAAAAAAAAAAAAAAAAAAAA==', 'base64'), | ||
mimeType: 'application/zip', | ||
@@ -14,0 +14,0 @@ metadata: { |
{ | ||
"name": "@lokalise/file-storage-service-sdk", | ||
"version": "1.1.0", | ||
"version": "3.0.0", | ||
"description": "SDK for file-storage-service", | ||
@@ -41,3 +41,3 @@ "author": { | ||
"dependencies": { | ||
"@lokalise/node-core": "^4.0.0", | ||
"@lokalise/node-core": "^5.0.0", | ||
"@lokalise/zod-extras": "^1.3.1", | ||
@@ -64,3 +64,3 @@ "undici": "^5.20.0", | ||
"ts-node": "^10.9.1", | ||
"typescript": "4.9.5" | ||
"typescript": "5.1.6" | ||
}, | ||
@@ -67,0 +67,0 @@ "engines": { |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
83691
0.08%