module Cachix.Types.MultipartUpload where

import Cachix.Types.NarInfoCreate (NarInfoCreate)
import Data.Aeson (FromJSON, ToJSON)
import Data.Swagger (ToSchema)
import Data.UUID (UUID)
import Protolude

data CreateMultipartUploadResponse = CreateMultipartUploadResponse
  { CreateMultipartUploadResponse -> UUID
narId :: UUID,
    CreateMultipartUploadResponse -> Text
uploadId :: Text
  }
  deriving stock ((forall x.
 CreateMultipartUploadResponse
 -> Rep CreateMultipartUploadResponse x)
-> (forall x.
    Rep CreateMultipartUploadResponse x
    -> CreateMultipartUploadResponse)
-> Generic CreateMultipartUploadResponse
forall x.
Rep CreateMultipartUploadResponse x
-> CreateMultipartUploadResponse
forall x.
CreateMultipartUploadResponse
-> Rep CreateMultipartUploadResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x.
CreateMultipartUploadResponse
-> Rep CreateMultipartUploadResponse x
from :: forall x.
CreateMultipartUploadResponse
-> Rep CreateMultipartUploadResponse x
$cto :: forall x.
Rep CreateMultipartUploadResponse x
-> CreateMultipartUploadResponse
to :: forall x.
Rep CreateMultipartUploadResponse x
-> CreateMultipartUploadResponse
Generic, CreateMultipartUploadResponse
-> CreateMultipartUploadResponse -> Bool
(CreateMultipartUploadResponse
 -> CreateMultipartUploadResponse -> Bool)
-> (CreateMultipartUploadResponse
    -> CreateMultipartUploadResponse -> Bool)
-> Eq CreateMultipartUploadResponse
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: CreateMultipartUploadResponse
-> CreateMultipartUploadResponse -> Bool
== :: CreateMultipartUploadResponse
-> CreateMultipartUploadResponse -> Bool
$c/= :: CreateMultipartUploadResponse
-> CreateMultipartUploadResponse -> Bool
/= :: CreateMultipartUploadResponse
-> CreateMultipartUploadResponse -> Bool
Eq, Int -> CreateMultipartUploadResponse -> ShowS
[CreateMultipartUploadResponse] -> ShowS
CreateMultipartUploadResponse -> String
(Int -> CreateMultipartUploadResponse -> ShowS)
-> (CreateMultipartUploadResponse -> String)
-> ([CreateMultipartUploadResponse] -> ShowS)
-> Show CreateMultipartUploadResponse
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> CreateMultipartUploadResponse -> ShowS
showsPrec :: Int -> CreateMultipartUploadResponse -> ShowS
$cshow :: CreateMultipartUploadResponse -> String
show :: CreateMultipartUploadResponse -> String
$cshowList :: [CreateMultipartUploadResponse] -> ShowS
showList :: [CreateMultipartUploadResponse] -> ShowS
Show)
  deriving anyclass ([CreateMultipartUploadResponse] -> Value
[CreateMultipartUploadResponse] -> Encoding
CreateMultipartUploadResponse -> Bool
CreateMultipartUploadResponse -> Value
CreateMultipartUploadResponse -> Encoding
(CreateMultipartUploadResponse -> Value)
-> (CreateMultipartUploadResponse -> Encoding)
-> ([CreateMultipartUploadResponse] -> Value)
-> ([CreateMultipartUploadResponse] -> Encoding)
-> (CreateMultipartUploadResponse -> Bool)
-> ToJSON CreateMultipartUploadResponse
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> (a -> Bool)
-> ToJSON a
$ctoJSON :: CreateMultipartUploadResponse -> Value
toJSON :: CreateMultipartUploadResponse -> Value
$ctoEncoding :: CreateMultipartUploadResponse -> Encoding
toEncoding :: CreateMultipartUploadResponse -> Encoding
$ctoJSONList :: [CreateMultipartUploadResponse] -> Value
toJSONList :: [CreateMultipartUploadResponse] -> Value
$ctoEncodingList :: [CreateMultipartUploadResponse] -> Encoding
toEncodingList :: [CreateMultipartUploadResponse] -> Encoding
$comitField :: CreateMultipartUploadResponse -> Bool
omitField :: CreateMultipartUploadResponse -> Bool
ToJSON, Maybe CreateMultipartUploadResponse
Value -> Parser [CreateMultipartUploadResponse]
Value -> Parser CreateMultipartUploadResponse
(Value -> Parser CreateMultipartUploadResponse)
-> (Value -> Parser [CreateMultipartUploadResponse])
-> Maybe CreateMultipartUploadResponse
-> FromJSON CreateMultipartUploadResponse
forall a.
(Value -> Parser a)
-> (Value -> Parser [a]) -> Maybe a -> FromJSON a
$cparseJSON :: Value -> Parser CreateMultipartUploadResponse
parseJSON :: Value -> Parser CreateMultipartUploadResponse
$cparseJSONList :: Value -> Parser [CreateMultipartUploadResponse]
parseJSONList :: Value -> Parser [CreateMultipartUploadResponse]
$comittedField :: Maybe CreateMultipartUploadResponse
omittedField :: Maybe CreateMultipartUploadResponse
FromJSON, Proxy CreateMultipartUploadResponse
-> Declare (Definitions Schema) NamedSchema
(Proxy CreateMultipartUploadResponse
 -> Declare (Definitions Schema) NamedSchema)
-> ToSchema CreateMultipartUploadResponse
forall a.
(Proxy a -> Declare (Definitions Schema) NamedSchema) -> ToSchema a
$cdeclareNamedSchema :: Proxy CreateMultipartUploadResponse
-> Declare (Definitions Schema) NamedSchema
declareNamedSchema :: Proxy CreateMultipartUploadResponse
-> Declare (Definitions Schema) NamedSchema
ToSchema, CreateMultipartUploadResponse -> ()
(CreateMultipartUploadResponse -> ())
-> NFData CreateMultipartUploadResponse
forall a. (a -> ()) -> NFData a
$crnf :: CreateMultipartUploadResponse -> ()
rnf :: CreateMultipartUploadResponse -> ()
NFData)

