nebstore-client
Version:
Nebula client node package
67 lines (66 loc) • 2.27 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const form_data_1 = __importDefault(require("form-data"));
const ApiClient_1 = require("../ApiClient");
const stream_1 = require("stream");
const buffer_1 = require("buffer");
const validateFileType = (file) => {
if (Buffer.isBuffer(file)) {
return true;
}
else if (file instanceof buffer_1.Blob) {
return true;
}
else if (file instanceof stream_1.Readable) {
return true;
}
else {
return false;
}
};
class StorageService {
constructor(apiToken) {
this.client = new ApiClient_1.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 form_data_1.default();
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}`);
}
}
exports.default = StorageService;