packages feed

apiary-0.13.0: apiary.cabal

name:                apiary
version:             0.13.0
synopsis:            Simple and type safe web framework that can be automatically generate API documentation.
description:
  Simple and type safe web framework that can be automatically generate API documentation.
  .
  @
  {-# LANGUAGE QuasiQuotes #-}
  {-# LANGUAGE OverloadedStrings #-}
  .
  import Web.Apiary
  import Network.Wai.Handler.Warp
  import qualified Data.ByteString.Lazy.Char8 as L
  .
  main :: IO ()
  main = run 3000 . runApiary def $ do
    [capture|/:Int|] . ("name" =: pLazyByteString) . stdMethod GET . action $ \\age name -> do
        guard (age >= 18)
        contentType "text/html"
        lbs . L.concat $ ["<h1>Hello, ", name, "!</h1>\\n"]
  @
  .
  @
  $ curl localhost:3000
  404 Page Notfound.
  $ curl 'localhost:3000/20?name=arice'
  <h1>Hello, arice!</h1>
  $ curl 'localhost:3000/15?name=bob'
  404 Page Notfound.
  $ curl -XPOST 'localhost:3000/20?name=arice'
  404 Page Notfound.
  @
  .
    * Nestable route handling(Apiary Monad; capture, stdMethod and more.).
  .
    * type safe route filter.
  .
    * auto generate API documentation(example: <https://github.com/philopon/apiary/blob/v0.13.0/examples/api.hs>, <https://rawgit.com/philopon/apiary/v0.13.0/examples/api.html>).
  .
  more examples: <https://github.com/philopon/apiary/blob/v0.13.0/examples/>

license:             MIT
license-file:        LICENSE
author:              HirotomoMoriwaki<philopon.dependence@gmail.com>
maintainer:          HirotomoMoriwaki<philopon.dependence@gmail.com>
Homepage:            https://github.com/philopon/apiary
Bug-reports:         https://github.com/philopon/apiary/issues
copyright:           (c) 2014 Hirotomo Moriwaki
category:            Web
build-type:          Simple
stability:           experimental
extra-source-files:  static/api-documentation.min.js
                   , static/jquery.cookie-1.4.1.min.js
                   , static/api-documentation.min.css
                   , static/jquery-2.1.1.min.js
                   , static/bootstrap.min.css
                   , static/bootstrap.min.js
                   , CHANGELOG.md
cabal-version:       >=1.10

flag wai3
  description: use wai-3.0
  default: True

library
  exposed-modules:     Web.Apiary
                       Web.Apiary.Wai

                       Control.Monad.Apiary
                       Control.Monad.Apiary.Filter
                       Control.Monad.Apiary.Filter.Internal
                       Control.Monad.Apiary.Filter.Internal.Strategy
                       Control.Monad.Apiary.Action

                       Data.Apiary.SList
                       Data.Apiary.Param
                       Data.Apiary.Document

  other-modules:       Control.Monad.Apiary.Internal
                       Control.Monad.Apiary.Action.Internal
                       Control.Monad.Apiary.Filter.Internal.Capture
                       Control.Monad.Apiary.Filter.Internal.Capture.TH
                       Web.Apiary.TH
  other-extensions:    KindSignatures
                     , DataKinds
                     , TypeOperators
                     , GADTs
                     , TypeFamilies

                     , Rank2Types
                       
  build-depends:       base                 >=4.6   && <4.8
                     , template-haskell     >=2.8   && <2.10
                     , mtl                  >=2.1   && <2.3
                     , monad-control        >=0.3   && <0.4
                     , transformers-base    >=0.4   && <0.5

                     , text                 >=1.1   && <1.2
                     , bytestring           >=0.10  && <0.11
                     , blaze-builder        >=0.3   && <0.4
                     , data-default-class   >=0.0   && <0.1
                     , reflection           >=1.4   && <1.6

                     , http-types           >=0.8   && <0.9
                     , mime-types           >=0.1   && <0.2
                     , exceptions           >=0.6   && <0.7
                     , blaze-html           >=0.7   && <0.8
                     , blaze-markup         >=0.6   && <0.7
                     , case-insensitive     >=1.2   && <1.3

  if impl(ghc < 7.8)
    build-depends:     tagged               >=0.7   && <0.8

  if flag(wai3)
    build-depends:     wai                  >=3.0   && <3.1
                     , wai-extra            >=3.0   && <3.1
    cpp-options:       -DWAI3
  else
    build-depends:     wai                  >=2.1   && <2.2
                     , wai-extra            >=2.1   && <2.2
                     , conduit              >=1.1   && <1.2

  hs-source-dirs:      src
  ghc-options:         -O2 -Wall
  default-language:    Haskell2010

test-suite test-framework
  main-is:             main.hs
  type:                exitcode-stdio-1.0
  build-depends:       base                 >=4.6   && <4.8
                     , test-framework       >=0.8   && <0.9
                     , test-framework-hunit >=0.3   && <0.4
                     , apiary
                     , bytestring           >=0.10  && <0.11
                     , http-types           >=0.8   && <0.9
  if flag(wai3)
    build-depends:     wai                  >=3.0   && <3.1
                     , wai-extra            >=3.0   && <3.1
  else
    build-depends:     wai                  >=2.1   && <2.2
                     , wai-test             >=2.0   && <2.1

  hs-source-dirs:      test
  ghc-options:         -O2 -Wall -fno-warn-missing-signatures
  default-language:    Haskell2010

source-repository head
  type:     git
  location: git://github.com/philopon/apiary.git