UNPKG

nebstore-client

Version:
61 lines (60 loc) 1.96 kB
import FormData from 'form-data'; import { ApiClient } from '../ApiClient'; import { Readable } from 'stream'; import { Blob } from 'buffer'; const validateFileType = (file) => { if (Buffer.isBuffer(file)) { return true; } else if (file instanceof Blob) { return true; } else if (file instanceof Readable) { return true; } else { return false; } }; export default class StorageService { constructor(apiToken) { this.client = new ApiClient(apiToken); } async listBuckets(params) { return this.client.post('/buckets/list', params); } async listObjects(bucketName, params) { return this.client.post(`/buckets/${bucketName}/list`, params); } async createBucket(params) { return this.client.post('/buckets', params); } async emptyBucket(bucketName) { return this.client.post(`/buckets/${bucketName}/empty`); } async getBucket(bucketName) { return this.client.get(`/buckets/${bucketName}`); } async uploadObject(bucketName, objectKey, file) { const isCorrectFile = file && validateFileType(file); if (!isCorrectFile) { return { success: false, message: 'Invalid file type: accepted types [Blob, Buffer, ReadableStream]', }; } const formData = new FormData(); formData.append('object', file); formData.append('objectKey', objectKey); return this.client.uploadFile(`/buckets/${bucketName}/objects`, formData); } async deleteBucket(bucketName) { return this.client.delete(`/buckets/${bucketName}`); } async deleteObject(bucketName, objectKey) { return this.client.delete(`/buckets/${bucketName}/objects/${objectKey}`); } async getObject(bucketName, objectKey) { return this.client.get(`/buckets/${bucketName}/objects/${objectKey}`); } }