@@ -16,6 +16,7 @@ module Http
18 , filePart
18 , filePart
19 , stringPart
20 , stringPart
@@ -26,6 +27,7 @@ import qualified Codec.Archive.Zip as Zip
26import Control.Exception (SomeException, handle)
27import Control.Exception (SomeException, handle)
27import qualified Data.Binary as Binary
28import qualified Data.Binary as Binary
28import qualified Data.Binary.Get as Binary
29import qualified Data.Binary.Get as Binary
30+import qualified Data.ByteString.Builder as B
29import qualified Data.ByteString.Char8 as BS
31import qualified Data.ByteString.Char8 as BS
30import qualified Data.Digest.Pure.SHA as SHA
32import qualified Data.Digest.Pure.SHA as SHA
31import qualified Data.String as String
33import qualified Data.String as String
@@ -34,8 +36,10 @@ import Network.HTTP.Client
34import Network.HTTP.Client.TLS (tlsManagerSettings)
36import Network.HTTP.Client.TLS (tlsManagerSettings)
35import Network.HTTP.Types.Header (Header, hAccept, hAcceptEncoding, hUserAgent)
37import Network.HTTP.Types.Header (Header, hAccept, hAcceptEncoding, hUserAgent)
36import Network.HTTP.Types.Method (Method, methodGet, methodPost)
38import Network.HTTP.Types.Method (Method, methodGet, methodPost)
39+import qualified Network.HTTP.Client as Multi (RequestBody(RequestBodyLBS))
37import qualified Network.HTTP.Client.MultipartFormData as Multi
40import qualified Network.HTTP.Client.MultipartFormData as Multi
42+import qualified Json.Encode as Encode
39import qualified Elm.Version as V
43import qualified Elm.Version as V
@@ -226,6 +230,15 @@ filePart name filePath =
226 Multi.partFileSource (String.fromString name) filePath
230 Multi.partFileSource (String.fromString name) filePath
233+jsonPart :: String -> FilePath -> Encode.Value -> Multi.Part
234+jsonPart name filePath value =
237+ Multi.RequestBodyLBS $ B.toLazyByteString $ Encode.encodeUgly value
239+ Multi.partFileRequestBody (String.fromString name) filePath body
229stringPart :: String -> String -> Multi.Part
242stringPart :: String -> String -> Multi.Part
230stringPart name string =
243stringPart name string =
231 Multi.partBS (String.fromString name) (BS.pack string)
244 Multi.partBS (String.fromString name) (BS.pack string)