All Projects → minio → Minio Hs

minio / Minio Hs

Licence: apache-2.0
MinIO Client SDK for Haskell

Programming Languages

haskell
3896 projects

Projects that are alternatives of or similar to Minio Hs

Goofys
a high-performance, POSIX-ish Amazon S3 file system written in Go
Stars: ✭ 3,932 (+9982.05%)
Mutual labels:  s3, aws-s3, cloud-storage, s3-bucket
Sbt S3 Resolver
☁️Amazon S3-based resolver for sbt
Stars: ✭ 112 (+187.18%)
Mutual labels:  s3, aws-s3, s3-bucket
Cloudserver
Zenko CloudServer, an open-source Node.js implementation of the Amazon S3 protocol on the front-end and backend storage capabilities to multiple clouds, including Azure and Google.
Stars: ✭ 1,167 (+2892.31%)
Mutual labels:  aws-s3, cloud-storage, object-storage
Cloudexplorer
Cloud Explorer
Stars: ✭ 170 (+335.9%)
Mutual labels:  s3, cloud-storage, s3-bucket
0x4447 product s3 email
📫 A serverless email server on AWS using S3 and SES
Stars: ✭ 2,905 (+7348.72%)
Mutual labels:  s3, aws-s3, s3-bucket
Bucket-Flaws
Bucket Flaws ( S3 Bucket Mass Scanner ): A Simple Lightweight Script to Check for Common S3 Bucket Misconfigurations
Stars: ✭ 43 (+10.26%)
Mutual labels:  aws-s3, s3, s3-bucket
S3fs Fuse
FUSE-based file system backed by Amazon S3
Stars: ✭ 5,733 (+14600%)
Mutual labels:  s3, aws-s3, cloud-storage
ossperf
A lightweight tool for analyzing the performance and data integrity of object-based storage services
Stars: ✭ 67 (+71.79%)
Mutual labels:  aws-s3, cloud-storage, object-storage
flask-drive
A simple Flask app to upload and download files off Amazon's S3
Stars: ✭ 23 (-41.03%)
Mutual labels:  aws-s3, s3, s3-bucket
BlobHelper
BlobHelper is a common, consistent storage interface for Microsoft Azure, Amazon S3, Komodo, Kvpbase, and local filesystem written in C#.
Stars: ✭ 23 (-41.03%)
Mutual labels:  aws-s3, s3, s3-bucket
minio-ruby
MinIO Client SDK for Ruby
Stars: ✭ 26 (-33.33%)
Mutual labels:  aws-s3, s3-bucket, object-storage
ionic-image-upload
Ionic Plugin for Uploading Images to Amazon S3
Stars: ✭ 26 (-33.33%)
Mutual labels:  aws-s3, s3, s3-bucket
simply-static-deploy
WordPress plugin to deploy static sites easily to an AWS S3 bucket.
Stars: ✭ 48 (+23.08%)
Mutual labels:  aws-s3, s3, s3-bucket
Infinit
The Infinit policy-based software-defined storage platform.
Stars: ✭ 363 (+830.77%)
Mutual labels:  s3, object-storage
Zenko
Zenko is the open source multi-cloud data controller: own and keep control of your data on any cloud.
Stars: ✭ 353 (+805.13%)
Mutual labels:  aws-s3, object-storage
Dsync
A distributed sync package.
Stars: ✭ 377 (+866.67%)
Mutual labels:  cloud-storage, object-storage
Cortx
CORTX Community Object Storage is 100% open source object storage uniquely optimized for mass capacity storage devices.
Stars: ✭ 426 (+992.31%)
Mutual labels:  s3, object-storage
Minio Py
MinIO Client SDK for Python
Stars: ✭ 400 (+925.64%)
Mutual labels:  aws-s3, s3-bucket
Minio Java
MinIO Client SDK for Java
Stars: ✭ 444 (+1038.46%)
Mutual labels:  aws-s3, s3-bucket
S3 Sync Action
🔄 GitHub Action to sync a directory with a remote S3 bucket 🧺
Stars: ✭ 497 (+1174.36%)
Mutual labels:  s3, aws-s3

