38 lines
925 B
JavaScript
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;
|