on master help sign in
unsafegetmeamanager
7049383Julian K. Arni
servant-examples/hackage/hackage.hs+11−2
@@ -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,
16+ newManager)
17+import System.IO.Unsafe (unsafePerformIO)
15import Servant.API
18import Servant.API
16import Servant.Client
19import Servant.Client
17
20
@@ -55,10 +58,16 @@ instance FromJSON Package
55hackageAPI :: Proxy HackageAPI
58hackageAPI :: Proxy HackageAPI
56hackageAPI = Proxy
59hackageAPI = Proxy
57
60
61+
62+{-# NOINLINE manager #-}
63+manager :: Manager
64+manager = unsafePerformIO $ newManager defaultManagerSettings
65+
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
62
71
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"
73 T.getLine
82 T.getLine
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"
76
85
77 packages <- getPackages
86 packages <- getPackages
servant-examples/servant-examples.cabal+2
@@ -53,6 +53,7 @@ executable t8-main
53 build-depends:
53 build-depends:
54 aeson
54 aeson
55 , base >= 4.7 && < 5
55 , base >= 4.7 && < 5
56+ , http-client > 0.4 && < 0.5
56 , servant == 0.5.*
57 , servant == 0.5.*
57 , servant-client == 0.5.*
58 , servant-client == 0.5.*
58 , servant-server == 0.5.*
59 , servant-server == 0.5.*
@@ -65,6 +66,7 @@ executable hackage
65 build-depends:
66 build-depends:
66 aeson >= 0.8
67 aeson >= 0.8
67 , base >=4.7 && < 5
68 , base >=4.7 && < 5
69+ , http-client > 0.4 && < 0.5
68 , servant == 0.5.*
70 , servant == 0.5.*
69 , servant-client == 0.5.*
71 , servant-client == 0.5.*
70 , text
72 , text
servant-examples/tutorial/T8.hs+8−1
@@ -4,8 +4,11 @@
4module T8 where
4module T8 where
5
5
6import Control.Monad.Trans.Except
6import Control.Monad.Trans.Except
7+import Network.HTTP.Client (Manager, defaultManagerSettings,
8+ newManager)
7import Servant
9import Servant
8import Servant.Client
10import Servant.Client
11+import System.IO.Unsafe (unsafePerformIO)
9
12
10import T3
13import T3
11
14
@@ -19,11 +22,15 @@ hello :: Maybe String -- ^ an optional value for "name"
19marketing :: ClientInfo -- ^ value for the request body
22marketing :: ClientInfo -- ^ value for the request body
20 -> ExceptT ServantError IO Email
23 -> ExceptT ServantError IO Email
21
24
22−position :<|> hello :<|> marketing = client api baseUrl
25+position :<|> hello :<|> marketing = client api baseUrl manager
23
26
24baseUrl :: BaseUrl
27baseUrl :: BaseUrl
25baseUrl = BaseUrl Http "localhost" 8081 ""
28baseUrl = BaseUrl Http "localhost" 8081 ""
26
29
30+{-# NOINLINE manager #-}
31+manager :: Manager
32+manager = unsafePerformIO $ newManager defaultManagerSettings
33+
27queries :: ExceptT ServantError IO (Position, HelloMessage, Email)
34queries :: ExceptT ServantError IO (Position, HelloMessage, Email)
28queries = do
35queries = do
29 pos <- position 10 10
36 pos <- position 10 10