Merge pull request #5 from zerobuzz/2015-01-06-explicit-import-lists
Explicit import lists
This commit is contained in:
commit
5a6d864ebe
12 changed files with 79 additions and 56 deletions
|
@ -37,16 +37,16 @@ module Servant.API (
|
||||||
module Servant.Utils.Links,
|
module Servant.Utils.Links,
|
||||||
) where
|
) where
|
||||||
|
|
||||||
import Servant.API.Alternative
|
import Servant.API.Alternative ( (:<|>)(..) )
|
||||||
import Servant.API.Capture
|
import Servant.API.Capture ( Capture )
|
||||||
import Servant.API.Delete
|
import Servant.API.Delete ( Delete )
|
||||||
import Servant.API.Get
|
import Servant.API.Get ( Get )
|
||||||
import Servant.API.Header
|
import Servant.API.Header ( Header )
|
||||||
import Servant.API.Post
|
import Servant.API.Post ( Post )
|
||||||
import Servant.API.Put
|
import Servant.API.Put ( Put )
|
||||||
import Servant.API.QueryParam
|
import Servant.API.QueryParam ( QueryFlag, QueryParams, QueryParam )
|
||||||
import Servant.API.Raw
|
import Servant.API.Raw ( Raw )
|
||||||
import Servant.API.ReqBody
|
import Servant.API.ReqBody ( ReqBody )
|
||||||
import Servant.API.Sub
|
import Servant.API.Sub ( (:>)(..) )
|
||||||
import Servant.QQ (sitemap)
|
import Servant.QQ ( sitemap )
|
||||||
import Servant.Utils.Links (mkLink)
|
import Servant.Utils.Links ( mkLink )
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{-# LANGUAGE DeriveDataTypeable #-}
|
{-# LANGUAGE DeriveDataTypeable #-}
|
||||||
module Servant.API.Delete where
|
module Servant.API.Delete where
|
||||||
|
|
||||||
import Data.Typeable
|
import Data.Typeable ( Typeable )
|
||||||
|
|
||||||
-- | Combinator for DELETE requests.
|
-- | Combinator for DELETE requests.
|
||||||
--
|
--
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{-# LANGUAGE DeriveDataTypeable #-}
|
{-# LANGUAGE DeriveDataTypeable #-}
|
||||||
module Servant.API.Get where
|
module Servant.API.Get where
|
||||||
|
|
||||||
import Data.Typeable
|
import Data.Typeable ( Typeable )
|
||||||
|
|
||||||
-- | Endpoint for simple GET requests. Serves the result as JSON.
|
-- | Endpoint for simple GET requests. Serves the result as JSON.
|
||||||
--
|
--
|
||||||
|
|
|
@ -1,8 +1,6 @@
|
||||||
{-# LANGUAGE PolyKinds #-}
|
{-# LANGUAGE PolyKinds #-}
|
||||||
module Servant.API.Header where
|
module Servant.API.Header where
|
||||||
|
|
||||||
import GHC.TypeLits
|
|
||||||
|
|
||||||
-- | Extract the given header's value as a value of type @a@.
|
-- | Extract the given header's value as a value of type @a@.
|
||||||
--
|
--
|
||||||
-- Example:
|
-- Example:
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{-# LANGUAGE DeriveDataTypeable #-}
|
{-# LANGUAGE DeriveDataTypeable #-}
|
||||||
module Servant.API.Post where
|
module Servant.API.Post where
|
||||||
|
|
||||||
import Data.Typeable
|
import Data.Typeable ( Typeable )
|
||||||
|
|
||||||
-- | Endpoint for POST requests. The type variable represents the type of the
|
-- | Endpoint for POST requests. The type variable represents the type of the
|
||||||
-- response body (not the request body, use 'Servant.API.ReqBody.ReqBody' for
|
-- response body (not the request body, use 'Servant.API.ReqBody.ReqBody' for
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{-# LANGUAGE DeriveDataTypeable #-}
|
{-# LANGUAGE DeriveDataTypeable #-}
|
||||||
module Servant.API.Put where
|
module Servant.API.Put where
|
||||||
|
|
||||||
import Data.Typeable
|
import Data.Typeable ( Typeable )
|
||||||
|
|
||||||
-- | Endpoint for PUT requests, usually used to update a ressource.
|
-- | Endpoint for PUT requests, usually used to update a ressource.
|
||||||
-- The type @a@ is the type of the response body that's returned.
|
-- The type @a@ is the type of the response body that's returned.
|
||||||
|
|
|
@ -2,8 +2,7 @@
|
||||||
{-# LANGUAGE TypeOperators #-}
|
{-# LANGUAGE TypeOperators #-}
|
||||||
module Servant.API.Sub where
|
module Servant.API.Sub where
|
||||||
|
|
||||||
import Data.Proxy
|
import Data.Proxy ( Proxy )
|
||||||
import GHC.TypeLits
|
|
||||||
|
|
||||||
-- | The contained API (second argument) can be found under @("/" ++ path)@
|
-- | The contained API (second argument) can be found under @("/" ++ path)@
|
||||||
-- (path being the first argument).
|
-- (path being the first argument).
|
||||||
|
|
|
@ -6,11 +6,11 @@ module Servant.Common.Text
|
||||||
, ToText(..)
|
, ToText(..)
|
||||||
) where
|
) where
|
||||||
|
|
||||||
import Data.String.Conversions
|
import Data.String.Conversions ( cs )
|
||||||
import Data.Int
|
import Data.Int ( Int8, Int16, Int32, Int64 )
|
||||||
import Data.Text
|
import Data.Text ( Text )
|
||||||
import Data.Text.Read
|
import Data.Text.Read ( rational, signed, decimal, Reader )
|
||||||
import Data.Word
|
import Data.Word ( Word, Word8, Word16, Word32, Word64 )
|
||||||
|
|
||||||
-- | For getting values from url captures and query string parameters
|
-- | For getting values from url captures and query string parameters
|
||||||
class FromText a where
|
class FromText a where
|
||||||
|
|
|
@ -28,21 +28,39 @@
|
||||||
-- Note the @/@ before a @QueryParam@!
|
-- Note the @/@ before a @QueryParam@!
|
||||||
module Servant.QQ (sitemap) where
|
module Servant.QQ (sitemap) where
|
||||||
|
|
||||||
import Control.Monad (void)
|
import Control.Monad ( void )
|
||||||
import Control.Applicative hiding (many, (<|>), optional)
|
import Control.Applicative ( (<$>) )
|
||||||
import Language.Haskell.TH.Quote
|
import Language.Haskell.TH.Quote ( QuasiQuoter(..) )
|
||||||
import Language.Haskell.TH
|
import Language.Haskell.TH
|
||||||
|
( mkName, Type(AppT, ConT, LitT), TyLit(StrTyLit) )
|
||||||
import Text.ParserCombinators.Parsec
|
import Text.ParserCombinators.Parsec
|
||||||
|
( try,
|
||||||
import Servant.API.Capture
|
Parser,
|
||||||
import Servant.API.Get
|
manyTill,
|
||||||
import Servant.API.Post
|
endBy,
|
||||||
import Servant.API.Put
|
sepBy1,
|
||||||
import Servant.API.Delete
|
optional,
|
||||||
import Servant.API.QueryParam
|
optionMaybe,
|
||||||
import Servant.API.ReqBody
|
string,
|
||||||
import Servant.API.Sub
|
anyChar,
|
||||||
import Servant.API.Alternative
|
char,
|
||||||
|
spaces,
|
||||||
|
noneOf,
|
||||||
|
parse,
|
||||||
|
skipMany,
|
||||||
|
many,
|
||||||
|
lookAhead,
|
||||||
|
(<|>),
|
||||||
|
(<?>) )
|
||||||
|
import Servant.API.Capture ( Capture )
|
||||||
|
import Servant.API.Get ( Get )
|
||||||
|
import Servant.API.Post ( Post )
|
||||||
|
import Servant.API.Put ( Put )
|
||||||
|
import Servant.API.Delete ( Delete )
|
||||||
|
import Servant.API.QueryParam ( QueryParam )
|
||||||
|
import Servant.API.ReqBody ( ReqBody )
|
||||||
|
import Servant.API.Sub ( (:>) )
|
||||||
|
import Servant.API.Alternative ( (:<|>) )
|
||||||
|
|
||||||
-- | Finally-tagless encoding for our DSL.
|
-- | Finally-tagless encoding for our DSL.
|
||||||
-- Keeping 'repr'' and 'repr' distinct when writing functions with an
|
-- Keeping 'repr'' and 'repr' distinct when writing functions with an
|
||||||
|
@ -195,4 +213,3 @@ sitemap = QuasiQuoter { quoteExp = undefined
|
||||||
Right st -> return st
|
Right st -> return st
|
||||||
, quoteDec = undefined
|
, quoteDec = undefined
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -48,18 +48,18 @@ module Servant.Utils.Links (
|
||||||
, IsLink
|
, IsLink
|
||||||
)where
|
)where
|
||||||
|
|
||||||
import Data.Proxy
|
import Data.Proxy ( Proxy(..) )
|
||||||
import GHC.TypeLits
|
import GHC.TypeLits ( KnownSymbol, Symbol, symbolVal )
|
||||||
|
|
||||||
import Servant.API.Capture
|
import Servant.API.Capture ( Capture )
|
||||||
import Servant.API.ReqBody
|
import Servant.API.ReqBody ( ReqBody )
|
||||||
import Servant.API.QueryParam
|
import Servant.API.QueryParam ( QueryParam )
|
||||||
import Servant.API.Get
|
import Servant.API.Get ( Get )
|
||||||
import Servant.API.Post
|
import Servant.API.Post ( Post )
|
||||||
import Servant.API.Put
|
import Servant.API.Put ( Put )
|
||||||
import Servant.API.Delete
|
import Servant.API.Delete ( Delete )
|
||||||
import Servant.API.Sub
|
import Servant.API.Sub ( type (:>) )
|
||||||
import Servant.API.Alternative
|
import Servant.API.Alternative ( type (:<|>) )
|
||||||
|
|
||||||
|
|
||||||
type family Or a b where
|
type family Or a b where
|
||||||
|
@ -123,4 +123,3 @@ instance VLinkHelper (Get x) where
|
||||||
|
|
||||||
instance VLinkHelper (Post x) where
|
instance VLinkHelper (Post x) where
|
||||||
vlh _ = ""
|
vlh _ = ""
|
||||||
|
|
||||||
|
|
|
@ -9,9 +9,18 @@
|
||||||
{-# LANGUAGE UndecidableInstances #-}
|
{-# LANGUAGE UndecidableInstances #-}
|
||||||
module Servant.QQSpec where
|
module Servant.QQSpec where
|
||||||
|
|
||||||
import Test.Hspec
|
import Test.Hspec ( Expectation, Spec, shouldBe, it, describe )
|
||||||
|
|
||||||
import Servant.API
|
import Servant.API
|
||||||
|
( (:<|>),
|
||||||
|
ReqBody,
|
||||||
|
QueryParam,
|
||||||
|
Put,
|
||||||
|
Get,
|
||||||
|
Post,
|
||||||
|
Capture,
|
||||||
|
(:>),
|
||||||
|
sitemap )
|
||||||
|
|
||||||
--------------------------------------------------------------------------
|
--------------------------------------------------------------------------
|
||||||
-- Types for testing
|
-- Types for testing
|
||||||
|
|
|
@ -3,11 +3,13 @@
|
||||||
{-# LANGUAGE TypeOperators #-}
|
{-# LANGUAGE TypeOperators #-}
|
||||||
module Servant.Utils.LinksSpec where
|
module Servant.Utils.LinksSpec where
|
||||||
|
|
||||||
import Test.Hspec
|
import Test.Hspec ( Spec, it, describe )
|
||||||
|
|
||||||
import Servant.API
|
import Servant.API
|
||||||
|
( type (:<|>), ReqBody, QueryParam, Get, Post, Capture, type (:>) )
|
||||||
import Servant.QQSpec ( (~>) )
|
import Servant.QQSpec ( (~>) )
|
||||||
import Servant.Utils.Links (IsElem, IsLink)
|
import Servant.Utils.Links ( IsElem, IsLink )
|
||||||
|
|
||||||
|
|
||||||
type TestApi =
|
type TestApi =
|
||||||
"hello" :> Capture "name" String :> QueryParam "capital" Bool :> Get Bool
|
"hello" :> Capture "name" String :> QueryParam "capital" Bool :> Get Bool
|
||||||
|
@ -49,4 +51,3 @@ isLink = describe "IsLink" $ do
|
||||||
it "is False of anything with captures" $ do
|
it "is False of anything with captures" $ do
|
||||||
reflected (Proxy::Proxy (IsLink NotALink)) ~> False
|
reflected (Proxy::Proxy (IsLink NotALink)) ~> False
|
||||||
reflected (Proxy::Proxy (IsLink NotALink2)) ~> False
|
reflected (Proxy::Proxy (IsLink NotALink2)) ~> False
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue