module Network.IPFS.File.Form.Types (Form (..)) where

import           RIO
import qualified RIO.ByteString.Lazy     as Lazy

import           Servant.Multipart

import qualified Network.IPFS.File.Types as File

data Form = Form
  { Form -> Text
name       :: Text
  , Form -> Serialized
serialized :: File.Serialized
  }

instance ToMultipart Tmp Form where
  toMultipart :: Form -> MultipartData Tmp
toMultipart Form { $sel:name:Form :: Form -> Text
name = Text
name, $sel:serialized:Form :: Form -> Serialized
serialized = File.Serialized ByteString
fileLBS } =
    [Input] -> [FileData Tmp] -> MultipartData Tmp
forall tag. [Input] -> [FileData tag] -> MultipartData tag
MultipartData
        [ Input :: Text -> Text -> Input
Input
          { iName :: Text
iName  = Text
name
          , iValue :: Text
iValue = ByteString -> Text
decodeUtf8Lenient (ByteString -> Text) -> ByteString -> Text
forall a b. (a -> b) -> a -> b
$ ByteString -> ByteString
Lazy.toStrict ByteString
fileLBS
          }
        ]
        []