MinIO Client SDK for Haskell Build StatusHackageSlack

The MinIO Haskell Client SDK provides simple APIs to access MinIO and Amazon S3 compatible object storage server.

Minimum Requirements

Installation

Add to your project

Simply add minio-hs to your project's .cabal dependencies section or if you are using hpack, to your package.yaml file as usual.

Try it out directly with ghci

From your home folder or any non-haskell project directory, just run:

stack install minio-hs

Then start an interpreter session and browse the available APIs with:

$ stack ghci
> :browse Network.Minio

Examples

The examples folder contains many examples that you can try out and use to learn and to help with developing your own projects.

Quick-Start Example - File Uploader

This example program connects to a MinIO object storage server, makes a bucket on the server and then uploads a file to the bucket.

We will use the MinIO server running at https://play.min.io in this example. Feel free to use this service for testing and development. Access credentials are present in the library and are open to the public.

FileUploader.hs

#!/usr/bin/env stack
-- stack --resolver lts-14.11 runghc --package minio-hs --package optparse-applicative --package filepath

--
-- MinIO Haskell SDK, (C) 2017-2019 MinIO, Inc.
--
-- Licensed under the Apache License, Version 2.0 (the "License");
-- you may not use this file except in compliance with the License.
-- You may obtain a copy of the License at
--
--     http://www.apache.org/licenses/LICENSE-2.0
--
-- Unless required by applicable law or agreed to in writing, software
-- distributed under the License is distributed on an "AS IS" BASIS,
-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-- See the License for the specific language governing permissions and
-- limitations under the License.
--


{-# LANGUAGE OverloadedStrings   #-}
{-# LANGUAGE ScopedTypeVariables #-}
import           Network.Minio

import           Data.Monoid           ((<>))
import           Data.Text             (pack)
import           Options.Applicative
import           System.FilePath.Posix
import           UnliftIO              (throwIO, try)

import           Prelude

-- | The following example uses minio's play server at
-- https://play.min.io.  The endpoint and associated
-- credentials are provided via the libary constant,
--
-- > minioPlayCI :: ConnectInfo
--

-- optparse-applicative package based command-line parsing.
fileNameArgs :: Parser FilePath
fileNameArgs = strArgument
               (metavar "FILENAME"
                <> help "Name of file to upload to AWS S3 or a MinIO server")

cmdParser = info
            (helper <*> fileNameArgs)
            (fullDesc
             <> progDesc "FileUploader"
             <> header
             "FileUploader - a simple file-uploader program using minio-hs")

main :: IO ()
main = do
  let bucket = "my-bucket"

  -- Parse command line argument
  filepath <- execParser cmdParser
  let object = pack $ takeBaseName filepath

  res <- runMinio minioPlayCI $ do
    -- Make a bucket; catch bucket already exists exception if thrown.
    bErr <- try $ makeBucket bucket Nothing

    -- If the bucket already exists, we would get a specific
    -- `ServiceErr` exception thrown.
    case bErr of
      Left BucketAlreadyOwnedByYou -> return ()
      Left e                       -> throwIO e
      Right _                      -> return ()

    -- Upload filepath to bucket; object name is derived from filepath.
    fPutObject bucket object filepath defaultPutObjectOptions

  case res of
    Left e   -> putStrLn $ "file upload failed due to " ++ show e
    Right () -> putStrLn "file upload succeeded."

Run FileUploader

./FileUploader.hs "path/to/my/file"

Contribute

Contributors Guide

Development

To setup:

git clone https://github.com/minio/minio-hs.git

cd minio-hs/

stack install

Tests can be run with:

stack test

A section of the tests use the remote MinIO Play server at https://play.min.io by default. For library development, using this remote server maybe slow. To run the tests against a locally running MinIO live server at http://localhost:9000, just set the environment MINIO_LOCAL to any value (and unset it to switch back to Play).

To run the live server tests, set a build flag as shown below:

stack test --flag minio-hs:live-test

# OR against a local MinIO server with:

MINIO_LOCAL=1 stack test --flag minio-hs:live-test

The configured CI system always runs both test-suites for every change.

Documentation can be locally built with:

stack haddock

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].