GetObject s3api and fGetObject api

- Also updates to lts 6.27 (to be able to use sinkFileCautious)
This commit is contained in:
Aditya Manthramurthy 2017-01-06 02:57:26 +05:30
parent fe1dfe24d6
commit 73a88143d5
6 changed files with 44 additions and 13 deletions

View File

@ -31,5 +31,7 @@ main = do
res <- getLocation "test1" res <- getLocation "test1"
print res print res
fGetObject "test1" "passwd" "/tmp/passwd"
print "After runResourceT" print "After runResourceT"
print t print t

View File

@ -31,9 +31,12 @@ library
, bytestring , bytestring
, case-insensitive , case-insensitive
, conduit , conduit
, conduit-combinators
, conduit-extra
, containers , containers
, cryptonite , cryptonite
, errors , errors
, filepath
, http-client , http-client
, http-conduit , http-conduit
, http-types , http-types

View File

@ -1,5 +1,6 @@
module Network.Minio module Network.Minio
( module Exports ( module Exports
, fGetObject
) where ) where
{- {-
@ -19,3 +20,17 @@ import Network.Minio.Data as
, connect , connect
, ConnectInfo(..) , ConnectInfo(..)
) )
import System.FilePath
import qualified Data.Conduit as C
import qualified Data.Conduit.Binary as CB
import Lib.Prelude
import Network.Minio.Data
import Network.Minio.S3API
fGetObject :: Bucket -> Object -> FilePath -> Minio ()
fGetObject bucket object fp = do
(_, src) <- getObject bucket object [] []
src C.$$+- CB.sinkFileCautious fp

View File

@ -5,6 +5,7 @@ module Network.Minio.API
, RequestInfo(..) , RequestInfo(..)
, runMinio , runMinio
, executeRequest , executeRequest
, mkStreamRequest
, requestInfo , requestInfo
) where ) where
@ -61,8 +62,9 @@ executeRequest ri = do
NC.httpLbs req mgr NC.httpLbs req mgr
mkSRequest :: RequestInfo -> Minio (Response (C.ResumableSource Minio ByteString)) mkStreamRequest :: RequestInfo
mkSRequest ri = do -> Minio (Response (C.ResumableSource Minio ByteString))
mkStreamRequest ri = do
let PayloadSingle pload = payload ri let PayloadSingle pload = payload ri
phash = hashSHA256 pload phash = hashSHA256 pload
newRI = ri { newRI = ri {

View File

@ -1,10 +1,12 @@
module Network.Minio.S3API module Network.Minio.S3API
( getService ( getService
, getLocation , getLocation
, getObject
) where ) where
import qualified Network.HTTP.Types as HT import qualified Network.HTTP.Types as HT
import qualified Network.HTTP.Conduit as NC import qualified Network.HTTP.Conduit as NC
import qualified Data.Conduit as C
import Lib.Prelude import Lib.Prelude
@ -27,4 +29,11 @@ getLocation bucket = do
(PayloadSingle "") (PayloadSingle "")
parseLocation $ NC.responseBody resp parseLocation $ NC.responseBody resp
-- getObject :: getObject :: Bucket -> Object -> HT.Query -> [HT.Header]
-> Minio ([HT.Header], C.ResumableSource Minio ByteString)
getObject bucket object queryParams headers = do
resp <- mkStreamRequest reqInfo
return $ (NC.responseHeaders resp, NC.responseBody resp)
where
reqInfo = requestInfo HT.methodGet (Just bucket) (Just object)
queryParams headers (PayloadSingle "")

View File

@ -1,5 +1,5 @@
# This file was automatically generated by 'stack init' # This file was automatically generated by 'stack init'
# #
# Some commonly used options have been documented as comments in this file. # Some commonly used options have been documented as comments in this file.
# For advanced use and comprehensive documentation of the format, please see: # For advanced use and comprehensive documentation of the format, please see:
# http://docs.haskellstack.org/en/stable/yaml_configuration/ # http://docs.haskellstack.org/en/stable/yaml_configuration/
@ -7,7 +7,7 @@
# Resolver to choose a 'specific' stackage snapshot or a compiler version. # Resolver to choose a 'specific' stackage snapshot or a compiler version.
# A snapshot resolver dictates the compiler version and the set of packages # A snapshot resolver dictates the compiler version and the set of packages
# to be used for project dependencies. For example: # to be used for project dependencies. For example:
# #
# resolver: lts-3.5 # resolver: lts-3.5
# resolver: nightly-2015-09-21 # resolver: nightly-2015-09-21
# resolver: ghc-7.10.2 # resolver: ghc-7.10.2
@ -15,11 +15,11 @@
# resolver: # resolver:
# name: custom-snapshot # name: custom-snapshot
# location: "./custom-snapshot.yaml" # location: "./custom-snapshot.yaml"
resolver: lts-6.15 resolver: lts-6.27
# User packages to be built. # User packages to be built.
# Various formats can be used as shown in the example below. # Various formats can be used as shown in the example below.
# #
# packages: # packages:
# - some-directory # - some-directory
# - https://example.com/foo/bar/baz-0.0.2.tar.gz # - https://example.com/foo/bar/baz-0.0.2.tar.gz
@ -31,7 +31,7 @@ resolver: lts-6.15
# subdirs: # subdirs:
# - auto-update # - auto-update
# - wai # - wai
# #
# A package marked 'extra-dep: true' will only be built if demanded by a # A package marked 'extra-dep: true' will only be built if demanded by a
# non-dependency (i.e. a user package), and its test suites and benchmarks # non-dependency (i.e. a user package), and its test suites and benchmarks
# will not be run. This is useful for tweaking upstream packages. # will not be run. This is useful for tweaking upstream packages.
@ -49,18 +49,18 @@ extra-package-dbs: []
# Control whether we use the GHC we find on the path # Control whether we use the GHC we find on the path
# system-ghc: true # system-ghc: true
# #
# Require a specific version of stack, using version ranges # Require a specific version of stack, using version ranges
# require-stack-version: -any # Default # require-stack-version: -any # Default
# require-stack-version: ">=1.1" # require-stack-version: ">=1.1"
# #
# Override the architecture used by stack, especially useful on Windows # Override the architecture used by stack, especially useful on Windows
# arch: i386 # arch: i386
# arch: x86_64 # arch: x86_64
# #
# Extra directories used by stack for building # Extra directories used by stack for building
# extra-include-dirs: [/path/to/dir] # extra-include-dirs: [/path/to/dir]
# extra-lib-dirs: [/path/to/dir] # extra-lib-dirs: [/path/to/dir]
# #
# Allow a newer minor version of GHC than the snapshot specifies # Allow a newer minor version of GHC than the snapshot specifies
# compiler-check: newer-minor # compiler-check: newer-minor