Skip to content

MatchbookLab/goferfs-adapter-gcs

Repository files navigation

Google Cloud Storage Adapter for Gofer

Gofer is a file abstraction library written in Node. It aims to have one consistent API for multiple different storage solutions, called Adapters. This is the Adapter for Google Cloud Storage.

Notice: Due to an upstream issue with grpc (used by google-cloude-node), this may not work on Node 7... See googleapis/google-cloud-node#1753

Getting Started

First, install Gofer and this Adapter:

npm install goferfs goferfs-adapter-gcs

To create an adapter, you need to provide your Project ID, a bucket name, and your authentication from https://console.cloud.google.com/storage.

You must create the bucket ahead of time, this adapter assumes one already exists.

Google Cloud supports 3 ways to authenticate: a path to a keyfile.json, the contents of a keyfile.json or an API key:

import Gofer from 'goferfs';
import GcsAdapter from 'goferfs-adapter-gcs';

const gcsAdapter = new GcsAdapter({
    projectId: 'my-project',
    bucket: 'my-bucket',
    
    // provide ONE of the following:

    // the path to a keyfile.json...
    keyFilename: 'path/to/keyfile.json',
    // ...or the contents of a keyfile.json
    credentials: require('path/to/keyfile.json'),
});

const gofer = new Gofer(gcsAdapter);

Docs

For documentation on usage, please visit the main Gofer project, while noting the caveats below:

Caveats

Google Cloud Storage (GCS) does not have the concept of "directories." createDirectory will do nothing and always returns Promise<null>.

However, you can delete by prefix, so deleteDir('some/directory') will delete all the files prefixed with that, i.e. some/directory/file1.txt and some/directory/file2.txt, etc.

The Public visibility mode will make files publicly viewable via the web (i.e. via the Share checkbox in the console), whereas Private files are not.

Contribution

To contribute...

About

Google Cloud Storage Adapter for Gofer

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published