diff --git a/src/AWSStorageService.js b/src/AWSStorageService.js index 6a21dc0..584cdcd 100644 --- a/src/AWSStorageService.js +++ b/src/AWSStorageService.js @@ -352,9 +352,40 @@ export class AWSStorageService extends BaseStorageService { 'result': result } } - upload(container, fileName, filePath, callback) { - throw new Error('BaseStorageService :: upload() must be implemented'); - } + + /** + * @upload + * @description - Uplaod file directly to AWS storage + * @param { string } container - bucket name + * @param { string } fileName - Path to the file in the bucket. + * @param { Buffer } fileContent - file data which needs to uploaded + * @return { Promise } - A signed URL for the specified operation on the file. + */ + + async upload(container, fileName, fileContent) { + return new Promise((resolve, reject) => { + + let params = { + Bucket: container, + Key: fileName, + Body: fileContent, + }; + + const fileUpload = new Upload({ + client: this.client, + params: params, + leavePartsOnError: false, + }); + + fileUpload.done() + .then((data) => { + resolve(data.Location); + }) + .catch((error) => { + reject(error); + }); + }); + } /** * @description - Generates a signed URL for performing specified operations on a file in the AWS bucket. diff --git a/src/AzureStorageService.js b/src/AzureStorageService.js index d447b29..5b973c0 100644 --- a/src/AzureStorageService.js +++ b/src/AzureStorageService.js @@ -369,8 +369,30 @@ export class AzureStorageService extends BaseStorageService { } } - upload(container, fileName, filePath, callback) { - throw new Error('AzureStorageService :: upload() must be implemented'); + /** + + * @description - Uplaod file directly to azure storage + * @upload + * @param { string } container - bucket name + * @param { string } fileName - Path to the file in the bucket. + * @param { Buffer } fileContent - file data which needs to uploaded + * @return { Promise} } - Response Status code + */ + + async upload(container, fileName, fileContent) { + return new Promise(async (resolve, reject) => { + let blobClient = this.blobService.getContainerClient(container).getBlockBlobClient(fileName); + try{ + let fileUpload= await blobClient.upload( + fileContent, + fileContent.length, + ); + resolve(fileUpload._response.status) + }catch(err){ + reject(err); + } + }) + } /** diff --git a/src/GCPStorageService.js b/src/GCPStorageService.js index 31389ca..64adc2d 100644 --- a/src/GCPStorageService.js +++ b/src/GCPStorageService.js @@ -269,8 +269,31 @@ export class GCPStorageService extends BaseStorageService { 'result': result } } - upload(container, fileName, filePath, callback) { - throw new Error('BaseStorageService :: upload() must be implemented'); + + /** + * @upload + * @description - Uplaod file directly to GCP storage + * @param { string } container - bucket name + * @param { string } fileName - Path to the file in the bucket. + * @param { Buffer } fileContent - file data which needs to uploaded + * @return { Promise} } - Response Success message. + */ + async upload(container, fileName, fileContent) { + return new Promise((resolve, reject) => { + + const fileUpload = this._storage.bucket(container).file(fileName); + + fileUpload.save(fileContent, { + contentType: "application/octet-stream" + }, (err) => { + if (err) { + reject("error",err); + } + else { + resolve(`File saved successfully`); + } + }); + }) } /** diff --git a/src/OCIStorageService.js b/src/OCIStorageService.js index 13ebddf..9eee9c6 100644 --- a/src/OCIStorageService.js +++ b/src/OCIStorageService.js @@ -363,9 +363,41 @@ export class OCIStorageService extends BaseStorageService { 'result': result } } - upload(container, fileName, filePath, callback) { - throw new Error('OCIStorageService :: upload() must be implemented'); - } + + /** + * @upload + * @description - Uplaod file directly to OCI storage + * @param { string } container - bucket name + * @param { string } fileName - Path to the file in the bucket. + * @param { Buffer } fileContent - file data which needs to uploaded + * @return { Promise } - A signed URL for the specified operation on the file. + */ + + upload(container, fileName, fileContent, ) { + + return new Promise((resolve, reject) => { + + let params = { + Bucket: container, + Key: fileName, + Body: fileContent, + }; + + const fileUpload = new Upload({ + client: this.client, + params: params, + leavePartsOnError: false, + }); + + fileUpload.done() + .then((data) => { + resolve(data.Location); + }) + .catch((error) => { + reject(error); + }); + }); + } /** * @description - Generates a signed URL for performing specified operations on a file in the OCI bucket.