-- | Any hashes or headers required to create the presigned URL.
data SigningData = SigningData
  { SigningData -> Text
contentMD5 :: Text
  }
  deriving stock ((forall x. SigningData -> Rep SigningData x)
-> (forall x. Rep SigningData x -> SigningData)
-> Generic SigningData
forall x. Rep SigningData x -> SigningData
forall x. SigningData -> Rep SigningData x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. SigningData -> Rep SigningData x
from :: forall x. SigningData -> Rep SigningData x
$cto :: forall x. Rep SigningData x -> SigningData
to :: forall x. Rep SigningData x -> SigningData
Generic, SigningData -> SigningData -> Bool
(SigningData -> SigningData -> Bool)
-> (SigningData -> SigningData -> Bool) -> Eq SigningData
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: SigningData -> SigningData -> Bool
== :: SigningData -> SigningData -> Bool
$c/= :: SigningData -> SigningData -> Bool
/= :: SigningData -> SigningData -> Bool
Eq, Int -> SigningData -> ShowS
[SigningData] -> ShowS
SigningData -> String
(Int -> SigningData -> ShowS)
-> (SigningData -> String)
-> ([SigningData] -> ShowS)
-> Show SigningData
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> SigningData -> ShowS
showsPrec :: Int -> SigningData -> ShowS
$cshow :: SigningData -> String
show :: SigningData -> String
$cshowList :: [SigningData] -> ShowS
showList :: [SigningData] -> ShowS
Show)
  deriving anyclass ([SigningData] -> Value
[SigningData] -> Encoding
SigningData -> Bool
SigningData -> Value
SigningData -> Encoding
(SigningData -> Value)
-> (SigningData -> Encoding)
-> ([SigningData] -> Value)
-> ([SigningData] -> Encoding)
-> (SigningData -> Bool)
-> ToJSON SigningData
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> (a -> Bool)
-> ToJSON a
$ctoJSON :: SigningData -> Value
toJSON :: SigningData -> Value
$ctoEncoding :: SigningData -> Encoding
toEncoding :: SigningData -> Encoding
$ctoJSONList :: [SigningData] -> Value
toJSONList :: [SigningData] -> Value
$ctoEncodingList :: [SigningData] -> Encoding
toEncodingList :: [SigningData] -> Encoding
$comitField :: SigningData -> Bool
omitField :: SigningData -> Bool
ToJSON, Maybe SigningData
Value -> Parser [SigningData]
Value -> Parser SigningData
(Value -> Parser SigningData)
-> (Value -> Parser [SigningData])
-> Maybe SigningData
-> FromJSON SigningData
forall a.
(Value -> Parser a)
-> (Value -> Parser [a]) -> Maybe a -> FromJSON a
$cparseJSON :: Value -> Parser SigningData
parseJSON :: Value -> Parser SigningData
$cparseJSONList :: Value -> Parser [SigningData]
parseJSONList :: Value -> Parser [SigningData]
$comittedField :: Maybe SigningData
omittedField :: Maybe SigningData
FromJSON, Proxy SigningData -> Declare (Definitions Schema) NamedSchema
(Proxy SigningData -> Declare (Definitions Schema) NamedSchema)
-> ToSchema SigningData
forall a.
(Proxy a -> Declare (Definitions Schema) NamedSchema) -> ToSchema a
$cdeclareNamedSchema :: Proxy SigningData -> Declare (Definitions Schema) NamedSchema
declareNamedSchema :: Proxy SigningData -> Declare (Definitions Schema) NamedSchema
ToSchema, SigningData -> ()
(SigningData -> ()) -> NFData SigningData
forall a. (a -> ()) -> NFData a
$crnf :: SigningData -> ()
rnf :: SigningData -> ()
NFData)

