@@ -12,6 +12,9 @@ import Data.Monoid
12import Data.Proxy
12import Data.Proxy
13import Data.Text (Text)
13import Data.Text (Text)
14import GHC.Generics
14import GHC.Generics
15+import Network.HTTP.Client (Manager, defaultManagerSettings,
17+import System.IO.Unsafe (unsafePerformIO)
15import Servant.API
18import Servant.API
16import Servant.Client
19import Servant.Client
@@ -55,10 +58,16 @@ instance FromJSON Package
55hackageAPI :: Proxy HackageAPI
58hackageAPI :: Proxy HackageAPI
56hackageAPI = Proxy
59hackageAPI = Proxy
62+{-# NOINLINE manager #-}
64+manager = unsafePerformIO $ newManager defaultManagerSettings
58getUsers :: ExceptT ServantError IO [UserSummary]
66getUsers :: ExceptT ServantError IO [UserSummary]
59getUser :: Username -> ExceptT ServantError IO UserDetailed
67getUser :: Username -> ExceptT ServantError IO UserDetailed
60getPackages :: ExceptT ServantError IO [Package]
68getPackages :: ExceptT ServantError IO [Package]
69+getUsers :<|> getUser :<|> getPackages =
61−getUsers :<|> getUser :<|> getPackages = client hackageAPI $ BaseUrl Http "hackage.haskell.org" 80 ""
70+ client hackageAPI (BaseUrl Http "hackage.haskell.org" 80 "") manager
63main :: IO ()
72main :: IO ()
64main = print =<< uselessNumbers
73main = print =<< uselessNumbers
@@ -71,7 +80,7 @@ uselessNumbers = runExceptT $ do
71 user <- liftIO $ do
80 user <- liftIO $ do
72 putStrLn "Enter a valid hackage username"
81 putStrLn "Enter a valid hackage username"
74− userDetailed <- (getUser user)
83+ userDetailed <- getUser user
75 liftIO . T.putStrLn $ user <> " maintains " <> T.pack (show (length $ groups userDetailed)) <> " packages"
84 liftIO . T.putStrLn $ user <> " maintains " <> T.pack (show (length $ groups userDetailed)) <> " packages"
77 packages <- getPackages
86 packages <- getPackages