on 282b1bc help sign in
stackage/stackage-upload.hs
45 lines 1.4 kB history raw
1{-# LANGUAGE OverloadedStrings #-}
2import qualified Data.ByteString.Char8 as S8
3import Network.HTTP.Client
4import Network.HTTP.Client.MultipartFormData
5import System.Environment (getArgs, getEnv,
6 getProgName)
7import System.Exit (exitFailure)
9main :: IO ()
10main = withManager defaultManagerSettings $ \m -> do
11 args <- getArgs
12 token <- readFile "/auth-token"
13 (filepath, alias) <-
14 case args of
15 [x, y] -> return (x, y)
16 _ -> do
17 pn <- getProgName
18 putStrLn $ concat
19 [ "Usage: "
20 , pn
21 , " <filepath> <alias name>"
22 ]
23 exitFailure
25 putStrLn $ concat
26 [ "Uploading "
27 , filepath
28 , " as "
29 , alias
30 ]
32 req1 <- parseUrl "http://www.stackage.org/upload"
33 let formData =
34 [ partBS "alias" $ S8.pack alias
35 , partFileSource "stackage" filepath
36 ]
37 req2 <- formDataBody formData req1
38 let req3 = req2
39 { method = "PUT"
40 , requestHeaders =
41 [ ("Authorization", S8.pack token)
42 , ("Accept", "application/json")
43 ] ++ requestHeaders req2
44 }
45 httpLbs req3 m >>= print