npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

node-bunny-storage

v2.2.0

Published

A simple wrapper for the bunnyCDN storage api

Downloads

267

Readme

BunnyCDN Storage API Wrapper

This is a Node.js library that provides a simple and convenient way to interact with BunnyCDN Storage.

It allows to download and upload files and complete folders, and you can download and multiple files in parallel. There is also a built-in retry for failed request. You can exclude certain file types from being uploaded or downloaded when dealing with folders. The log level is also configurable.

Installation

npm install --save node-bunny-storage

Usage

First, import the package and initialize it with your access key and storage zone name:

import BunnyCDNStorage from 'node-bunny-storage';

const bunny = new BunnyCDNStorage({accessKey: 'your-access-key', storageZoneName: 'your-storage-zone-name'});

// you can also set the concurrency, the retryCount and the log level
const bunny = new BunnyCDNStorage({
  accessKey: 'your-access-key',
  storageZoneName: 'your-storage-zone-name',
  concurrency: 10,
  retryCount: 1,
  logLevel: 'silent'
});

List Files

To list files from a remote directory:

// list all files from root folder recursively
await bunny.listFiles({
  remoteDirectory: '/',
  recursive: true,
  excludedFileTypes: ['.md'], // exclude .md files
  fileFilter: (filepath) => {
    // filter out the first file from being listed
    return !filepath.includes(fileName)
  }});

Download File

To download a file from a remote directory:

// get the remote file path using the getCompleteRemotePathFromFile function
const remoteFileDirectory = bunny.getRemotePathFromFileWithoutStorageZone(files[0]);
const fileName = files[0].ObjectName;

// download the first file from the root folder
const downloadedFilePath = await bunny.downloadFile({
  remoteDirectory: remoteFileDirectory, fileName: fileName, localDirectory: './testDownload/singleFileTestDownload'
})

Upload File

To upload a file to a remote directory:

// upload the file to /testRemoteSingleFileUpload folder
await bunny.uploadFile({
  localFilePath: './testDownload/singleFileTestDownload/' + fileName,
  remoteDirectory: 'testRemoteSingleFileUpload'
});

Delete File or Folder

To delete a file or folder from a remote directory:

// delete the first file from the root folder
await bunny.delete({remoteDirectory: remoteFileDirectory, fileName: fileName});

Upload Folder

To upload a complete local folder:

// upload all files from the ./testDownload folder to the remote /testRemoteFolderUpload folder, except .html files
await bunny.uploadFolder({
  localDirectory: './testDownload',
  remoteDirectory: 'testRemoteFolderUpload',
  recursive: true,
  excludedFileTypes: ['.html'],
  fileFilter: (filepath) => {
    // filter out first file from being uploaded
    return !filepath.includes(fileName)
  }
});

Download Folder

To download a complete remote folder:

// download all files from the remote folder including subdirectories to the ./testDownload/downloadFolderTest folder, except .png and .jpg files
const downloadedFilesPaths = await bunny.downloadFolder({
  remoteDirectory: '/',
  localDirectory: './testDownload/downloadFolderTest',
  recursive: true,
  excludedFileTypes: ['.png', '.jpg'],
  fileFilter: (filepath) => {
    // filter out the uploaded file from being downloaded
    return !filepath.includes('testRemoteFolderUpload')
  }
});

Example

For a full example, look at the test.js script.

License

GNU General Public License v3.0