@lokalise/file-storage-service-sdk
Advanced tools
Comparing version 1.0.0 to 1.1.0
@@ -26,8 +26,10 @@ import type { Either } from '@lokalise/node-core/dist/src/errors/either'; | ||
getFileDownloadUrl(teamId: number, projectId: string, fileId: string, useCase: UseCaseEnum, requestContext: HttpRequestContext): Promise<Either<ERROR_RESPONSE_SCHEMA_TYPE, string>>; | ||
deleteFile(teamId: number, projectId: string, fileId: string, useCase: UseCaseEnum, requestContext: HttpRequestContext): Promise<Either<ERROR_RESPONSE_SCHEMA_TYPE, undefined>>; | ||
deleteFile(teamId: number, projectId: string, fileId: string, useCase: UseCaseEnum, requestContext: HttpRequestContext): Promise<Either<ERROR_RESPONSE_SCHEMA_TYPE, boolean>>; | ||
bulkDeleteByTeamUseCase(teamId: number, useCase: UseCaseEnum, requestContext: HttpRequestContext): Promise<Either<ERROR_RESPONSE_SCHEMA_TYPE, boolean>>; | ||
bulkDeleteByProjectUseCase(teamId: number, projectId: string, useCase: UseCaseEnum, requestContext: HttpRequestContext): Promise<Either<ERROR_RESPONSE_SCHEMA_TYPE, boolean>>; | ||
getFileMappingsForTeam(teamId: number): Promise<Either<ERROR_RESPONSE_SCHEMA_TYPE, FileMappingData[]>>; | ||
postMoveProject(teamId: number, projectId: string, newTeamId: number): Promise<Either<ERROR_RESPONSE_SCHEMA_TYPE, boolean>>; | ||
private getUseCaseEndpoint; | ||
private getMoveEndpoint; | ||
private getProjectEndpoint; | ||
private getFileIdMappingEndpoint; | ||
} |
@@ -110,4 +110,35 @@ "use strict"; | ||
} | ||
return { result: undefined }; | ||
return { result: true }; | ||
} | ||
async bulkDeleteByTeamUseCase(teamId, useCase, requestContext) { | ||
const response = await (0, node_core_1.sendDelete)(this.fileStorageHttpClient, `/teams/${teamId}/${useCase}`, { | ||
headers: { | ||
authorization: requestContext.jwtToken, | ||
}, | ||
safeParseJson: true, | ||
throwOnError: false, | ||
reqContext: requestContext, | ||
retryConfig: this.retryConfig, | ||
}); | ||
if (response.error) { | ||
return { error: response.error.body }; | ||
} | ||
return { result: true }; | ||
} | ||
async bulkDeleteByProjectUseCase(teamId, projectId, useCase, requestContext) { | ||
const endpoint = `${this.getProjectEndpoint(teamId, projectId)}/${useCase}`; | ||
const response = await (0, node_core_1.sendDelete)(this.fileStorageHttpClient, endpoint, { | ||
headers: { | ||
authorization: requestContext.jwtToken, | ||
}, | ||
safeParseJson: true, | ||
throwOnError: false, | ||
reqContext: requestContext, | ||
retryConfig: this.retryConfig, | ||
}); | ||
if (response.error) { | ||
return { error: response.error.body }; | ||
} | ||
return { result: true }; | ||
} | ||
async getFileMappingsForTeam(teamId) { | ||
@@ -128,3 +159,3 @@ const response = await (0, node_core_1.sendGet)(this.fileStorageHttpClient, this.getFileIdMappingEndpoint(teamId), { | ||
}; | ||
const response = await (0, node_core_1.sendPost)(this.fileStorageHttpClient, this.getMoveEndpoint(teamId, projectId), body, { | ||
const response = await (0, node_core_1.sendPost)(this.fileStorageHttpClient, `${this.getProjectEndpoint(teamId, projectId)}/move`, body, { | ||
safeParseJson: true, | ||
@@ -140,3 +171,3 @@ throwOnError: false, | ||
getUseCaseEndpoint = (teamId, projectId, useCase, appendix) => `/teams/${teamId}/projects/${projectId}/${useCase}/${appendix}`; | ||
getMoveEndpoint = (teamId, projectId) => `/teams/${teamId}/projects/${projectId}/move`; | ||
getProjectEndpoint = (teamId, projectId) => `/teams/${teamId}/projects/${projectId}`; | ||
getFileIdMappingEndpoint = (teamId) => `/teams/${teamId}/mappings`; | ||
@@ -143,0 +174,0 @@ } |
@@ -163,3 +163,3 @@ "use strict"; | ||
await mockServer.forDelete(testFs_1.deleteFileInterceptData.path).thenReply(204, '{}'); | ||
await expect(fileStorageClient.deleteFile(testFs_1.FS_TEST_DATA.TEAM_ID, testFs_1.FS_TEST_DATA.PROJECT_ID, testFs_1.FS_TEST_DATA.FILE_ID, 'bundles', testFs_1.FS_TEST_DATA.REQUEST_CONTEXT)).resolves.toEqual({}); | ||
await expect(fileStorageClient.deleteFile(testFs_1.FS_TEST_DATA.TEAM_ID, testFs_1.FS_TEST_DATA.PROJECT_ID, testFs_1.FS_TEST_DATA.FILE_ID, 'bundles', testFs_1.FS_TEST_DATA.REQUEST_CONTEXT)).resolves.toEqual({ result: true }); | ||
}); | ||
@@ -178,2 +178,34 @@ it('returns error on delete file', async () => { | ||
}); | ||
it('bulk delete files by team use case successful', async () => { | ||
await mockServer.forDelete(testFs_1.bulkDeleteByTeamUseCaseInterceptData.path).thenReply(204, '{}'); | ||
await expect(fileStorageClient.bulkDeleteByTeamUseCase(testFs_1.FS_TEST_DATA.TEAM_ID, 'bundles', testFs_1.FS_TEST_DATA.REQUEST_CONTEXT)).resolves.toEqual({ result: true }); | ||
}); | ||
it('returns error on bulk delete by team use case', async () => { | ||
const errorReply = { | ||
statusCode: 401, | ||
message: 'Malformed token', | ||
}; | ||
await mockServer | ||
.forDelete(testFs_1.bulkDeleteByTeamUseCaseInterceptData.path) | ||
.thenReply(errorReply.statusCode, errorReply.message, JSON.stringify(errorReply), { | ||
'content-type': 'application/json', | ||
}); | ||
await expect(fileStorageClient.bulkDeleteByTeamUseCase(testFs_1.FS_TEST_DATA.TEAM_ID, 'bundles', testFs_1.FS_TEST_DATA.REQUEST_CONTEXT)).resolves.toEqual({ error: testFs_1.FS_TEST_DATA.ERROR_REPLY }); | ||
}); | ||
it('bulk delete files by project use case successful', async () => { | ||
await mockServer.forDelete(testFs_1.bulkDeleteByProjectUseCaseInterceptData.path).thenReply(204, '{}'); | ||
await expect(fileStorageClient.bulkDeleteByProjectUseCase(testFs_1.FS_TEST_DATA.TEAM_ID, testFs_1.FS_TEST_DATA.PROJECT_ID, 'bundles', testFs_1.FS_TEST_DATA.REQUEST_CONTEXT)).resolves.toEqual({ result: true }); | ||
}); | ||
it('returns error on bulk delete by project use case', async () => { | ||
const errorReply = { | ||
statusCode: 401, | ||
message: 'Malformed token', | ||
}; | ||
await mockServer | ||
.forDelete(testFs_1.bulkDeleteByProjectUseCaseInterceptData.path) | ||
.thenReply(errorReply.statusCode, errorReply.message, JSON.stringify(errorReply), { | ||
'content-type': 'application/json', | ||
}); | ||
await expect(fileStorageClient.bulkDeleteByProjectUseCase(testFs_1.FS_TEST_DATA.TEAM_ID, testFs_1.FS_TEST_DATA.PROJECT_ID, 'bundles', testFs_1.FS_TEST_DATA.REQUEST_CONTEXT)).resolves.toEqual({ error: testFs_1.FS_TEST_DATA.ERROR_REPLY }); | ||
}); | ||
it('get file mappings for team successful', async () => { | ||
@@ -180,0 +212,0 @@ const getReply = { |
@@ -46,2 +46,10 @@ /// <reference types="node" /> | ||
}; | ||
export declare const bulkDeleteByTeamUseCaseInterceptData: { | ||
path: string; | ||
method: string; | ||
}; | ||
export declare const bulkDeleteByProjectUseCaseInterceptData: { | ||
path: string; | ||
method: string; | ||
}; | ||
export declare const getFileMappingsData: { | ||
@@ -48,0 +56,0 @@ path: string; |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.getBulkStatisticsData = exports.uploadInterceptData = exports.postMoveProjectData = exports.getFileMappingsData = exports.deleteFileInterceptData = exports.getFileMetadataInterceptData = exports.downloadInterceptData = exports.FS_TEST_DATA = void 0; | ||
exports.getBulkStatisticsData = exports.uploadInterceptData = exports.postMoveProjectData = exports.getFileMappingsData = exports.bulkDeleteByProjectUseCaseInterceptData = exports.bulkDeleteByTeamUseCaseInterceptData = exports.deleteFileInterceptData = exports.getFileMetadataInterceptData = exports.downloadInterceptData = exports.FS_TEST_DATA = void 0; | ||
exports.FS_TEST_DATA = { | ||
@@ -48,2 +48,10 @@ FILE_ID: 'some-file-id', | ||
}; | ||
exports.bulkDeleteByTeamUseCaseInterceptData = { | ||
path: `/teams/${exports.FS_TEST_DATA.TEAM_ID}/bundles`, | ||
method: 'DELETE', | ||
}; | ||
exports.bulkDeleteByProjectUseCaseInterceptData = { | ||
path: `/teams/${exports.FS_TEST_DATA.TEAM_ID}/projects/${exports.FS_TEST_DATA.PROJECT_ID}/bundles`, | ||
method: 'DELETE', | ||
}; | ||
exports.getFileMappingsData = { | ||
@@ -50,0 +58,0 @@ path: `/teams/${exports.FS_TEST_DATA.TEAM_ID}/mappings`, |
{ | ||
"name": "@lokalise/file-storage-service-sdk", | ||
"version": "1.0.0", | ||
"version": "1.1.0", | ||
"description": "SDK for file-storage-service", | ||
@@ -5,0 +5,0 @@ "author": { |
# file-storage-service-sdk | ||
Sdk for file-storage-service (FSS). | ||
Sdk for file-storage-service - [FSS](https://github.com/lokalise/file-storage-service). | ||
@@ -11,1 +11,9 @@ ### Usage | ||
For statistics endpoints use `FileStorageClient.statistics` | ||
#### Authorization | ||
Authorization will require a valid `jwtToken`. | ||
#### Error handling | ||
All function returning monad `Either<L, R>` where `L` - Left is a potential error and | ||
`R` - Right is a potential result, one of these will always present in response. | ||
Consumer of the api is responsible to handle result/error. |
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
83624
1065
18