newtype UploadPartResponse = UploadPartResponse {UploadPartResponse -> Text
uploadUrl :: Text}
  deriving stock ((forall x. UploadPartResponse -> Rep UploadPartResponse x)
-> (forall x. Rep UploadPartResponse x -> UploadPartResponse)
-> Generic UploadPartResponse
forall x. Rep UploadPartResponse x -> UploadPartResponse
forall x. UploadPartResponse -> Rep UploadPartResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. UploadPartResponse -> Rep UploadPartResponse x
from :: forall x. UploadPartResponse -> Rep UploadPartResponse x
$cto :: forall x. Rep UploadPartResponse x -> UploadPartResponse
to :: forall x. Rep UploadPartResponse x -> UploadPartResponse
Generic, Int -> UploadPartResponse -> ShowS
[UploadPartResponse] -> ShowS
UploadPartResponse -> String
(Int -> UploadPartResponse -> ShowS)
-> (UploadPartResponse -> String)
-> ([UploadPartResponse] -> ShowS)
-> Show UploadPartResponse
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> UploadPartResponse -> ShowS
showsPrec :: Int -> UploadPartResponse -> ShowS
$cshow :: UploadPartResponse -> String
show :: UploadPartResponse -> String
$cshowList :: [UploadPartResponse] -> ShowS
showList :: [UploadPartResponse] -> ShowS
Show)
  deriving anyclass ([UploadPartResponse] -> Value
[UploadPartResponse] -> Encoding
UploadPartResponse -> Bool
UploadPartResponse -> Value
UploadPartResponse -> Encoding
(UploadPartResponse -> Value)
-> (UploadPartResponse -> Encoding)
-> ([UploadPartResponse] -> Value)
-> ([UploadPartResponse] -> Encoding)
-> (UploadPartResponse -> Bool)
-> ToJSON UploadPartResponse
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> (a -> Bool)
-> ToJSON a
$ctoJSON :: UploadPartResponse -> Value
toJSON :: UploadPartResponse -> Value
$ctoEncoding :: UploadPartResponse -> Encoding
toEncoding :: UploadPartResponse -> Encoding
$ctoJSONList :: [UploadPartResponse] -> Value
toJSONList :: [UploadPartResponse] -> Value
$ctoEncodingList :: [UploadPartResponse] -> Encoding
toEncodingList :: [UploadPartResponse] -> Encoding
$comitField :: UploadPartResponse -> Bool
omitField :: UploadPartResponse -> Bool
ToJSON, Maybe UploadPartResponse
Value -> Parser [UploadPartResponse]
Value -> Parser UploadPartResponse
(Value -> Parser UploadPartResponse)
-> (Value -> Parser [UploadPartResponse])
-> Maybe UploadPartResponse
-> FromJSON UploadPartResponse
forall a.
(Value -> Parser a)
-> (Value -> Parser [a]) -> Maybe a -> FromJSON a
$cparseJSON :: Value -> Parser UploadPartResponse
parseJSON :: Value -> Parser UploadPartResponse
$cparseJSONList :: Value -> Parser [UploadPartResponse]
parseJSONList :: Value -> Parser [UploadPartResponse]
$comittedField :: Maybe UploadPartResponse
omittedField :: Maybe UploadPartResponse
FromJSON, Proxy UploadPartResponse
-> Declare (Definitions Schema) NamedSchema
(Proxy UploadPartResponse
 -> Declare (Definitions Schema) NamedSchema)
-> ToSchema UploadPartResponse
forall a.
(Proxy a -> Declare (Definitions Schema) NamedSchema) -> ToSchema a
$cdeclareNamedSchema :: Proxy UploadPartResponse
-> Declare (Definitions Schema) NamedSchema
declareNamedSchema :: Proxy UploadPartResponse
-> Declare (Definitions Schema) NamedSchema
ToSchema, UploadPartResponse -> ()
(UploadPartResponse -> ()) -> NFData UploadPartResponse
forall a. (a -> ()) -> NFData a
$crnf :: UploadPartResponse -> ()
rnf :: UploadPartResponse -> ()
NFData)

