fox-send/server/storage/az_blob.js

38 lines
925 B
JavaScript

const { BlobServiceClient } = require('@azure/storage-blob');
const { DefaultAzureCredential } = require('@azure/identity');
class AzBlobStorage {
constructor(config, log) {
const blobClient = new BlobServiceClient(
config.az_storage_url,
new DefaultAzureCredential()
);
this.container = blobClient.getContainerClient(config.az_storage_container);
this.log = log;
}
async length(id) {
const props = await this.container.getBlockBlobClient(id).getProperties();
return props.contentLength;
}
async getStream(id) {
const dl = await this.container.getBlockBlobClient(id).download();
return dl.readableStreamBody;
}
set(id, file) {
return this.container.getBlockBlobClient(id).uploadStream(file);
}
del(id) {
return this.container.getBlockBlobClient(id).delete();
}
ping() {
return this.container.exists();
}
}
module.exports = AzBlobStorage;