Git Product home page Git Product logo

cabinet's People

Contributors

johncmckim avatar pariesz avatar samuelabj avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

cabinet's Issues

Add Cabinet size methods

Methods to check the space remaining total space will enable us to be smart about replication. For example, we don't want to replicate files and cause the disk to completely fill up.

  • IFileCabinet - long? GetStorageSpace() // size of underlying store - null would indicated unlimited
  • IFIleCabinet - long GetSize() // total size of files in cabinet
  • IFileCabinet - long? GetAvailableSize() // space available in underlying store - null would indicate unlimited

Couple of ideas / features

Hi,

First, this is awesome, looks like just what I need, however I noticed a couple of things which I need which are missing and I wanted to check if you'd considered them

  • Directory Management (Create/Move/Copy).
    I realize on key/value stores like S3 there is no such thing as a directory, but I need a way to create a browsable directory hierarchy, no matter what storage provider.
  • Ability to get the url to a file.
    For the filesystem provider this doesn't make a whole lot of sense but for S3 et al it does. Maybe the filesystem provider could return the full path? Or you can provide a config setting which specifies a base url?
  • Azure support.
    I see you have an old in-progress PR - are you continuing with that or is that somewhat abandoned?

Anyway, great work, thanks!

Migration Support

Provide support from migrating from one FileCabinet to another. For example, on disk to s3 or on disk on one location to another location.

This will require:

  • A IFileCabinet that lazily migrates files from one File Cabinet to another.
  • A replication task to move files from one provider to another.
  • Leave old provider as is during migration (safer) - ability to delete files from old provider once safe to do so.

UploadKeyProvider should join path using KeyUtils

The UploadKeyProvider current uses Path.Combine to join the guid and filename into a key. This causes issues for non-filesystem providers that may have a different delimiter. It should require the delimiter and use KeyUtils.JoinKeys

Azure Support

Create a project with an Azure provider to store files in the Azure blob store.

Migration Task Runner never completes

The migration task runner executes all the task but never completes. This is likely due to the use of the TransformBlock rather than an ActionBlock.

Support for loading various config options from disk

To allow easier configuration create providers that can load config from JSON stored on disk.

Example config file.

{
    "ondisk": {
        "type": "FileSystem",
        "config": {
            "dir": "~/App_Data/Uploads",
            "createIfNotExists": true
        }
    },
    "amazon": {
        "type": "AmazonS3",
        "config": {
            "credentials": {
                "type":  "profile", // environment, environment-variable, basic
                "name": "some-name"
            },
            "region": "ap-southeast-2",
            "bucket": "test-bucket"
        }
    }
}

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.