-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | DigitalOcean Spaces API bindings -- -- See the README at https://gitlab.com/ngua/do-spaces-hs @package do-spaces @version 0.2 module Network.DO.Spaces.Types newtype SpacesT m a SpacesT :: ReaderT Spaces m a -> SpacesT m a runSpacesT :: SpacesT m a -> Spaces -> m a -- | A client for interacting with the DO Spaces API data Spaces Spaces :: AccessKey -> SecretKey -> Region -> Manager -> Spaces -- | Your DO Spaces access key [$sel:accessKey:Spaces] :: Spaces -> AccessKey -- | Your DO Spaces secret key [$sel:secretKey:Spaces] :: Spaces -> SecretKey -- | The DO region [$sel:region:Spaces] :: Spaces -> Region -- | HTTP Manager [$sel:manager:Spaces] :: Spaces -> Manager -- | A synonym for the constraints necessary to run SpacesT actions type MonadSpaces m = (MonadReader Spaces m, MonadIO m, MonadUnliftIO m, MonadCatch m) class Monad m => Action m a where { type family ConsumedResponse a :: Type; } buildRequest :: Action m a => a -> m SpacesRequestBuilder consumeResponse :: Action m a => RawResponse m -> m (ConsumedResponse a) -- | How to discover the Region, AccessKey, and -- SecretKey when creating a new Spaces client. data CredentialSource -- | Try a sequence of different sources until one succeeds Discover :: CredentialSource -- | Region, AccessKey and SecretKey env vars FromEnv :: Maybe (Text, Text, Text) -> CredentialSource -- | Load your credentials from a file, optionally providing the profile to -- use (or default as the... default). FromFile :: FilePath -> Maybe Profile -> CredentialSource -- | Provide all values explicitly Explicit :: Region -> AccessKey -> SecretKey -> CredentialSource -- | The name of a per-project configuration profile to select when loading -- credentials from a file type Profile = Text -- | Spaces access key newtype AccessKey AccessKey :: ByteString -> AccessKey [$sel:unAccessKey:AccessKey] :: AccessKey -> ByteString -- | Spaces secret key newtype SecretKey SecretKey :: ByteString -> SecretKey [$sel:unSecretKey:SecretKey] :: SecretKey -> ByteString -- | The name of a "key", in AWS parlance newtype Object Object :: Text -> Object -- | Smart constructor for Objects; names must not be empty mkObject :: MonadThrow m => Text -> m Object -- | The name of a single storage bucket newtype Bucket Bucket :: Text -> Bucket -- | Smart constructor for Buckets; names must conform to the -- following rules: -- -- -- -- This function ensures that names are valid and will also convert the -- Text to lowercase mkBucket :: MonadThrow m => Text -> m Bucket -- | Information about a single Bucket data BucketInfo BucketInfo :: Bucket -> UTCTime -> BucketInfo [$sel:name:BucketInfo] :: BucketInfo -> Bucket [$sel:creationDate:BucketInfo] :: BucketInfo -> UTCTime -- | The ID of an Owner; also serves as a display name in Spaces newtype OwnerID OwnerID :: Int -> OwnerID -- | The display name is always equivalent to the owner's ID; Spaces -- includes it for AWS compatibility type DisplayName = OwnerID -- | The resource owner data Owner Owner :: OwnerID -> DisplayName -> Owner [$sel:ownerID:Owner] :: Owner -> OwnerID [$sel:displayName:Owner] :: Owner -> DisplayName -- | Information about a single Object, returned when listing a -- Bucket's contents data ObjectInfo ObjectInfo :: Object -> UTCTime -> ETag -> Int -> Owner -> ObjectInfo [$sel:object:ObjectInfo] :: ObjectInfo -> Object [$sel:lastModified:ObjectInfo] :: ObjectInfo -> UTCTime [$sel:etag:ObjectInfo] :: ObjectInfo -> ETag -- | Size in bytes [$sel:size:ObjectInfo] :: ObjectInfo -> Int [$sel:owner:ObjectInfo] :: ObjectInfo -> Owner -- | Metadata returned when querying information about an Object data ObjectMetadata ObjectMetadata :: Int -> MimeType -> ETag -> UTCTime -> ObjectMetadata -- | length in bytes [$sel:contentLength:ObjectMetadata] :: ObjectMetadata -> Int [$sel:contentType:ObjectMetadata] :: ObjectMetadata -> MimeType [$sel:etag:ObjectMetadata] :: ObjectMetadata -> ETag [$sel:lastModified:ObjectMetadata] :: ObjectMetadata -> UTCTime -- | MD5 hash of an Object type ETag = Text data SpacesRequest SpacesRequest :: Request -> Spaces -> [Header] -> Method -> Hashed -> Canonicalized Request -> UTCTime -> SpacesRequest -- | The actual HTTP Request [$sel:request:SpacesRequest] :: SpacesRequest -> Request -- | Your Spaces configuration [$sel:spaces:SpacesRequest] :: SpacesRequest -> Spaces -- | Obligatory Headers that will be added to the request [$sel:headers:SpacesRequest] :: SpacesRequest -> [Header] -- | The HTTP Method [$sel:method:SpacesRequest] :: SpacesRequest -> Method -- | The SHA256 hash of the RequestBody contents [$sel:payloadHash:SpacesRequest] :: SpacesRequest -> Hashed -- | The canonicalized HTTP Request [$sel:canonicalRequest:SpacesRequest] :: SpacesRequest -> Canonicalized Request [$sel:time:SpacesRequest] :: SpacesRequest -> UTCTime -- | A ConsumedResponse with optional SpacesMetadata data SpacesResponse a SpacesResponse :: ConsumedResponse a -> Maybe SpacesMetadata -> SpacesResponse a -- | A Response consumed by an Action instance [$sel:result:SpacesResponse] :: SpacesResponse a -> ConsumedResponse a -- | SpacesMetadata, the retention of which can be controlled using -- WithMetadata [$sel:metadata:SpacesResponse] :: SpacesResponse a -> Maybe SpacesMetadata data SpacesRequestBuilder SpacesRequestBuilder :: Spaces -> Maybe RequestBody -> Maybe Method -> [Header] -> Maybe Bucket -> Maybe Object -> Maybe Query -> Maybe Query -> Maybe Region -> SpacesRequestBuilder [$sel:spaces:SpacesRequestBuilder] :: SpacesRequestBuilder -> Spaces [$sel:body:SpacesRequestBuilder] :: SpacesRequestBuilder -> Maybe RequestBody [$sel:method:SpacesRequestBuilder] :: SpacesRequestBuilder -> Maybe Method [$sel:headers:SpacesRequestBuilder] :: SpacesRequestBuilder -> [Header] [$sel:bucket:SpacesRequestBuilder] :: SpacesRequestBuilder -> Maybe Bucket [$sel:object:SpacesRequestBuilder] :: SpacesRequestBuilder -> Maybe Object [$sel:queryString:SpacesRequestBuilder] :: SpacesRequestBuilder -> Maybe Query [$sel:subresources:SpacesRequestBuilder] :: SpacesRequestBuilder -> Maybe Query -- | Certain operations, currently only CreateBucket, should be able -- to override the region configured in the Spaces client [$sel:overrideRegion:SpacesRequestBuilder] :: SpacesRequestBuilder -> Maybe Region -- | Metadata and other response information returned from each Spaces API -- transaction; it can be helpful to retain this at times data SpacesMetadata SpacesMetadata :: Maybe RequestID -> Maybe UTCTime -> Status -> SpacesMetadata -- | Unique ID assigned to your request. This is not included in all -- responses [$sel:requestID:SpacesMetadata] :: SpacesMetadata -> Maybe RequestID [$sel:date:SpacesMetadata] :: SpacesMetadata -> Maybe UTCTime -- | HTTP status [$sel:status:SpacesMetadata] :: SpacesMetadata -> Status -- | Whether or not to retain SpacesMetadata when consuming -- responses data WithMetadata KeepMetadata :: WithMetadata NoMetadata :: WithMetadata data RawResponse m RawResponse :: [Header] -> BodyBS m -> RawResponse m [$sel:headers:RawResponse] :: RawResponse m -> [Header] [$sel:body:RawResponse] :: RawResponse m -> BodyBS m -- | A request or response body type BodyBS m = ConduitT () ByteString m () -- | HTTP request methods, to avoid using http-client's -- stringly-typed Method synonym data Method GET :: Method POST :: Method PUT :: Method DELETE :: Method HEAD :: Method -- | DO regions where Spaces is available (only a subset of all regions) data Region -- | NYC3 NewYork :: Region -- | AMS3 Amsterdam :: Region -- | SFO3 SanFrancisco :: Region -- | SGP1 Singapore :: Region -- | FRA1 Frankfurt :: Region -- | A unique ID that is assigned to each request type RequestID = Text -- | Cache-Control request header value type CacheControl = Text -- | Content-Disposition request header value type ContentDisposition = Text -- | Content-Encoding request header value type ContentEncoding = Text -- | Arbitrary key-value pairs supplied by the user, for use in -- PUT or POST requests. Each pair expands into -- x-amz-meta-*, e.g. x-amz-meta-s3cmd-attrs: -- uid:1000/gname:asb... type UserMetadata = [(Text, Text)] -- | Optional headers when uploading objects data UploadHeaders UploadHeaders :: Maybe CannedACL -> Maybe CacheControl -> Maybe ContentDisposition -> Maybe ContentEncoding -> UserMetadata -> UploadHeaders [$sel:acl:UploadHeaders] :: UploadHeaders -> Maybe CannedACL [$sel:cacheControl:UploadHeaders] :: UploadHeaders -> Maybe CacheControl [$sel:contentDisposition:UploadHeaders] :: UploadHeaders -> Maybe ContentDisposition [$sel:contentEncoding:UploadHeaders] :: UploadHeaders -> Maybe ContentEncoding [$sel:metadata:UploadHeaders] :: UploadHeaders -> UserMetadata -- | "Canned" access controls; Spaces doesn't support the full range -- offered by s3 data CannedACL -- | No unauthenticated public access Private :: CannedACL -- | Unauthenticated public read access permitted PublicRead :: CannedACL -- | Cross-origin resource sharing rules data CORSRule CORSRule :: Text -> [Method] -> [HeaderName] -> CORSRule [$sel:allowedOrigin:CORSRule] :: CORSRule -> Text [$sel:allowedMethods:CORSRule] :: CORSRule -> [Method] [$sel:allowedHeaders:CORSRule] :: CORSRule -> [HeaderName] -- | Smart constructor for CORSRule. Ensures that both origins and -- header names contain a maximum of one wildcard and removes duplicates -- from both headers and methods mkCORSRule :: MonadThrow m => Text -> [Method] -> [HeaderName] -> m CORSRule -- | An individual access grant data Grant Grant :: Permission -> Grantee -> Grant [$sel:permission:Grant] :: Grant -> Permission [$sel:grantee:Grant] :: Grant -> Grantee -- | Access grant level; Spaces currently only supports these two levels data Permission ReadOnly :: Permission FullControl :: Permission -- | Information about who an access grant applies to data Grantee -- | Nominally contains a URI value, but Spaces only supports a single -- value for group access grants Group :: Grantee CanonicalUser :: Owner -> Grantee -- | A generic type for describing ACL configuration, can be applied to -- both Bucket and Object ACLs data ACLResponse ACLResponse :: Owner -> [Grant] -> ACLResponse [$sel:owner:ACLResponse] :: ACLResponse -> Owner [$sel:accessControlList:ACLResponse] :: ACLResponse -> [Grant] -- | Lifecycle configuration for a Bucket data LifecycleRule LifecycleRule :: LifecycleID -> Bool -> Maybe Text -> Maybe LifecycleExpiration -> Maybe Days -> LifecycleRule [$sel:lifecycleID:LifecycleRule] :: LifecycleRule -> LifecycleID -- | The status of the LifecycleRule [$sel:enabled:LifecycleRule] :: LifecycleRule -> Bool -- | When specified, only Objects which share the prefix will be -- affected by the lifecycle rules [$sel:prefix:LifecycleRule] :: LifecycleRule -> Maybe Text [$sel:expiration:LifecycleRule] :: LifecycleRule -> Maybe LifecycleExpiration -- | When specified, configures the deletion of incomplete multipart -- uploads [$sel:abortIncomplete:LifecycleRule] :: LifecycleRule -> Maybe Days -- | Configuration for automatically deleting expire Objects data LifecycleExpiration AfterDays :: Days -> LifecycleExpiration OnDate :: UTCTime -> LifecycleExpiration -- | A unique ID for a LifecycleRule newtype LifecycleID LifecycleID :: Text -> LifecycleID -- | Smart constructor for LifecycleID, which may contain a maximum -- of 255 characters, including spaces mkLifecycleID :: MonadThrow m => Text -> m LifecycleID -- | Represents some resource that has been canonicalized according to the -- Spaces/AWS v4 spec newtype Canonicalized a Canonicalized :: ByteString -> Canonicalized a -- | A strict ByteString that has been computed according to some -- part of the AWS v4 spec. The AWS v4 signature is calculated from a -- series of interdependent computations. It would be possible to -- represent these all as ByteStrings; this approach, however, -- would make it easy to confuse two sequences that are not semantically -- equivalent, leading to the generation of malformed singatures. The -- promiscuous use of ByteStrings also makes for unclear type -- signatures. Using a GADT with type synonyms is simpler than creating a -- newtype for each type of computation data Computed (a :: ComputedTag) [Hashed] :: ByteString -> Computed Hash -- | Represents a "string to sign" that has been computed according to the -- Spaces/AWS v4 spec [StringToSign] :: ByteString -> Computed StrToSign -- | Signed hash of a Request body, a SecretKey, and request -- information [Signature] :: ByteString -> Computed Sig [Credentials] :: ByteString -> Computed Cred -- | Authorization string containing information about your -- AccessKey and your request [Authorization] :: ByteString -> Computed Auth type StringToSign = Computed 'StrToSign type Hashed = Computed 'Hash type Signature = Computed 'Sig type Credentials = Computed 'Cred type Authorization = Computed 'Auth -- | Extract the ByteString from something Computed uncompute :: Computed a -> ByteString -- | The base Exception type for both ClientExceptions and -- APIExceptions data SpacesException -- | An exception generated within the Spaces client data ClientException InvalidRequest :: Text -> ClientException InvalidResponse :: Text -> ClientException InvalidXML :: Text -> ClientException ConfigurationError :: Text -> ClientException -- | This includes the raw Response body, read into a lazy -- ByteString HTTPStatus :: Status -> ByteString -> ClientException OtherError :: Text -> ClientException -- | An s3-compatible API error response, sent as XML data APIException APIException :: Status -> Text -> RequestID -> Text -> APIException -- | HTTP Status [$sel:status:APIException] :: APIException -> Status -- | The s3 error code type [$sel:code:APIException] :: APIException -> Text -- | The unique ID of the request [$sel:requestID:APIException] :: APIException -> RequestID [$sel:hostID:APIException] :: APIException -> Text type Days = Word16 instance GHC.Generics.Generic Network.DO.Spaces.Types.Region instance GHC.Classes.Eq Network.DO.Spaces.Types.Region instance GHC.Show.Show Network.DO.Spaces.Types.Region instance GHC.Read.Read Network.DO.Spaces.Types.Method instance GHC.Classes.Ord Network.DO.Spaces.Types.Method instance GHC.Generics.Generic Network.DO.Spaces.Types.Method instance GHC.Classes.Eq Network.DO.Spaces.Types.Method instance GHC.Show.Show Network.DO.Spaces.Types.Method instance Web.Internal.HttpApiData.ToHttpApiData Network.DO.Spaces.Types.Bucket instance GHC.Classes.Eq Network.DO.Spaces.Types.Bucket instance GHC.Generics.Generic Network.DO.Spaces.Types.Bucket instance GHC.Show.Show Network.DO.Spaces.Types.Bucket instance GHC.Generics.Generic Network.DO.Spaces.Types.BucketInfo instance GHC.Classes.Eq Network.DO.Spaces.Types.BucketInfo instance GHC.Show.Show Network.DO.Spaces.Types.BucketInfo instance Web.Internal.HttpApiData.ToHttpApiData Network.DO.Spaces.Types.Object instance GHC.Classes.Eq Network.DO.Spaces.Types.Object instance GHC.Generics.Generic Network.DO.Spaces.Types.Object instance GHC.Show.Show Network.DO.Spaces.Types.Object instance Web.Internal.HttpApiData.ToHttpApiData Network.DO.Spaces.Types.OwnerID instance GHC.Num.Num Network.DO.Spaces.Types.OwnerID instance GHC.Classes.Eq Network.DO.Spaces.Types.OwnerID instance GHC.Generics.Generic Network.DO.Spaces.Types.OwnerID instance GHC.Show.Show Network.DO.Spaces.Types.OwnerID instance GHC.Generics.Generic Network.DO.Spaces.Types.Owner instance GHC.Classes.Eq Network.DO.Spaces.Types.Owner instance GHC.Show.Show Network.DO.Spaces.Types.Owner instance GHC.Generics.Generic Network.DO.Spaces.Types.ObjectMetadata instance GHC.Classes.Eq Network.DO.Spaces.Types.ObjectMetadata instance GHC.Show.Show Network.DO.Spaces.Types.ObjectMetadata instance GHC.Generics.Generic Network.DO.Spaces.Types.ObjectInfo instance GHC.Classes.Eq Network.DO.Spaces.Types.ObjectInfo instance GHC.Show.Show Network.DO.Spaces.Types.ObjectInfo instance GHC.Generics.Generic Network.DO.Spaces.Types.CORSRule instance GHC.Classes.Eq Network.DO.Spaces.Types.CORSRule instance GHC.Show.Show Network.DO.Spaces.Types.CORSRule instance GHC.Classes.Ord Network.DO.Spaces.Types.Permission instance GHC.Generics.Generic Network.DO.Spaces.Types.Permission instance GHC.Classes.Eq Network.DO.Spaces.Types.Permission instance GHC.Show.Show Network.DO.Spaces.Types.Permission instance GHC.Generics.Generic Network.DO.Spaces.Types.Grantee instance GHC.Classes.Eq Network.DO.Spaces.Types.Grantee instance GHC.Show.Show Network.DO.Spaces.Types.Grantee instance GHC.Generics.Generic Network.DO.Spaces.Types.Grant instance GHC.Classes.Eq Network.DO.Spaces.Types.Grant instance GHC.Show.Show Network.DO.Spaces.Types.Grant instance GHC.Generics.Generic Network.DO.Spaces.Types.ACLResponse instance GHC.Classes.Eq Network.DO.Spaces.Types.ACLResponse instance GHC.Show.Show Network.DO.Spaces.Types.ACLResponse instance GHC.Generics.Generic Network.DO.Spaces.Types.LifecycleExpiration instance GHC.Classes.Eq Network.DO.Spaces.Types.LifecycleExpiration instance GHC.Show.Show Network.DO.Spaces.Types.LifecycleExpiration instance GHC.Generics.Generic Network.DO.Spaces.Types.LifecycleID instance GHC.Classes.Eq Network.DO.Spaces.Types.LifecycleID instance GHC.Show.Show Network.DO.Spaces.Types.LifecycleID instance GHC.Generics.Generic Network.DO.Spaces.Types.LifecycleRule instance GHC.Classes.Eq Network.DO.Spaces.Types.LifecycleRule instance GHC.Show.Show Network.DO.Spaces.Types.LifecycleRule instance GHC.Generics.Generic (Network.DO.Spaces.Types.Canonicalized a) instance GHC.Classes.Eq (Network.DO.Spaces.Types.Canonicalized a) instance GHC.Show.Show (Network.DO.Spaces.Types.Canonicalized a) instance GHC.Classes.Eq Network.DO.Spaces.Types.ComputedTag instance GHC.Show.Show Network.DO.Spaces.Types.ComputedTag instance GHC.Generics.Generic Network.DO.Spaces.Types.AccessKey instance GHC.Classes.Eq Network.DO.Spaces.Types.AccessKey instance GHC.Show.Show Network.DO.Spaces.Types.AccessKey instance GHC.Generics.Generic Network.DO.Spaces.Types.SecretKey instance GHC.Classes.Eq Network.DO.Spaces.Types.SecretKey instance GHC.Show.Show Network.DO.Spaces.Types.SecretKey instance GHC.Generics.Generic Network.DO.Spaces.Types.Spaces instance GHC.Generics.Generic Network.DO.Spaces.Types.SpacesRequestBuilder instance GHC.Generics.Generic Network.DO.Spaces.Types.SpacesRequest instance Control.Monad.IO.Unlift.MonadUnliftIO m => Control.Monad.IO.Unlift.MonadUnliftIO (Network.DO.Spaces.Types.SpacesT m) instance GHC.Base.Monad m => Control.Monad.Reader.Class.MonadReader Network.DO.Spaces.Types.Spaces (Network.DO.Spaces.Types.SpacesT m) instance Control.Monad.Catch.MonadCatch m => Control.Monad.Catch.MonadCatch (Network.DO.Spaces.Types.SpacesT m) instance Control.Monad.Catch.MonadThrow m => Control.Monad.Catch.MonadThrow (Network.DO.Spaces.Types.SpacesT m) instance Control.Monad.IO.Class.MonadIO m => Control.Monad.IO.Class.MonadIO (Network.DO.Spaces.Types.SpacesT m) instance GHC.Base.Monad m => GHC.Base.Monad (Network.DO.Spaces.Types.SpacesT m) instance GHC.Base.Applicative m => GHC.Base.Applicative (Network.DO.Spaces.Types.SpacesT m) instance GHC.Base.Functor m => GHC.Base.Functor (Network.DO.Spaces.Types.SpacesT m) instance GHC.Generics.Generic (Network.DO.Spaces.Types.SpacesT m a) instance GHC.Generics.Generic (Network.DO.Spaces.Types.RawResponse m) instance GHC.Generics.Generic Network.DO.Spaces.Types.WithMetadata instance GHC.Classes.Eq Network.DO.Spaces.Types.WithMetadata instance GHC.Show.Show Network.DO.Spaces.Types.WithMetadata instance GHC.Generics.Generic Network.DO.Spaces.Types.SpacesMetadata instance GHC.Classes.Eq Network.DO.Spaces.Types.SpacesMetadata instance GHC.Show.Show Network.DO.Spaces.Types.SpacesMetadata instance GHC.Generics.Generic (Network.DO.Spaces.Types.SpacesResponse a) instance GHC.Show.Show Network.DO.Spaces.Types.CannedACL instance GHC.Classes.Eq Network.DO.Spaces.Types.CannedACL instance GHC.Generics.Generic Network.DO.Spaces.Types.UploadHeaders instance GHC.Classes.Eq Network.DO.Spaces.Types.UploadHeaders instance GHC.Show.Show Network.DO.Spaces.Types.UploadHeaders instance GHC.Generics.Generic Network.DO.Spaces.Types.ClientException instance GHC.Classes.Eq Network.DO.Spaces.Types.ClientException instance GHC.Show.Show Network.DO.Spaces.Types.ClientException instance GHC.Generics.Generic Network.DO.Spaces.Types.APIException instance GHC.Classes.Eq Network.DO.Spaces.Types.APIException instance GHC.Show.Show Network.DO.Spaces.Types.APIException instance GHC.Show.Show (Network.DO.Spaces.Types.Computed a) instance GHC.Classes.Eq (Network.DO.Spaces.Types.Computed a) instance GHC.Show.Show (Network.DO.Spaces.Types.ConsumedResponse a) => GHC.Show.Show (Network.DO.Spaces.Types.SpacesResponse a) instance GHC.Exception.Type.Exception Network.DO.Spaces.Types.APIException instance GHC.Exception.Type.Exception Network.DO.Spaces.Types.ClientException instance GHC.Show.Show Network.DO.Spaces.Types.SpacesException instance GHC.Exception.Type.Exception Network.DO.Spaces.Types.SpacesException instance (Data.Generics.Product.Fields.HasField' name (Network.DO.Spaces.Types.SpacesResponse a) s, s GHC.Types.~ t, a GHC.Types.~ b) => Data.Generics.Product.Fields.HasField name (Network.DO.Spaces.Types.SpacesResponse a) (Network.DO.Spaces.Types.SpacesResponse b) s t instance Network.HTTP.Client.Types.HasHttpManager Network.DO.Spaces.Types.Spaces module Network.DO.Spaces.Actions.DeleteObject -- | Delete a single Object data DeleteObject DeleteObject :: Bucket -> Object -> DeleteObject [$sel:bucket:DeleteObject] :: DeleteObject -> Bucket [$sel:object:DeleteObject] :: DeleteObject -> Object type DeleteObjectResponse = () instance GHC.Generics.Generic Network.DO.Spaces.Actions.DeleteObject.DeleteObject instance GHC.Classes.Eq Network.DO.Spaces.Actions.DeleteObject.DeleteObject instance GHC.Show.Show Network.DO.Spaces.Actions.DeleteObject.DeleteObject instance Network.DO.Spaces.Types.MonadSpaces m => Network.DO.Spaces.Types.Action m Network.DO.Spaces.Actions.DeleteObject.DeleteObject module Network.DO.Spaces.Actions.DeleteBucketLifecycle newtype DeleteBucketLifecycle DeleteBucketLifecycle :: Bucket -> DeleteBucketLifecycle [$sel:bucket:DeleteBucketLifecycle] :: DeleteBucketLifecycle -> Bucket type DeleteBucketLifecycleResponse = () instance GHC.Classes.Eq Network.DO.Spaces.Actions.DeleteBucketLifecycle.DeleteBucketLifecycle instance GHC.Generics.Generic Network.DO.Spaces.Actions.DeleteBucketLifecycle.DeleteBucketLifecycle instance GHC.Show.Show Network.DO.Spaces.Actions.DeleteBucketLifecycle.DeleteBucketLifecycle instance Network.DO.Spaces.Types.MonadSpaces m => Network.DO.Spaces.Types.Action m Network.DO.Spaces.Actions.DeleteBucketLifecycle.DeleteBucketLifecycle module Network.DO.Spaces.Actions.DeleteBucketCORS -- | Delete all of a Bucket's configured CORSRules newtype DeleteBucketCORS DeleteBucketCORS :: Bucket -> DeleteBucketCORS [$sel:bucket:DeleteBucketCORS] :: DeleteBucketCORS -> Bucket type DeleteBucketCORSResponse = () instance GHC.Classes.Eq Network.DO.Spaces.Actions.DeleteBucketCORS.DeleteBucketCORS instance GHC.Generics.Generic Network.DO.Spaces.Actions.DeleteBucketCORS.DeleteBucketCORS instance GHC.Show.Show Network.DO.Spaces.Actions.DeleteBucketCORS.DeleteBucketCORS instance Network.DO.Spaces.Types.MonadSpaces m => Network.DO.Spaces.Types.Action m Network.DO.Spaces.Actions.DeleteBucketCORS.DeleteBucketCORS module Network.DO.Spaces.Actions.DeleteBucket -- | Delete a single Bucket. Note that it must be empty newtype DeleteBucket DeleteBucket :: Bucket -> DeleteBucket -- | The name of the Bucket to delete [$sel:bucket:DeleteBucket] :: DeleteBucket -> Bucket type DeleteBucketResponse = () instance GHC.Classes.Eq Network.DO.Spaces.Actions.DeleteBucket.DeleteBucket instance GHC.Generics.Generic Network.DO.Spaces.Actions.DeleteBucket.DeleteBucket instance GHC.Show.Show Network.DO.Spaces.Actions.DeleteBucket.DeleteBucket instance Network.DO.Spaces.Types.MonadSpaces m => Network.DO.Spaces.Types.Action m Network.DO.Spaces.Actions.DeleteBucket.DeleteBucket -- | Small utilities module Network.DO.Spaces.Utils -- | Show some Text tshow :: Show a => a -> Text -- | Show a ByteString bshow :: Show a => a -> ByteString -- | Strip leading and trailing double quotes from a Text unquote :: Text -> Text quote :: (IsString a, Monoid a) => a -> a -- | Convert a RequestBody to a ByteString bodyLBS :: MonadThrow m => RequestBody -> m ByteString -- | Map ByteString chars to lower-case toLowerBS :: ByteString -> ByteString handleMaybe :: MonadCatch m => (a -> m b) -> a -> m (Maybe b) -- | Convert a Region to its equivalent slug regionSlug :: IsString a => Region -> a showCannedACL :: IsString a => CannedACL -> a -- | Convert UploadHeaders to a list of request Headers renderUploadHeaders :: UploadHeaders -> [Header] defaultUploadHeaders :: UploadHeaders slugToRegion :: (MonadThrow m, IsString a, Eq a) => a -> m Region -- | Create a SpacesMetadata by reading response Headers, -- after passing the Status getResponseMetadata :: Status -> RawResponse m -> SpacesMetadata -- | Create an XML Node mkNode :: Name -> Text -> Node showPermission :: IsString a => Permission -> a xmlDocCursor :: (MonadIO m, MonadThrow m) => RawResponse m -> m Cursor -- | Read a Num type from Text xmlInt :: (MonadThrow m, Num a) => Text -> m a -- | Helper to build exceptions during XML parsing xmlElemError :: Text -> ClientException -- | Read a UTCTime from an ISO-O8601-formatted Text xmlUTCTime :: MonadThrow m => Text -> m UTCTime -- | Read a Num type, encoded as an integer, from XML xmlNum :: Num a => MonadThrow m => Text -> Cursor Node -> m a xmlMaybeElem :: Cursor Node -> Text -> Maybe Text isTruncP :: MonadThrow m => Cursor Node -> m Bool -- | Parse the name of a Bucket from XML bucketP :: MonadThrow m => Cursor Node -> m Bucket -- | Parse the name of an Object from XML objectP :: MonadThrow m => Cursor Node -> m Object -- | XML parser for ETag attribute etagP :: MonadThrow m => Cursor Node -> m ETag -- | XML parser for Owner attribute ownerP :: MonadThrow m => Cursor Node -> m Owner -- | XML parser for LastModified attribute lastModifiedP :: MonadThrow m => Cursor Node -> m UTCTime aclP :: MonadThrow m => Cursor Node -> m ACLResponse writeACLSetter :: (HasField' "owner" r Owner, HasField' "acls" r [Grant]) => r -> ByteString lookupObjectMetadata :: MonadThrow m => RawResponse m -> m ObjectMetadata -- | Lookup the value of a HeaderName from a RawResponse in a -- monadic context lookupHeader :: Monad m => RawResponse m -> HeaderName -> MaybeT m ByteString -- | Transform a Header value into an ETag readEtag :: Monad m => ByteString -> MaybeT m ETag -- | Transform a Header value into an Int (for -- Content-Length) readContentLen :: Monad m => ByteString -> MaybeT m Int -- | Low-level implementations of Spaces REST transactions. You should not -- import this module directly, but should instead use the higher-level -- interface exposed by Network.DO.Spaces.Actions and its -- submodules module Network.DO.Spaces.Request -- | Create a new SpacesRequest from a SpacesRequestBuilder, -- performing the necessary computations and setting the appropriate -- default headers newSpacesRequest :: MonadThrow m => SpacesRequestBuilder -> UTCTime -> m SpacesRequest -- | Generate a Signature mkSignature :: SpacesRequest -> StringToSign -> Signature -- | Generate a StringToSign mkStringToSign :: SpacesRequest -> StringToSign -- | Create an Authorization corresponding to the required AWS v4 -- Authorization header mkAuthorization :: SpacesRequest -> StringToSign -> Authorization -- | Extract the Request from a SpacesRequest and set the -- requisite Authorization header finalize :: SpacesRequest -> Authorization -> Request module Network.DO.Spaces.Actions.UploadObject -- | Upload a single object to Spaces. The maximum size for a single PUT -- request is 5 GB data UploadObject UploadObject :: Bucket -> Object -> RequestBody -> UploadHeaders -> Maybe MimeType -> UploadObject [$sel:bucket:UploadObject] :: UploadObject -> Bucket [$sel:object:UploadObject] :: UploadObject -> Object [$sel:body:UploadObject] :: UploadObject -> RequestBody [$sel:optionalHeaders:UploadObject] :: UploadObject -> UploadHeaders [$sel:contentType:UploadObject] :: UploadObject -> Maybe MimeType data UploadObjectResponse UploadObjectResponse :: ETag -> Int -> UploadObjectResponse [$sel:etag:UploadObjectResponse] :: UploadObjectResponse -> ETag -- | Length in bytes [$sel:contentLength:UploadObjectResponse] :: UploadObjectResponse -> Int instance GHC.Generics.Generic Network.DO.Spaces.Actions.UploadObject.UploadObject instance GHC.Generics.Generic Network.DO.Spaces.Actions.UploadObject.UploadObjectResponse instance GHC.Classes.Eq Network.DO.Spaces.Actions.UploadObject.UploadObjectResponse instance GHC.Show.Show Network.DO.Spaces.Actions.UploadObject.UploadObjectResponse instance Network.DO.Spaces.Types.MonadSpaces m => Network.DO.Spaces.Types.Action m Network.DO.Spaces.Actions.UploadObject.UploadObject module Network.DO.Spaces.Actions.UploadMultipart -- | Initiate a multipart upload session data BeginMultipart BeginMultipart :: Bucket -> Object -> UploadHeaders -> Maybe MimeType -> BeginMultipart [$sel:bucket:BeginMultipart] :: BeginMultipart -> Bucket [$sel:object:BeginMultipart] :: BeginMultipart -> Object [$sel:optionalHeaders:BeginMultipart] :: BeginMultipart -> UploadHeaders [$sel:contentType:BeginMultipart] :: BeginMultipart -> Maybe MimeType newtype BeginMultipartResponse BeginMultipartResponse :: MultipartSession -> BeginMultipartResponse [$sel:session:BeginMultipartResponse] :: BeginMultipartResponse -> MultipartSession data UploadPart UploadPart :: MultipartSession -> Int -> RequestBody -> UploadPart [$sel:session:UploadPart] :: UploadPart -> MultipartSession [$sel:partNumber:UploadPart] :: UploadPart -> Int [$sel:body:UploadPart] :: UploadPart -> RequestBody data UploadPartResponse UploadPartResponse :: ETag -> UploadPartResponse [$sel:etag:UploadPartResponse] :: UploadPartResponse -> ETag -- | List all of the Parts of a multipart upload session newtype ListParts ListParts :: MultipartSession -> ListParts [$sel:session:ListParts] :: ListParts -> MultipartSession -- | A single part of a multipart upload session. Returned when querying -- ListParts data Part Part :: Int -> UTCTime -> ETag -> Int -> Part [$sel:partNumber:Part] :: Part -> Int [$sel:lastModified:Part] :: Part -> UTCTime [$sel:etag:Part] :: Part -> ETag -- | Size in bytes [$sel:size:Part] :: Part -> Int data ListPartsResponse ListPartsResponse :: Bucket -> Object -> UploadID -> Seq Part -> Int -> Int -> Int -> Bool -> ListPartsResponse [$sel:bucket:ListPartsResponse] :: ListPartsResponse -> Bucket [$sel:object:ListPartsResponse] :: ListPartsResponse -> Object [$sel:uploadID:ListPartsResponse] :: ListPartsResponse -> UploadID [$sel:parts:ListPartsResponse] :: ListPartsResponse -> Seq Part -- | Part number marking the beginning of the list [$sel:partMarker:ListPartsResponse] :: ListPartsResponse -> Int -- | If truncated, the list location where the next response will begin [$sel:nextPartMarker:ListPartsResponse] :: ListPartsResponse -> Int [$sel:maxParts:ListPartsResponse] :: ListPartsResponse -> Int [$sel:isTruncated:ListPartsResponse] :: ListPartsResponse -> Bool -- | A unique ID assigned to a multipart upload session type UploadID = Text -- | Cancel an active multipart upload session newtype CancelMultipart CancelMultipart :: MultipartSession -> CancelMultipart [$sel:session:CancelMultipart] :: CancelMultipart -> MultipartSession data MultipartSession MultipartSession :: Bucket -> Object -> UploadID -> MultipartSession [$sel:bucket:MultipartSession] :: MultipartSession -> Bucket [$sel:object:MultipartSession] :: MultipartSession -> Object [$sel:uploadID:MultipartSession] :: MultipartSession -> UploadID type CancelMultipartResponse = () -- | Complete a multipart session data CompleteMultipart CompleteMultipart :: MultipartSession -> [(Int, ETag)] -> CompleteMultipart [$sel:session:CompleteMultipart] :: CompleteMultipart -> MultipartSession -- | The part numbers and ETags of each uploaded part [$sel:parts:CompleteMultipart] :: CompleteMultipart -> [(Int, ETag)] data CompleteMultipartResponse CompleteMultipartResponse :: Text -> Bucket -> Object -> ETag -> CompleteMultipartResponse [$sel:location:CompleteMultipartResponse] :: CompleteMultipartResponse -> Text [$sel:bucket:CompleteMultipartResponse] :: CompleteMultipartResponse -> Bucket [$sel:object:CompleteMultipartResponse] :: CompleteMultipartResponse -> Object -- | The MD5 hash of the final object, i.e. all of the cumulative uploaded -- parts [$sel:etag:CompleteMultipartResponse] :: CompleteMultipartResponse -> ETag instance GHC.Generics.Generic Network.DO.Spaces.Actions.UploadMultipart.Part instance GHC.Classes.Eq Network.DO.Spaces.Actions.UploadMultipart.Part instance GHC.Show.Show Network.DO.Spaces.Actions.UploadMultipart.Part instance GHC.Generics.Generic Network.DO.Spaces.Actions.UploadMultipart.MultipartSession instance GHC.Classes.Eq Network.DO.Spaces.Actions.UploadMultipart.MultipartSession instance GHC.Show.Show Network.DO.Spaces.Actions.UploadMultipart.MultipartSession instance GHC.Generics.Generic Network.DO.Spaces.Actions.UploadMultipart.BeginMultipart instance GHC.Classes.Eq Network.DO.Spaces.Actions.UploadMultipart.BeginMultipart instance GHC.Show.Show Network.DO.Spaces.Actions.UploadMultipart.BeginMultipart instance GHC.Classes.Eq Network.DO.Spaces.Actions.UploadMultipart.BeginMultipartResponse instance GHC.Generics.Generic Network.DO.Spaces.Actions.UploadMultipart.BeginMultipartResponse instance GHC.Show.Show Network.DO.Spaces.Actions.UploadMultipart.BeginMultipartResponse instance GHC.Generics.Generic Network.DO.Spaces.Actions.UploadMultipart.UploadPart instance GHC.Generics.Generic Network.DO.Spaces.Actions.UploadMultipart.UploadPartResponse instance GHC.Classes.Eq Network.DO.Spaces.Actions.UploadMultipart.UploadPartResponse instance GHC.Show.Show Network.DO.Spaces.Actions.UploadMultipart.UploadPartResponse instance GHC.Generics.Generic Network.DO.Spaces.Actions.UploadMultipart.CompleteMultipart instance GHC.Classes.Eq Network.DO.Spaces.Actions.UploadMultipart.CompleteMultipart instance GHC.Show.Show Network.DO.Spaces.Actions.UploadMultipart.CompleteMultipart instance GHC.Generics.Generic Network.DO.Spaces.Actions.UploadMultipart.CompleteMultipartResponse instance GHC.Classes.Eq Network.DO.Spaces.Actions.UploadMultipart.CompleteMultipartResponse instance GHC.Show.Show Network.DO.Spaces.Actions.UploadMultipart.CompleteMultipartResponse instance GHC.Classes.Eq Network.DO.Spaces.Actions.UploadMultipart.CancelMultipart instance GHC.Generics.Generic Network.DO.Spaces.Actions.UploadMultipart.CancelMultipart instance GHC.Show.Show Network.DO.Spaces.Actions.UploadMultipart.CancelMultipart instance GHC.Classes.Eq Network.DO.Spaces.Actions.UploadMultipart.ListParts instance GHC.Generics.Generic Network.DO.Spaces.Actions.UploadMultipart.ListParts instance GHC.Show.Show Network.DO.Spaces.Actions.UploadMultipart.ListParts instance GHC.Generics.Generic Network.DO.Spaces.Actions.UploadMultipart.ListPartsResponse instance GHC.Classes.Eq Network.DO.Spaces.Actions.UploadMultipart.ListPartsResponse instance GHC.Show.Show Network.DO.Spaces.Actions.UploadMultipart.ListPartsResponse instance Network.DO.Spaces.Types.MonadSpaces m => Network.DO.Spaces.Types.Action m Network.DO.Spaces.Actions.UploadMultipart.ListParts instance Network.DO.Spaces.Types.MonadSpaces m => Network.DO.Spaces.Types.Action m Network.DO.Spaces.Actions.UploadMultipart.CancelMultipart instance Network.DO.Spaces.Types.MonadSpaces m => Network.DO.Spaces.Types.Action m Network.DO.Spaces.Actions.UploadMultipart.CompleteMultipart instance Network.DO.Spaces.Types.MonadSpaces m => Network.DO.Spaces.Types.Action m Network.DO.Spaces.Actions.UploadMultipart.UploadPart instance Network.DO.Spaces.Types.MonadSpaces m => Network.DO.Spaces.Types.Action m Network.DO.Spaces.Actions.UploadMultipart.BeginMultipart module Network.DO.Spaces.Actions.SetObjectACLs -- | Get the full Access Control List associated with a Bucket data SetObjectACLs SetObjectACLs :: Bucket -> Object -> Owner -> [Grant] -> SetObjectACLs [$sel:bucket:SetObjectACLs] :: SetObjectACLs -> Bucket [$sel:object:SetObjectACLs] :: SetObjectACLs -> Object -- | The object owner [$sel:owner:SetObjectACLs] :: SetObjectACLs -> Owner [$sel:acls:SetObjectACLs] :: SetObjectACLs -> [Grant] type SetObjectACLsResponse = () instance GHC.Generics.Generic Network.DO.Spaces.Actions.SetObjectACLs.SetObjectACLs instance GHC.Classes.Eq Network.DO.Spaces.Actions.SetObjectACLs.SetObjectACLs instance GHC.Show.Show Network.DO.Spaces.Actions.SetObjectACLs.SetObjectACLs instance Network.DO.Spaces.Types.MonadSpaces m => Network.DO.Spaces.Types.Action m Network.DO.Spaces.Actions.SetObjectACLs.SetObjectACLs module Network.DO.Spaces.Actions.SetBucketLifecycle -- | Configure the LifecycleRules for a Bucket data SetBucketLifecycle SetBucketLifecycle :: Bucket -> [LifecycleRule] -> SetBucketLifecycle [$sel:bucket:SetBucketLifecycle] :: SetBucketLifecycle -> Bucket [$sel:rules:SetBucketLifecycle] :: SetBucketLifecycle -> [LifecycleRule] type SetBucketLifecycleResponse = () instance GHC.Generics.Generic Network.DO.Spaces.Actions.SetBucketLifecycle.SetBucketLifecycle instance GHC.Classes.Eq Network.DO.Spaces.Actions.SetBucketLifecycle.SetBucketLifecycle instance GHC.Show.Show Network.DO.Spaces.Actions.SetBucketLifecycle.SetBucketLifecycle instance Network.DO.Spaces.Types.MonadSpaces m => Network.DO.Spaces.Types.Action m Network.DO.Spaces.Actions.SetBucketLifecycle.SetBucketLifecycle module Network.DO.Spaces.Actions.SetBucketCORS type SetBucketCORSResponse = () -- | Set a Bucket's CORSRules data SetBucketCORS SetBucketCORS :: Bucket -> [CORSRule] -> SetBucketCORS [$sel:bucket:SetBucketCORS] :: SetBucketCORS -> Bucket [$sel:rules:SetBucketCORS] :: SetBucketCORS -> [CORSRule] instance GHC.Generics.Generic Network.DO.Spaces.Actions.SetBucketCORS.SetBucketCORS instance GHC.Classes.Eq Network.DO.Spaces.Actions.SetBucketCORS.SetBucketCORS instance GHC.Show.Show Network.DO.Spaces.Actions.SetBucketCORS.SetBucketCORS instance Network.DO.Spaces.Types.MonadSpaces m => Network.DO.Spaces.Types.Action m Network.DO.Spaces.Actions.SetBucketCORS.SetBucketCORS module Network.DO.Spaces.Actions.SetBucketACLs data SetBucketACLs SetBucketACLs :: Bucket -> [Grant] -> Owner -> SetBucketACLs [$sel:bucket:SetBucketACLs] :: SetBucketACLs -> Bucket [$sel:acls:SetBucketACLs] :: SetBucketACLs -> [Grant] -- | The bucket owner [$sel:owner:SetBucketACLs] :: SetBucketACLs -> Owner type SetBucketACLsResponse = () instance GHC.Generics.Generic Network.DO.Spaces.Actions.SetBucketACLs.SetBucketACLs instance GHC.Classes.Eq Network.DO.Spaces.Actions.SetBucketACLs.SetBucketACLs instance GHC.Show.Show Network.DO.Spaces.Actions.SetBucketACLs.SetBucketACLs instance Network.DO.Spaces.Types.MonadSpaces m => Network.DO.Spaces.Types.Action m Network.DO.Spaces.Actions.SetBucketACLs.SetBucketACLs module Network.DO.Spaces.Actions.ListBucket -- | List the contents (Objects) of a Bucket data ListBucket ListBucket :: Bucket -> Maybe Char -> Maybe Object -> Maybe Int -> Maybe Text -> ListBucket [$sel:bucket:ListBucket] :: ListBucket -> Bucket -- | Character used to group keys [$sel:delimiter:ListBucket] :: ListBucket -> Maybe Char -- | The Object to start with when listing the bucket's contents [$sel:marker:ListBucket] :: ListBucket -> Maybe Object -- | Max number of Objects to return, between 0 and 1,000 -- (inclusive) [$sel:maxKeys:ListBucket] :: ListBucket -> Maybe Int -- | String value to group keys. Only objects whose names begin with the -- prefix are returned [$sel:prefix:ListBucket] :: ListBucket -> Maybe Text data ListBucketResponse ListBucketResponse :: Bucket -> Maybe Text -> Maybe Object -> Maybe Object -> Int -> Bool -> Seq ObjectInfo -> ListBucketResponse [$sel:bucket:ListBucketResponse] :: ListBucketResponse -> Bucket -- | The Object prefix, if supplied as a query param [$sel:prefix:ListBucketResponse] :: ListBucketResponse -> Maybe Text -- | An Object indicating where the list of Objects begin; -- Nothing denotes the beginning of the list [$sel:marker:ListBucketResponse] :: ListBucketResponse -> Maybe Object -- | The Object that should be used as the marker query -- param in subsequent requests [$sel:nextMarker:ListBucketResponse] :: ListBucketResponse -> Maybe Object -- | Maximum number of ObjectInfos to include; based on request -- parameter of the same name [$sel:maxKeys:ListBucketResponse] :: ListBucketResponse -> Int -- | Indicates whether the response contains all possible Objects [$sel:isTruncated:ListBucketResponse] :: ListBucketResponse -> Bool [$sel:objects:ListBucketResponse] :: ListBucketResponse -> Seq ObjectInfo instance GHC.Generics.Generic Network.DO.Spaces.Actions.ListBucket.ListBucket instance GHC.Classes.Eq Network.DO.Spaces.Actions.ListBucket.ListBucket instance GHC.Show.Show Network.DO.Spaces.Actions.ListBucket.ListBucket instance GHC.Generics.Generic Network.DO.Spaces.Actions.ListBucket.ListBucketResponse instance GHC.Classes.Eq Network.DO.Spaces.Actions.ListBucket.ListBucketResponse instance GHC.Show.Show Network.DO.Spaces.Actions.ListBucket.ListBucketResponse instance Network.DO.Spaces.Types.MonadSpaces m => Network.DO.Spaces.Types.Action m Network.DO.Spaces.Actions.ListBucket.ListBucket module Network.DO.Spaces.Actions.ListAllBuckets -- | List all of your Buckets withing the Region you have -- configured data ListAllBuckets ListAllBuckets :: ListAllBuckets data ListAllBucketsResponse ListAllBucketsResponse :: Owner -> Seq BucketInfo -> ListAllBucketsResponse [owner] :: ListAllBucketsResponse -> Owner [buckets] :: ListAllBucketsResponse -> Seq BucketInfo instance GHC.Generics.Generic Network.DO.Spaces.Actions.ListAllBuckets.ListAllBuckets instance GHC.Classes.Eq Network.DO.Spaces.Actions.ListAllBuckets.ListAllBuckets instance GHC.Show.Show Network.DO.Spaces.Actions.ListAllBuckets.ListAllBuckets instance GHC.Generics.Generic Network.DO.Spaces.Actions.ListAllBuckets.ListAllBucketsResponse instance GHC.Classes.Eq Network.DO.Spaces.Actions.ListAllBuckets.ListAllBucketsResponse instance GHC.Show.Show Network.DO.Spaces.Actions.ListAllBuckets.ListAllBucketsResponse instance Network.DO.Spaces.Types.MonadSpaces m => Network.DO.Spaces.Types.Action m Network.DO.Spaces.Actions.ListAllBuckets.ListAllBuckets module Network.DO.Spaces.Actions.GetObjectInfo -- | Get information about an Object; the response does not contain -- the object itself data GetObjectInfo GetObjectInfo :: Bucket -> Object -> GetObjectInfo [$sel:bucket:GetObjectInfo] :: GetObjectInfo -> Bucket [$sel:object:GetObjectInfo] :: GetObjectInfo -> Object type GetObjectInfoResponse = ObjectMetadata instance GHC.Generics.Generic Network.DO.Spaces.Actions.GetObjectInfo.GetObjectInfo instance GHC.Classes.Eq Network.DO.Spaces.Actions.GetObjectInfo.GetObjectInfo instance GHC.Show.Show Network.DO.Spaces.Actions.GetObjectInfo.GetObjectInfo instance Network.DO.Spaces.Types.MonadSpaces m => Network.DO.Spaces.Types.Action m Network.DO.Spaces.Actions.GetObjectInfo.GetObjectInfo module Network.DO.Spaces.Actions.GetObjectACLs -- | Get the full Access Control List associated with a Bucket data GetObjectACLs GetObjectACLs :: Bucket -> Object -> GetObjectACLs [$sel:bucket:GetObjectACLs] :: GetObjectACLs -> Bucket [$sel:object:GetObjectACLs] :: GetObjectACLs -> Object type GetObjectACLsResponse = ACLResponse instance GHC.Generics.Generic Network.DO.Spaces.Actions.GetObjectACLs.GetObjectACLs instance GHC.Classes.Eq Network.DO.Spaces.Actions.GetObjectACLs.GetObjectACLs instance GHC.Show.Show Network.DO.Spaces.Actions.GetObjectACLs.GetObjectACLs instance Network.DO.Spaces.Types.MonadSpaces m => Network.DO.Spaces.Types.Action m Network.DO.Spaces.Actions.GetObjectACLs.GetObjectACLs module Network.DO.Spaces.Actions.GetObject -- | Retrieve an Object along with its associated metadata. The -- object's data is read into a lazy ByteString data GetObject GetObject :: Bucket -> Object -> GetObject [$sel:bucket:GetObject] :: GetObject -> Bucket [$sel:object:GetObject] :: GetObject -> Object data GetObjectResponse GetObjectResponse :: ObjectMetadata -> ByteString -> GetObjectResponse [$sel:objectMetadata:GetObjectResponse] :: GetObjectResponse -> ObjectMetadata [$sel:objectData:GetObjectResponse] :: GetObjectResponse -> ByteString instance GHC.Generics.Generic Network.DO.Spaces.Actions.GetObject.GetObject instance GHC.Classes.Eq Network.DO.Spaces.Actions.GetObject.GetObject instance GHC.Show.Show Network.DO.Spaces.Actions.GetObject.GetObject instance GHC.Generics.Generic Network.DO.Spaces.Actions.GetObject.GetObjectResponse instance GHC.Classes.Eq Network.DO.Spaces.Actions.GetObject.GetObjectResponse instance GHC.Show.Show Network.DO.Spaces.Actions.GetObject.GetObjectResponse instance Network.DO.Spaces.Types.MonadSpaces m => Network.DO.Spaces.Types.Action m Network.DO.Spaces.Actions.GetObject.GetObject module Network.DO.Spaces.Actions.GetBucketLocation -- | Query the location (the Region) of a Bucket newtype GetBucketLocation GetBucketLocation :: Bucket -> GetBucketLocation -- | The name of the Bucket whose location you'd like to retrieve [$sel:bucket:GetBucketLocation] :: GetBucketLocation -> Bucket newtype GetBucketLocationResponse GetBucketLocationResponse :: Region -> GetBucketLocationResponse -- | The Region of the queried Bucket [$sel:locationConstraint:GetBucketLocationResponse] :: GetBucketLocationResponse -> Region instance GHC.Classes.Eq Network.DO.Spaces.Actions.GetBucketLocation.GetBucketLocation instance GHC.Generics.Generic Network.DO.Spaces.Actions.GetBucketLocation.GetBucketLocation instance GHC.Show.Show Network.DO.Spaces.Actions.GetBucketLocation.GetBucketLocation instance GHC.Classes.Eq Network.DO.Spaces.Actions.GetBucketLocation.GetBucketLocationResponse instance GHC.Generics.Generic Network.DO.Spaces.Actions.GetBucketLocation.GetBucketLocationResponse instance GHC.Show.Show Network.DO.Spaces.Actions.GetBucketLocation.GetBucketLocationResponse instance Network.DO.Spaces.Types.MonadSpaces m => Network.DO.Spaces.Types.Action m Network.DO.Spaces.Actions.GetBucketLocation.GetBucketLocation module Network.DO.Spaces.Actions.GetBucketLifecycle -- | Get the LifecycleRule configuration for a Bucket. Note -- that unless you have explicitly configured lifecycle rules, this will -- fail with a 404 status and an error code of -- NoSuchLifecycleConfiguration newtype GetBucketLifecycle GetBucketLifecycle :: Bucket -> GetBucketLifecycle [$sel:bucket:GetBucketLifecycle] :: GetBucketLifecycle -> Bucket newtype GetBucketLifecycleResponse GetBucketLifecycleResponse :: [LifecycleRule] -> GetBucketLifecycleResponse [$sel:rules:GetBucketLifecycleResponse] :: GetBucketLifecycleResponse -> [LifecycleRule] instance GHC.Classes.Eq Network.DO.Spaces.Actions.GetBucketLifecycle.GetBucketLifecycle instance GHC.Generics.Generic Network.DO.Spaces.Actions.GetBucketLifecycle.GetBucketLifecycle instance GHC.Show.Show Network.DO.Spaces.Actions.GetBucketLifecycle.GetBucketLifecycle instance GHC.Classes.Eq Network.DO.Spaces.Actions.GetBucketLifecycle.GetBucketLifecycleResponse instance GHC.Generics.Generic Network.DO.Spaces.Actions.GetBucketLifecycle.GetBucketLifecycleResponse instance GHC.Show.Show Network.DO.Spaces.Actions.GetBucketLifecycle.GetBucketLifecycleResponse instance Network.DO.Spaces.Types.MonadSpaces m => Network.DO.Spaces.Types.Action m Network.DO.Spaces.Actions.GetBucketLifecycle.GetBucketLifecycle module Network.DO.Spaces.Actions.GetBucketCORS -- | Get the CORSRules associated with a Bucket newtype GetBucketCORS GetBucketCORS :: Bucket -> GetBucketCORS [$sel:bucket:GetBucketCORS] :: GetBucketCORS -> Bucket newtype GetBucketCORSResponse GetBucketCORSResponse :: Seq CORSRule -> GetBucketCORSResponse [$sel:rules:GetBucketCORSResponse] :: GetBucketCORSResponse -> Seq CORSRule instance GHC.Classes.Eq Network.DO.Spaces.Actions.GetBucketCORS.GetBucketCORS instance GHC.Generics.Generic Network.DO.Spaces.Actions.GetBucketCORS.GetBucketCORS instance GHC.Show.Show Network.DO.Spaces.Actions.GetBucketCORS.GetBucketCORS instance GHC.Classes.Eq Network.DO.Spaces.Actions.GetBucketCORS.GetBucketCORSResponse instance GHC.Generics.Generic Network.DO.Spaces.Actions.GetBucketCORS.GetBucketCORSResponse instance GHC.Show.Show Network.DO.Spaces.Actions.GetBucketCORS.GetBucketCORSResponse instance Network.DO.Spaces.Types.MonadSpaces m => Network.DO.Spaces.Types.Action m Network.DO.Spaces.Actions.GetBucketCORS.GetBucketCORS module Network.DO.Spaces.Actions.GetBucketACLs -- | Get the full Access Control List associated with a Bucket newtype GetBucketACLs GetBucketACLs :: Bucket -> GetBucketACLs [$sel:bucket:GetBucketACLs] :: GetBucketACLs -> Bucket type GetBucketACLsResponse = ACLResponse instance GHC.Classes.Eq Network.DO.Spaces.Actions.GetBucketACLs.GetBucketACLs instance GHC.Generics.Generic Network.DO.Spaces.Actions.GetBucketACLs.GetBucketACLs instance GHC.Show.Show Network.DO.Spaces.Actions.GetBucketACLs.GetBucketACLs instance Network.DO.Spaces.Types.MonadSpaces m => Network.DO.Spaces.Types.Action m Network.DO.Spaces.Actions.GetBucketACLs.GetBucketACLs module Network.DO.Spaces.Actions.CreateBucket -- | Create a new, empty Bucket data CreateBucket CreateBucket :: Bucket -> Maybe Region -> Maybe CannedACL -> CreateBucket -- | The name of the new Bucket to create [bucket] :: CreateBucket -> Bucket [region] :: CreateBucket -> Maybe Region -- | The CannedACL to use; defaults to Private [acl] :: CreateBucket -> Maybe CannedACL type CreateBucketResponse = () instance GHC.Generics.Generic Network.DO.Spaces.Actions.CreateBucket.CreateBucket instance GHC.Classes.Eq Network.DO.Spaces.Actions.CreateBucket.CreateBucket instance GHC.Show.Show Network.DO.Spaces.Actions.CreateBucket.CreateBucket instance Network.DO.Spaces.Types.MonadSpaces m => Network.DO.Spaces.Types.Action m Network.DO.Spaces.Actions.CreateBucket.CreateBucket module Network.DO.Spaces.Actions.CopyObject -- | Whether the Object's metadata should be copied or replaced. -- Replace is required to copy an object to itself data MetadataDirective Copy :: MetadataDirective Replace :: MetadataDirective -- | Copy and Object from one Bucket to another. Both buckets -- must be in the same region data CopyObject CopyObject :: Bucket -> Bucket -> Object -> Object -> MetadataDirective -> Maybe CannedACL -> CopyObject [$sel:srcBucket:CopyObject] :: CopyObject -> Bucket [$sel:destBucket:CopyObject] :: CopyObject -> Bucket [$sel:srcObject:CopyObject] :: CopyObject -> Object [$sel:destObject:CopyObject] :: CopyObject -> Object [$sel:metadataDirective:CopyObject] :: CopyObject -> MetadataDirective [$sel:acl:CopyObject] :: CopyObject -> Maybe CannedACL data CopyObjectResponse CopyObjectResponse :: ETag -> UTCTime -> CopyObjectResponse [$sel:etag:CopyObjectResponse] :: CopyObjectResponse -> ETag [$sel:lastModified:CopyObjectResponse] :: CopyObjectResponse -> UTCTime instance GHC.Generics.Generic Network.DO.Spaces.Actions.CopyObject.MetadataDirective instance GHC.Classes.Eq Network.DO.Spaces.Actions.CopyObject.MetadataDirective instance GHC.Show.Show Network.DO.Spaces.Actions.CopyObject.MetadataDirective instance GHC.Generics.Generic Network.DO.Spaces.Actions.CopyObject.CopyObject instance GHC.Classes.Eq Network.DO.Spaces.Actions.CopyObject.CopyObject instance GHC.Show.Show Network.DO.Spaces.Actions.CopyObject.CopyObject instance GHC.Generics.Generic Network.DO.Spaces.Actions.CopyObject.CopyObjectResponse instance GHC.Classes.Eq Network.DO.Spaces.Actions.CopyObject.CopyObjectResponse instance GHC.Show.Show Network.DO.Spaces.Actions.CopyObject.CopyObjectResponse instance Network.DO.Spaces.Types.MonadSpaces m => Network.DO.Spaces.Types.Action m Network.DO.Spaces.Actions.CopyObject.CopyObject -- | This module re-exports the Action instances in the modules -- below it module Network.DO.Spaces.Actions -- | Run an instance of Action, receiving a ConsumedResponse. -- The retention of SpacesMetadata can be controlled by passing a -- WithMetadata constructor runAction :: forall a m. (MonadSpaces m, Action m a) => WithMetadata -> a -> m (SpacesResponse a) parseErrorResponse :: (MonadThrow m, MonadIO m) => Status -> RawResponse m -> m APIException -- | Interacting with DigitalOcean's Spaces API, a (largely) s3-compatible -- object storage platform. This module exports actions to create a -- Spaces client configuration as well as several convenience -- actions. Most of the transactions exposed through the Spaces REST API -- are supported here, including CRUD operations on buckets and objects, -- bucket CORS configuration, and manipulating ACLs. -- -- See the README in this repository for more information on using this -- library module Network.DO.Spaces -- | Perform a transaction using your Spaces client configuration. -- Note that this does not perform any exception handling; if caught at -- the lower level, exceptions are generally re-thrown as -- SpacesExceptions runSpaces :: Spaces -> SpacesT m a -> m a -- | Create a new Spaces by specifying a method to retrieve the -- region and your credentials. -- -- Discover will first try to find a credentials file (see the -- notes on FromFile below) in ~.awscredentials or -- $XDG_CONFIG_HOMEdo-spacescredentials, in that order, -- using the [default] profile. Failing that, it will try the -- equivalent of FromEnv Nothing (see the notes below). -- -- FromFile expects a configuration file in the same format as AWS -- credentials files, with the same field names. For example: -- --
--   [default]
--   aws_access_key_id=AKIAIOSFODNN7EXAMPLE
--   aws_secret_access_key=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
--   aws_default_region=fra1
--   
-- -- When provided with Nothing, FromEnv will look up the -- following environment variables to find your region and keys: -- -- -- -- Alternatively, you can directly specify a tuple of environment -- variables to search for. -- -- You can also choose to provide the region and both keys yourself with -- Explicit newSpaces :: (MonadThrow m, MonadIO m) => CredentialSource -> m Spaces -- | Upload an Object within a single request uploadObject :: MonadSpaces m => Maybe MimeType -> Bucket -> Object -> BodyBS m -> m (SpacesResponse UploadObject) -- | Initiate and complete a multipart upload, using default -- UploadHeaders. If a SpacesException is thrown while -- performing the transaction, an attempt will be made to run a -- CancelMultipart request, and the exception will be rethrown multipartObject :: MonadSpaces m => Maybe MimeType -> Bucket -> Object -> Int -> BodyBS m -> m (SpacesResponse CompleteMultipart) -- | Upload a file's contents as an Object. This will attempt to set -- the correct MimeType based on the file extension uploadFile :: forall m. MonadSpaces m => Bucket -> Object -> FilePath -> m (SpacesResponse UploadObject) -- | Get an Object (retrieves the actual body of the object) getObject :: MonadSpaces m => Bucket -> Object -> m (SpacesResponse GetObject) -- | Get an Object's data and write it to the provided -- FilePath getObjectSinkFile :: MonadSpaces m => Bucket -> Object -> FilePath -> m () -- | Get information about an Object (does not retrieve the body of -- the object) getObjectInfo :: MonadSpaces m => Bucket -> Object -> m (SpacesResponse GetObjectInfo) -- | Copy an Object from one Bucket to another; this chooses -- a number of defaults to represent the most common cases and avoid a -- preponderance of parameters. Objects are copied using default -- ACLs with the COPY metadata directive. -- -- If you'd like to use a specfic CannedACL or -- MetadataDirective, use CopyObject directly with -- runAction copyObject :: MonadSpaces m => Bucket -> Bucket -> Object -> Object -> m (SpacesResponse CopyObject) -- | Copy an Object within the same Bucket, using defaults -- for the MetadataDirective and CannedACL copyObjectWithin :: MonadSpaces m => Bucket -> Object -> Object -> m (SpacesResponse CopyObject) -- | Copy an Object to itself, overwriting its associated metadata overwriteObject :: MonadSpaces m => Bucket -> Object -> m (SpacesResponse CopyObject) -- | Delete a single Object deleteObject :: MonadSpaces m => Bucket -> Object -> m (SpacesResponse DeleteObject) -- | Get an Object's Access Control Lists getObjectACLs :: MonadSpaces m => Bucket -> Object -> m (SpacesResponse GetObjectACLs) -- | Set an Object's Access Control Lists setObjectACLs :: MonadSpaces m => Bucket -> Object -> Owner -> [Grant] -> m (SpacesResponse SetObjectACLs) -- | Create a new Bucket createBucket :: MonadSpaces m => Bucket -> Maybe Region -> Maybe CannedACL -> m (SpacesResponse CreateBucket) -- | Delete a Bucket deleteBucket :: MonadSpaces m => Bucket -> m (SpacesResponse DeleteBucket) -- | Get the location (Region) of a Bucket getBucketLocation :: MonadSpaces m => Bucket -> m (SpacesResponse GetBucketLocation) -- | List every Bucket associated with your Spaces account listAllBuckets :: MonadSpaces m => m (SpacesResponse ListAllBuckets) -- | List the Objects of a Bucket, without grouping, -- delimiting, or limiting the keys (i.e. list all Objects -- non-hierarchically, up to the Spaces limit) listBucket :: MonadSpaces m => Bucket -> m (SpacesResponse ListBucket) -- | List the Objects of a Bucket, using a delimiter and -- prefix to group objects. For example / can be used as a -- delimiter to treat objects as directories within the bucket, which can -- further be combined with a text prefix listBucketGrouped :: MonadSpaces m => Bucket -> Char -> Text -> m (SpacesResponse ListBucket) -- | Recursively list all Objects in a Bucket, calling -- ListBucket until isTruncated is False. This -- operation may take some time, depending on the total number of objects -- in your bucket listBucketRec :: MonadSpaces m => Bucket -> m (Seq ObjectInfo) -- | Get the CORSRules configured for a given Bucket getBucketCORS :: MonadSpaces m => Bucket -> m (SpacesResponse GetBucketCORS) -- | Delete the existing configured CORSRules for a given -- Bucket deleteBucketCORS :: MonadSpaces m => Bucket -> m (SpacesResponse DeleteBucketCORS) -- | Set CORSRules for a given Bucket setBucketCORS :: MonadSpaces m => Bucket -> [CORSRule] -> m (SpacesResponse SetBucketCORS) -- | Get a Bucket's Access Control Lists getBucketACLs :: MonadSpaces m => Bucket -> m (SpacesResponse GetBucketACLs) -- | Set a Bucket's Access Control Lists. Spaces only allows a -- limited subset of s3 ACLs at the moment. It may be preferable to use a -- CannedACL when creating new resources rather than using this -- action, which is provided for the sake of completeness. -- -- Note that to allow public read-only access to your bucket, you -- must simultaneously set full owner control. setBucketACLs :: MonadSpaces m => Bucket -> [Grant] -> Owner -> m (SpacesResponse SetBucketACLs) -- | Get a Bucket's LifecycleRule configuration . Note that -- unless you have explicitly configured lifecycle rules, this will fail -- with a 404 status and an error code of -- NoSuchLifecycleConfiguration getBucketLifecycleRules :: MonadSpaces m => Bucket -> m (SpacesResponse GetBucketLifecycle) -- | Set a Bucket's LifecycleRule configuration setBucketLifecycleRules :: MonadSpaces m => Bucket -> [LifecycleRule] -> m (SpacesResponse SetBucketLifecycle) -- | Delete a Bucket's LifecycleRule configuration deleteBucketLifecycleRules :: MonadSpaces m => Bucket -> m (SpacesResponse DeleteBucketLifecycle) -- | A client for interacting with the DO Spaces API data Spaces -- | A ConsumedResponse with optional SpacesMetadata data SpacesResponse a -- | Metadata and other response information returned from each Spaces API -- transaction; it can be helpful to retain this at times data SpacesMetadata -- | A synonym for the constraints necessary to run SpacesT actions type MonadSpaces m = (MonadReader Spaces m, MonadIO m, MonadUnliftIO m, MonadCatch m) -- | The name of a single storage bucket data Bucket -- | Smart constructor for Buckets; names must conform to the -- following rules: -- -- -- -- This function ensures that names are valid and will also convert the -- Text to lowercase mkBucket :: MonadThrow m => Text -> m Bucket -- | The name of a "key", in AWS parlance data Object -- | Smart constructor for Objects; names must not be empty mkObject :: MonadThrow m => Text -> m Object -- | DO regions where Spaces is available (only a subset of all regions) data Region -- | NYC3 NewYork :: Region -- | AMS3 Amsterdam :: Region -- | SFO3 SanFrancisco :: Region -- | SGP1 Singapore :: Region -- | FRA1 Frankfurt :: Region -- | Spaces access key newtype AccessKey AccessKey :: ByteString -> AccessKey [$sel:unAccessKey:AccessKey] :: AccessKey -> ByteString -- | Spaces secret key newtype SecretKey SecretKey :: ByteString -> SecretKey [$sel:unSecretKey:SecretKey] :: SecretKey -> ByteString -- | How to discover the Region, AccessKey, and -- SecretKey when creating a new Spaces client. data CredentialSource -- | Try a sequence of different sources until one succeeds Discover :: CredentialSource -- | Region, AccessKey and SecretKey env vars FromEnv :: Maybe (Text, Text, Text) -> CredentialSource -- | Load your credentials from a file, optionally providing the profile to -- use (or default as the... default). FromFile :: FilePath -> Maybe Profile -> CredentialSource -- | Provide all values explicitly Explicit :: Region -> AccessKey -> SecretKey -> CredentialSource -- | The name of a per-project configuration profile to select when loading -- credentials from a file type Profile = Text -- | Cross-origin resource sharing rules data CORSRule -- | Smart constructor for CORSRule. Ensures that both origins and -- header names contain a maximum of one wildcard and removes duplicates -- from both headers and methods mkCORSRule :: MonadThrow m => Text -> [Method] -> [HeaderName] -> m CORSRule -- | An individual access grant data Grant -- | Information about who an access grant applies to data Grantee -- | Nominally contains a URI value, but Spaces only supports a single -- value for group access grants Group :: Grantee CanonicalUser :: Owner -> Grantee -- | Access grant level; Spaces currently only supports these two levels data Permission ReadOnly :: Permission FullControl :: Permission -- | A unique ID for a LifecycleRule data LifecycleID -- | Smart constructor for LifecycleID, which may contain a maximum -- of 255 characters, including spaces mkLifecycleID :: MonadThrow m => Text -> m LifecycleID -- | The base Exception type for both ClientExceptions and -- APIExceptions data SpacesException -- | An exception generated within the Spaces client data ClientException InvalidRequest :: Text -> ClientException InvalidResponse :: Text -> ClientException InvalidXML :: Text -> ClientException ConfigurationError :: Text -> ClientException -- | This includes the raw Response body, read into a lazy -- ByteString HTTPStatus :: Status -> ByteString -> ClientException OtherError :: Text -> ClientException -- | An s3-compatible API error response, sent as XML data APIException