]> git.rkrishnan.org Git - functorrent.git/blob - src/FuncTorrent/Network.hs
Network.httpget -> Network.sendGetRequest
[functorrent.git] / src / FuncTorrent / Network.hs
1 {-# LANGUAGE OverloadedStrings #-}
2 module FuncTorrent.Network
3     (
4      sendGetRequest,
5      mkParams
6     ) where
7
8 import Prelude hiding (concat)
9
10 import Data.ByteString (ByteString)
11 import Data.ByteString.Char8 as BC (pack, unpack, concat, intercalate)
12 import Network.HTTP (simpleHTTP, defaultGETRequest_, getResponseBody)
13 import Network.URI (parseURI)
14
15 -- | Make a query string from a alist of k, v
16 -- TODO: Url encode each argument
17 mkParams :: [(String, ByteString)] -> ByteString
18 mkParams params = BC.intercalate "&" [concat [pack f, "=", s] | (f,s) <- params]
19
20 sendGetRequest :: String -> [(String, ByteString)] -> IO ByteString
21 sendGetRequest url args = simpleHTTP (defaultGETRequest_ url') >>= getResponseBody
22     where url' = case parseURI $ unpack $ concat [pack url, "?", qstr] of
23                    Just x -> x
24                    _ -> error "Bad tracker URL"
25           qstr = mkParams args