data CompletedPart = CompletedPart
  { CompletedPart -> Int
partNumber :: Int,
    -- | An opaque identifier for the uploaded part.
    CompletedPart -> Text
eTag :: Text
  }
  deriving stock ((forall x. CompletedPart -> Rep CompletedPart x)
-> (forall x. Rep CompletedPart x -> CompletedPart)
-> Generic CompletedPart
forall x. Rep CompletedPart x -> CompletedPart
forall x. CompletedPart -> Rep CompletedPart x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. CompletedPart -> Rep CompletedPart x
from :: forall x. CompletedPart -> Rep CompletedPart x
$cto :: forall x. Rep CompletedPart x -> CompletedPart
to :: forall x. Rep CompletedPart x -> CompletedPart
Generic, CompletedPart -> CompletedPart -> Bool
(CompletedPart -> CompletedPart -> Bool)
-> (CompletedPart -> CompletedPart -> Bool) -> Eq CompletedPart
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: CompletedPart -> CompletedPart -> Bool
== :: CompletedPart -> CompletedPart -> Bool
$c/= :: CompletedPart -> CompletedPart -> Bool
/= :: CompletedPart -> CompletedPart -> Bool
Eq, Int -> CompletedPart -> ShowS
[CompletedPart] -> ShowS
CompletedPart -> String
(Int -> CompletedPart -> ShowS)
-> (CompletedPart -> String)
-> ([CompletedPart] -> ShowS)
-> Show CompletedPart
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> CompletedPart -> ShowS
showsPrec :: Int -> CompletedPart -> ShowS
$cshow :: CompletedPart -> String
show :: CompletedPart -> String
$cshowList :: [CompletedPart] -> ShowS
showList :: [CompletedPart] -> ShowS
Show)
  deriving anyclass ([CompletedPart] -> Value
[CompletedPart] -> Encoding
CompletedPart -> Bool
CompletedPart -> Value
CompletedPart -> Encoding
(CompletedPart -> Value)
-> (CompletedPart -> Encoding)
-> ([CompletedPart] -> Value)
-> ([CompletedPart] -> Encoding)
-> (CompletedPart -> Bool)
-> ToJSON CompletedPart
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> (a -> Bool)
-> ToJSON a
$ctoJSON :: CompletedPart -> Value
toJSON :: CompletedPart -> Value
$ctoEncoding :: CompletedPart -> Encoding
toEncoding :: CompletedPart -> Encoding
$ctoJSONList :: [CompletedPart] -> Value
toJSONList :: [CompletedPart] -> Value
$ctoEncodingList :: [CompletedPart] -> Encoding
toEncodingList :: [CompletedPart] -> Encoding
$comitField :: CompletedPart -> Bool
omitField :: CompletedPart -> Bool
ToJSON, Maybe CompletedPart
Value -> Parser [CompletedPart]
Value -> Parser CompletedPart
(Value -> Parser CompletedPart)
-> (Value -> Parser [CompletedPart])
-> Maybe CompletedPart
-> FromJSON CompletedPart
forall a.
(Value -> Parser a)
-> (Value -> Parser [a]) -> Maybe a -> FromJSON a
$cparseJSON :: Value -> Parser CompletedPart
parseJSON :: Value -> Parser CompletedPart
$cparseJSONList :: Value -> Parser [CompletedPart]
parseJSONList :: Value -> Parser [CompletedPart]
$comittedField :: Maybe CompletedPart
omittedField :: Maybe CompletedPart
FromJSON, Proxy CompletedPart -> Declare (Definitions Schema) NamedSchema
(Proxy CompletedPart -> Declare (Definitions Schema) NamedSchema)
-> ToSchema CompletedPart
forall a.
(Proxy a -> Declare (Definitions Schema) NamedSchema) -> ToSchema a
$cdeclareNamedSchema :: Proxy CompletedPart -> Declare (Definitions Schema) NamedSchema
declareNamedSchema :: Proxy CompletedPart -> Declare (Definitions Schema) NamedSchema
ToSchema, CompletedPart -> ()
(CompletedPart -> ()) -> NFData CompletedPart
forall a. (a -> ()) -> NFData a
$crnf :: CompletedPart -> ()
rnf :: CompletedPart -> ()
NFData)

