on master help sign in
Merge pull request #7 from zerobuzz/2015-01-06-explicit-import-lists

Explicit import lists

commit9ef336b50f5f22e11ac3dc20da13ce62aff7b4e6 authorAlp Mestanogullari <alpmestan@gmail.com> dateTue 6 Jan 2015, 17:44 (12 years ago) parent6835f05ca817f0
5 files changed+66−63
src/Servant/Server.hs+5−4 src/Servant/Server/Internal.hs+14−12 src/Servant/Utils/StaticFiles.hs+3−3 test/Servant/ServerSpec.hs+28−28 test/Servant/Utils/StaticFilesSpec.hs+16−16
src/Servant/Server.hs+5−4
@@ -11,10 +11,12 @@ module Servant.Server
1111 HasServer(..)
1212 ) where
1313
14−import Data.Proxy
15−import Network.Wai
14+import Data.Proxy (Proxy)
15+import Network.Wai (Application)
16+
1617import Servant.Server.Internal
1718
19+
1820-- * Implementing Servers
1921
2022-- | 'serve' allows you to implement an API and produce a wai 'Application'.
@@ -30,7 +32,7 @@ import Servant.Server.Internal
3032-- > postBook book = ...
3133-- >
3234-- > myApi :: Proxy MyApi
33−-- > myApi = Proxy
35+-- > myApi = Proxy
3436-- >
3537-- > app :: Application
3638-- > app = serve myApi server
@@ -39,4 +41,3 @@ import Servant.Server.Internal
3941-- > main = Network.Wai.Handler.Warp.run 8080 app
4042serve :: HasServer layout => Proxy layout -> Server layout -> Application
4143serve p server = toApplication (route p server)
42−
src/Servant/Server/Internal.hs+14−12
@@ -7,24 +7,26 @@
77{-# LANGUAGE ScopedTypeVariables #-}
88module Servant.Server.Internal where
99
10−import Control.Applicative
11−import Control.Monad.Trans.Either
12−import Data.Aeson
10+import Control.Applicative ((<$>))
11+import Control.Monad.Trans.Either (EitherT, runEitherT)
12+import Data.Aeson (ToJSON, FromJSON, encode, decode')
1313import qualified Data.ByteString as B
1414import qualified Data.ByteString.Lazy as BL
15−import Data.IORef
15+import Data.IORef (newIORef, readIORef, writeIORef)
1616import Data.Maybe (catMaybes)
17−import Data.Monoid
18−import Data.Proxy
19−import Data.String
20−import Data.String.Conversions
17+import Data.Monoid (Monoid, mempty, mappend)
18+import Data.Proxy (Proxy(Proxy))
19+import Data.String (fromString)
20+import Data.String.Conversions (cs, (<>))
2121import Data.Text.Encoding (decodeUtf8)
2222import Data.Text (Text)
23−import GHC.TypeLits
23+import GHC.TypeLits (KnownSymbol, symbolVal)
2424import Network.HTTP.Types hiding (Header)
25−import Network.Wai
26−import Servant.API
27−import Servant.Common.Text
25+import Network.Wai (Response, Request, ResponseReceived, Application, pathInfo, requestBody,
26+ strictRequestBody, lazyRequestBody, requestHeaders, requestMethod,
27+ rawQueryString, responseLBS)
28+import Servant.API (QueryParams, QueryParam, QueryFlag, ReqBody, Header, Capture, Get, Delete, Put, Post, Raw, (:>), (:<|>)(..))
29+import Servant.Common.Text (FromText, fromText)
2830
2931data ReqBodyState = Uncalled
3032 | Called !B.ByteString
src/Servant/Utils/StaticFiles.hs+3−3
@@ -7,9 +7,9 @@ module Servant.Utils.StaticFiles (
77 ) where
88
99import Filesystem.Path.CurrentOS (decodeString)
10−import Network.Wai.Application.Static
11−import Servant.API.Raw
12−import Servant.Server.Internal
10+import Network.Wai.Application.Static (staticApp, defaultFileServerSettings)
11+import Servant.API.Raw (Raw)
12+import Servant.Server.Internal (Server)
1313
1414-- | Serve anything under the specified directory as a 'Raw' endpoint.
1515--
test/Servant/ServerSpec.hs+28−28
@@ -8,28 +8,28 @@
88module Servant.ServerSpec where
99
1010
11−import Control.Monad.Trans.Either
12−import Data.Aeson
13−import Data.Char
14−import Data.Proxy
15−import Data.String
16−import Data.String.Conversions
17−import GHC.Generics
18−import Network.HTTP.Types
19−import Network.Wai
20−import Network.Wai.Test
21−import Test.Hspec
22−import Test.Hspec.Wai
23−
24−import Servant.API.Capture
25−import Servant.API.Get
26−import Servant.API.ReqBody
27−import Servant.API.Post
28−import Servant.API.QueryParam
29−import Servant.API.Raw
30−import Servant.API.Sub
31−import Servant.API.Alternative
32−import Servant.Server
11+import Control.Monad.Trans.Either (EitherT, left)
12+import Data.Aeson (ToJSON, FromJSON, encode, decode')
13+import Data.Char (toUpper)
14+import Data.Proxy (Proxy(Proxy))
15+import Data.String (fromString)
16+import Data.String.Conversions (cs)
17+import GHC.Generics (Generic)
18+import Network.HTTP.Types (parseQuery, ok200)
19+import Network.Wai (Application, Request, responseLBS, pathInfo, queryString, rawQueryString)
20+import Network.Wai.Test (runSession, request, defaultRequest, simpleBody)
21+import Test.Hspec (Spec, describe, it, shouldBe)
22+import Test.Hspec.Wai (liftIO, with, get, post, shouldRespondWith, matchStatus)
23+
24+import Servant.API.Capture (Capture)
25+import Servant.API.Get (Get)
26+import Servant.API.ReqBody (ReqBody)
27+import Servant.API.Post (Post)
28+import Servant.API.QueryParam (QueryParam, QueryParams, QueryFlag)
29+import Servant.API.Raw (Raw)
30+import Servant.API.Sub ((:>))
31+import Servant.API.Alternative ((:<|>)((:<|>)))
32+import Servant.Server (Server, serve)
3333
3434
3535-- * test data types
@@ -94,8 +94,8 @@ captureSpec = do
9494
9595 with (return (serve
9696 (Proxy :: Proxy (Capture "captured" String :> Raw))
97− (\ "captured" request respond ->
98− respond $ responseLBS ok200 [] (cs $ show $ pathInfo request)))) $ do
97+ (\ "captured" request_ respond ->
98+ respond $ responseLBS ok200 [] (cs $ show $ pathInfo request_)))) $ do
9999 it "strips the captured path snippet from pathInfo" $ do
100100 get "/captured/foo" `shouldRespondWith` (fromString (show ["foo" :: String]))
101101
@@ -134,7 +134,7 @@ qpServer = queryParamServer :<|> qpNames :<|> qpCapitalize
134134 qpCapitalize False = return alice
135135 qpCapitalize True = return alice { name = map toUpper (name alice) }
136136
137− queryParamServer (Just name) = return alice{name = name}
137+ queryParamServer (Just name_) = return alice{name = name_}
138138 queryParamServer Nothing = return alice
139139
140140queryParamSpec :: Spec
@@ -222,7 +222,7 @@ type RawApi = "foo" :> Raw
222222rawApi :: Proxy RawApi
223223rawApi = Proxy
224224rawApplication :: Show a => (Request -> a) -> Application
225−rawApplication f request respond = respond $ responseLBS ok200 [] (cs $ show $ f request)
225+rawApplication f request_ respond = respond $ responseLBS ok200 [] (cs $ show $ f request_)
226226
227227rawSpec :: Spec
228228rawSpec = do
@@ -264,7 +264,7 @@ unionSpec = do
264264 liftIO $ do
265265 decode' (simpleBody response) `shouldBe`
266266 Just alice
267− response <- get "/bar"
267+ response_ <- get "/bar"
268268 liftIO $ do
269− decode' (simpleBody response) `shouldBe`
269+ decode' (simpleBody response_) `shouldBe`
270270 Just jerry
test/Servant/Utils/StaticFilesSpec.hs+16−16
@@ -5,22 +5,22 @@
55{-# OPTIONS_GHC -fno-warn-orphans #-}
66module Servant.Utils.StaticFilesSpec where
77
8−import Control.Exception
9−import Data.Proxy
10−import Network.Wai
11−import System.Directory
12−import System.IO.Temp
13−import Test.Hspec hiding (pending)
14−import Test.Hspec.Wai
8+import Control.Exception (bracket)
9+import Data.Proxy (Proxy(Proxy))
10+import Network.Wai (Application)
11+import System.Directory (getCurrentDirectory, setCurrentDirectory, createDirectory)
12+import System.IO.Temp (withSystemTempDirectory)
13+import Test.Hspec (Spec, describe, it, around_)
14+import Test.Hspec.Wai (with, get, shouldRespondWith)
1515
16−import Servant.API.Alternative
17−import Servant.API.Capture
18−import Servant.API.Get
19−import Servant.API.Raw
20−import Servant.API.Sub
21−import Servant.Server
22−import Servant.ServerSpec
23−import Servant.Utils.StaticFiles
16+import Servant.API.Alternative ((:<|>)((:<|>)))
17+import Servant.API.Capture (Capture)
18+import Servant.API.Get (Get)
19+import Servant.API.Raw (Raw)
20+import Servant.API.Sub ((:>))
21+import Servant.Server (Server, serve)
22+import Servant.ServerSpec (Person(Person))
23+import Servant.Utils.StaticFiles (serveDirectory)
2424
2525type Api =
2626 "dummy_api" :> Capture "person_name" String :> Get Person
@@ -35,7 +35,7 @@ app = serve api server
3535
3636server :: Server Api
3737server =
38− (\ name -> return (Person name 42))
38+ (\ name_ -> return (Person name_ 42))
3939 :<|> serveDirectory "static"
4040
4141withStaticFiles :: IO () -> IO ()