@@ -16,6 +16,7 @@ module Http
1616 -- upload
1717 , upload
1818 , filePart
19+ , jsonPart
1920 , stringPart
2021 )
2122 where
@@ -26,6 +27,7 @@ import qualified Codec.Archive.Zip as Zip
2627import Control.Exception (SomeException, handle)
2728import qualified Data.Binary as Binary
2829import qualified Data.Binary.Get as Binary
30+import qualified Data.ByteString.Builder as B
2931import qualified Data.ByteString.Char8 as BS
3032import qualified Data.Digest.Pure.SHA as SHA
3133import qualified Data.String as String
@@ -34,8 +36,10 @@ import Network.HTTP.Client
3436import Network.HTTP.Client.TLS (tlsManagerSettings)
3537import Network.HTTP.Types.Header (Header, hAccept, hAcceptEncoding, hUserAgent)
3638import Network.HTTP.Types.Method (Method, methodGet, methodPost)
39+import qualified Network.HTTP.Client as Multi (RequestBody(RequestBodyLBS))
3740import qualified Network.HTTP.Client.MultipartFormData as Multi
3841
42+import qualified Json.Encode as Encode
3943import qualified Elm.Version as V
4044
4145
@@ -226,6 +230,15 @@ filePart name filePath =
226230 Multi.partFileSource (String.fromString name) filePath
227231
228232
233+jsonPart :: String -> FilePath -> Encode.Value -> Multi.Part
234+jsonPart name filePath value =
235+ let
236+ body =
237+ Multi.RequestBodyLBS $ B.toLazyByteString $ Encode.encodeUgly value
238+ in
239+ Multi.partFileRequestBody (String.fromString name) filePath body
240+
241+
229242stringPart :: String -> String -> Multi.Part
230243stringPart name string =
231244 Multi.partBS (String.fromString name) (BS.pack string)