gcp-bucket
TypeScript icon, indicating that this package has built-in type declarations

1.4.2 • Public • Published

GCP Bucket Library

The GCP Bucket Library facilitates seamless interactions with Google Cloud Storage buckets. It allows the uploading of files from various data types like strings, blobs, or buffers. Additionally, if the file to be uploaded is an image, the library provides the capability to resize the image into multiple dimensions as specified.

Getting Started

First, you need to initialize an instance of the GCPBucket class.

// Initialize your GCPBucket instance
const gcpBucket = new GCPBucket({
  bucketName: 'your-bucket-name',
  firebaseApp: <your firebase-admin instance>,
  chunkSize: 1024, // Optional chuck size to upload
  encryptKey: "key" // Optional An AES-256 encryption key.
});

Examples

Example 1: Uploading a Simple File (Any Type)

// Define the folder and file name for the upload
const folderName = 'uploads';
const fileName = file.originalname;

// Prepare file content
const fileContent = {
  folderName,
  fileName,
  fileData: file.buffer,
};

// Upsert the file to GCP
const result = await gcpBucket.upsertFiles(fileContent);

// The result will be
// [
//     {
//         "fileUrl": "file-url",
//         "filePath": "file-path",
//         "fileName": "file-name",
//         "fileType": "file-type",
//         "fileContentType": "file-content-type"
//     }
// ]

Example 2: Uploading and Resizing Images

// Define the folder and file name for the upload
const folderName = 'uploads';
const fileName = file.originalname;

// Prepare file content
const fileContent = {
  folderName,
  fileName,
  fileData: file.buffer,
  resizeOptions: [
    {
      height: 400,
      width: 400,
      fileName: "MediumImgFile"
      fit: 'inside',
    },
    { height: 200, width: 200, fileResizePrefix: 'small-', fit: 'inside' },
  ],
};

// Upsert the file to GCP
const result = await gcpBucket.upsertFiles(fileContent, callbackProcessPercentage);

callbackProcessPercentage is a callback function that gets invoked with the file path and the percentage of the resize process.

Method: deleteFile

Deleting a File

Parameters:

  • filePath (string) : The file path in the bucket.
await gcpBucket.deleteFile(filePath);

Method: download

Downloading a File

Parameters:

  • filePath (string) : The file path in the bucket.
await gcpBucket.download(filePath);

Method: isImage

Checking if a File is an Image

Parameters:

  • fileData (TFileContent['fileData']) : The image data which can be a Base64 string, Blob, or Buffer.
await gcpBucket.isImage(fileData);

Method: getImageSizeByFactor

This method resizes an image by a specified scale factor and returns the new dimensions along with a buffer of the resized image.

Parameters:

  • data (TFileContent['fileData']): The image data which can be a Base64 string, Blob, or Buffer.
  • scaleFactor (number): The scaling factor to resize the image. For example, a scaleFactor of 0.5 will reduce the image dimensions by 50%.
  • imgFit (keyof sharp.FitEnum | optional): The fit strategy for sharp to follow when resizing the image. Default is undefined.

Returns:

An object containing:

  • width (number): The new width of the resized image.
  • height (number): The new height of the resized image.
  • buffer (Buffer): A buffer of the resized image.

Usage:

const result = await gcpBucket.getImageSizeByFactor(fileData, 0.5, 'inside');

Method: getImageMetadata

This method retrieves and returns metadata of the specified image.

Parameters:

  • data (TFileContent['fileData']): The image data which can be a Base64 string, Blob, or Buffer.

Returns:

A Promise resolving to a sharp.Metadata object containing metadata information of the image.

Usage:

const metadata = await gcpBucket.getImageMetadata(fileData);

Method: getImage

This method return a new image with other size.

Parameters:

  • data (TFileContent['fileData']): The image data which can be a Base64 string, Blob, or Buffer.
  • newSize (TResizeOptions): The new image dimensions.

Returns:

  • buffer (Buffer): A buffer of the resized image.

Usage:

const metadata = await gcpBucket.getImage(fileData, {
  height: 100,
  width: 100,
  fit: 'cover',
});

Package Sidebar

Install

npm i gcp-bucket

Weekly Downloads

1

Version

1.4.2

License

MIT

Unpacked Size

24.4 kB

Total Files

6

Last publish

Collaborators

  • lucianorarrua
  • eltomaa