instance Ord CompletedPart where
  CompletedPart
p1 compare :: CompletedPart -> CompletedPart -> Ordering
`compare` CompletedPart
p2 = CompletedPart -> Int
partNumber CompletedPart
p1 Int -> Int -> Ordering
forall a. Ord a => a -> a -> Ordering
`compare` CompletedPart -> Int
partNumber CompletedPart
p2

type CompletedParts = Maybe (NonEmpty CompletedPart)

data CompletedMultipartUpload = CompletedMultipartUpload
  { -- | A list of 'CompletedPart`, sorted by the 'partNumber'.
    CompletedMultipartUpload -> CompletedParts
parts :: CompletedParts,
    -- | The narinfo to create after verifying the upload.
    CompletedMultipartUpload -> NarInfoCreate
narInfoCreate :: NarInfoCreate
  }
  deriving stock ((forall x.
 CompletedMultipartUpload -> Rep CompletedMultipartUpload x)
-> (forall x.
    Rep CompletedMultipartUpload x -> CompletedMultipartUpload)
-> Generic CompletedMultipartUpload
forall x.
Rep CompletedMultipartUpload x -> CompletedMultipartUpload
forall x.
CompletedMultipartUpload -> Rep CompletedMultipartUpload x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x.
CompletedMultipartUpload -> Rep CompletedMultipartUpload x
from :: forall x.
CompletedMultipartUpload -> Rep CompletedMultipartUpload x
$cto :: forall x.
Rep CompletedMultipartUpload x -> CompletedMultipartUpload
to :: forall x.
Rep CompletedMultipartUpload x -> CompletedMultipartUpload
Generic, Int -> CompletedMultipartUpload -> ShowS
[CompletedMultipartUpload] -> ShowS
CompletedMultipartUpload -> String
(Int -> CompletedMultipartUpload -> ShowS)
-> (CompletedMultipartUpload -> String)
-> ([CompletedMultipartUpload] -> ShowS)
-> Show CompletedMultipartUpload
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> CompletedMultipartUpload -> ShowS
showsPrec :: Int -> CompletedMultipartUpload -> ShowS
$cshow :: CompletedMultipartUpload -> String
show :: CompletedMultipartUpload -> String
$cshowList :: [CompletedMultipartUpload] -> ShowS
showList :: [CompletedMultipartUpload] -> ShowS
Show)
  deriving anyclass ([CompletedMultipartUpload] -> Value
[CompletedMultipartUpload] -> Encoding
CompletedMultipartUpload -> Bool
CompletedMultipartUpload -> Value
CompletedMultipartUpload -> Encoding
(CompletedMultipartUpload -> Value)
-> (CompletedMultipartUpload -> Encoding)
-> ([CompletedMultipartUpload] -> Value)
-> ([CompletedMultipartUpload] -> Encoding)
-> (CompletedMultipartUpload -> Bool)
-> ToJSON CompletedMultipartUpload
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> (a -> Bool)
-> ToJSON a
$ctoJSON :: CompletedMultipartUpload -> Value
toJSON :: CompletedMultipartUpload -> Value
$ctoEncoding :: CompletedMultipartUpload -> Encoding
toEncoding :: CompletedMultipartUpload -> Encoding
$ctoJSONList :: [CompletedMultipartUpload] -> Value
toJSONList :: [CompletedMultipartUpload] -> Value
$ctoEncodingList :: [CompletedMultipartUpload] -> Encoding
toEncodingList :: [CompletedMultipartUpload] -> Encoding
$comitField :: CompletedMultipartUpload -> Bool
omitField :: CompletedMultipartUpload -> Bool
ToJSON, Maybe CompletedMultipartUpload
Value -> Parser [CompletedMultipartUpload]
Value -> Parser CompletedMultipartUpload
(Value -> Parser CompletedMultipartUpload)
-> (Value -> Parser [CompletedMultipartUpload])
-> Maybe CompletedMultipartUpload
-> FromJSON CompletedMultipartUpload
forall a.
(Value -> Parser a)
-> (Value -> Parser [a]) -> Maybe a -> FromJSON a
$cparseJSON :: Value -> Parser CompletedMultipartUpload
parseJSON :: Value -> Parser CompletedMultipartUpload
$cparseJSONList :: Value -> Parser [CompletedMultipartUpload]
parseJSONList :: Value -> Parser [CompletedMultipartUpload]
$comittedField :: Maybe CompletedMultipartUpload
omittedField :: Maybe CompletedMultipartUpload
FromJSON, Proxy CompletedMultipartUpload
-> Declare (Definitions Schema) NamedSchema
(Proxy CompletedMultipartUpload
 -> Declare (Definitions Schema) NamedSchema)
-> ToSchema CompletedMultipartUpload
forall a.
(Proxy a -> Declare (Definitions Schema) NamedSchema) -> ToSchema a
$cdeclareNamedSchema :: Proxy CompletedMultipartUpload
-> Declare (Definitions Schema) NamedSchema
declareNamedSchema :: Proxy CompletedMultipartUpload
-> Declare (Definitions Schema) NamedSchema
ToSchema)