snap-core-1.0.4.0/ 0000755 0000000 0000000 00000000000 13424413616 011733 5 ustar 00 0000000 0000000 snap-core-1.0.4.0/snap-core.cabal 0000644 0000000 0000000 00000022041 13424413616 014605 0 ustar 00 0000000 0000000 name: snap-core
version: 1.0.4.0
synopsis: Snap: A Haskell Web Framework (core interfaces and types)
description:
Snap is a simple and fast web development framework and server written in
Haskell. For more information or to download the latest version, you can
visit the Snap project website at .
.
This library contains the core definitions and types for the Snap framework,
including:
.
1. Primitive types and functions for HTTP (requests, responses, cookies,
post/query parameters, etc)
.
2. A monad for programming web handlers called \"Snap\", which allows:
.
* Stateful access to the HTTP request and response objects
.
* Monadic failure (i.e. MonadPlus/Alternative instances) for declining
to handle requests and chaining handlers together
.
* Early termination of the computation if you know early what you want
to return and want to prevent further monadic processing
.
/Quick start/: The 'Snap' monad and HTTP definitions are in "Snap.Core".
license: BSD3
license-file: LICENSE
author: Snap Framework Authors (see CONTRIBUTORS)
maintainer: snap@snapframework.com
build-type: Simple
cabal-version: >= 1.10
homepage: http://snapframework.com/
bug-reports: https://github.com/snapframework/snap-core/issues
category: Web, Snap, IO-Streams
Tested-With: GHC == 7.4.2, GHC == 7.6.3, GHC == 7.8.4, GHC == 7.10.3,
GHC == 8.0.2, GHC == 8.2.2, GHC == 8.4.4, GHC == 8.6.3
extra-source-files:
test/TestSuite.hs,
cbits/timefuncs.c,
CONTRIBUTORS,
extra/haddock.css,
extra/hscolour.css,
extra/logo.gif,
haddock.sh,
LICENSE,
README.md,
README.SNAP.md,
Setup.hs,
runTestsAndCoverage.sh,
test/data/fileServe/foo.bin,
test/data/fileServe/foo.bin.bin.bin,
test/data/fileServe/foo.html,
test/data/fileServe/foo.txt,
test/data/fileServe/mydir1/index.txt,
test/data/fileServe/mydir2/dir/foo.txt,
test/data/fileServe/mydir2/foo.txt,
test/data/fileServe/mydir3/altindex.html,
test/Snap/Core/Tests.hs,
test/Snap/Internal/Http/Types/Tests.hs,
test/Snap/Internal/Parsing/Tests.hs,
test/Snap/Internal/Routing/Tests.hs,
test/Snap/Test/Common.hs,
test/Snap/Types/Headers/Tests.hs,
test/Snap/Util/FileServe/Tests.hs,
test/Snap/Util/FileUploads/Tests.hs,
test/Snap/Util/GZip/Tests.hs,
test/Snap/Util/Proxy/Tests.hs
Flag portable
Description: Compile in cross-platform mode. No platform-specific code or
optimizations such as C routines will be used.
Default: False
Flag debug
Description: Enable debug logging code. With this flag, Snap will
test the DEBUG environment variable to decide whether to do
logging, and this introduces a tiny amount of overhead
(a call into a function pointer) because the calls to 'debug'
cannot be inlined.
Default: False
Flag network-uri
Description: Get Network.URI from the network-uri package
Default: True
Library
Default-language: Haskell2010
hs-source-dirs: src
if !flag(debug)
cpp-options: -DNODEBUG
if flag(portable) || os(windows)
cpp-options: -DPORTABLE
build-depends: time-locale-compat == 0.1.*
else
c-sources: cbits/timefuncs.c
include-dirs: cbits
build-depends: old-locale >= 1 && <2
exposed-modules:
Snap.Core,
Snap.Internal.Core,
Snap.Internal.Debug,
Snap.Internal.Http.Types,
Snap.Internal.Parsing,
Snap.Test,
Snap.Types.Headers,
Snap.Util.CORS,
Snap.Util.FileServe,
Snap.Util.FileUploads,
Snap.Util.GZip,
Snap.Util.Proxy
other-modules:
Snap.Internal.Instances,
Snap.Internal.Routing,
Snap.Internal.Test.RequestBuilder,
Snap.Internal.Test.Assertions,
Snap.Internal.Util.FileServe,
Snap.Internal.Util.FileUploads
build-depends:
HUnit >= 1.2 && < 2,
attoparsec >= 0.12 && < 0.14,
base >= 4 && < 5,
bytestring >= 0.9 && < 0.11,
bytestring-builder >= 0.10.4 && < 0.11,
case-insensitive >= 1.1 && < 1.3,
containers >= 0.3 && < 1.0,
directory >= 1 && < 2,
filepath >= 1.1 && < 2.0,
lifted-base >= 0.1 && < 0.3,
io-streams >= 1.3 && < 1.6,
hashable >= 1.2.0.6 && < 1.3,
monad-control >= 1.0 && < 1.1,
mtl >= 2.0 && < 2.3,
random >= 1 && < 2,
readable >= 0.1 && < 0.4,
regex-posix >= 0.95 && < 1,
text >= 0.11 && < 1.3,
time >= 1.0 && < 1.10,
transformers >= 0.3 && < 0.6,
transformers-base >= 0.4 && < 0.5,
unix-compat >= 0.3 && < 0.6,
unordered-containers >= 0.1.4.3 && < 0.3,
vector >= 0.6 && < 0.13
other-extensions:
BangPatterns,
CPP,
DeriveDataTypeable,
EmptyDataDecls,
ExistentialQuantification,
FlexibleContexts,
FlexibleInstances,
ForeignFunctionInterface,
GeneralizedNewtypeDeriving,
MultiParamTypeClasses,
OverloadedStrings,
OverloadedStrings,
PackageImports,
Rank2Types,
ScopedTypeVariables,
TypeSynonymInstances
if impl(ghc >= 6.12.0)
ghc-options: -Wall -fwarn-tabs -fno-warn-unused-do-bind
else
ghc-options: -Wall -fwarn-tabs
-- See https://ghc.haskell.org/trac/ghc/wiki/Migration/8.0#base-4.9.0.0
if impl(ghc >= 8.0)
ghc-options: -Wcompat -Wnoncanonical-monad-instances -Wnoncanonical-monadfail-instances
else
build-depends: fail == 4.9.*, semigroups == 0.18.*
if flag(network-uri)
build-depends: network-uri >= 2.6 && < 2.7,
network >= 2.6 && < 3.1
else
build-depends: network-uri >= 2.5 && < 2.6,
network >= 2.3 && < 2.6
Test-suite testsuite
hs-source-dirs: src test
Type: exitcode-stdio-1.0
Main-is: TestSuite.hs
Default-language: Haskell2010
if flag(portable) || os(windows)
cpp-options: -DPORTABLE
build-depends: time-locale-compat == 0.1.*
else
c-sources: cbits/timefuncs.c
include-dirs: cbits
build-depends: old-locale >= 1 && <2
other-modules:
Snap.Core,
Snap.Internal.Debug,
Snap.Internal.Http.Types,
Snap.Internal.Parsing,
Snap.Test,
Snap.Types.Headers,
Snap.Util.CORS,
Snap.Util.FileServe,
Snap.Util.FileUploads,
Snap.Util.GZip,
Snap.Util.Proxy,
Snap.Internal.Core,
Snap.Internal.Instances,
Snap.Internal.Routing,
Snap.Internal.Test.RequestBuilder,
Snap.Internal.Test.Assertions,
Snap.Internal.Util.FileServe,
Snap.Internal.Util.FileUploads,
--------------------------------------------------------------------------
Snap.Core.Tests,
Snap.Internal.Http.Types.Tests,
Snap.Internal.Parsing.Tests,
Snap.Internal.Routing.Tests,
Snap.Test.Common,
Snap.Test.Tests,
Snap.Types.Headers.Tests,
Snap.Util.CORS.Tests,
Snap.Util.FileServe.Tests,
Snap.Util.FileUploads.Tests,
Snap.Util.GZip.Tests,
Snap.Util.Proxy.Tests
build-depends:
HUnit,
attoparsec,
base,
bytestring,
bytestring-builder,
case-insensitive,
containers,
directory,
filepath,
hashable,
lifted-base,
io-streams,
monad-control,
mtl,
random,
readable,
regex-posix,
text,
time,
transformers,
transformers-base,
unix-compat,
unordered-containers,
vector,
--------------------------------------------------------------------------
QuickCheck >= 2.3.0.2 && <3,
deepseq >= 1.1 && < 1.5,
parallel >= 3 && <4,
test-framework >= 0.8.0.3 && <0.9,
test-framework-hunit >= 0.2.7 && <0.4,
test-framework-quickcheck2 >= 0.2.12.1 && <0.4,
zlib >= 0.5 && <0.7
if flag(network-uri)
build-depends: network-uri,
network
else
build-depends: network-uri,
network
ghc-options: -Wall -fwarn-tabs -funbox-strict-fields -threaded
-fno-warn-unused-do-bind
-- See https://ghc.haskell.org/trac/ghc/wiki/Migration/8.0#base-4.9.0.0
if impl(ghc >= 8.0)
ghc-options: -Wcompat -Wnoncanonical-monad-instances -Wnoncanonical-monadfail-instances
else
build-depends: fail == 4.9.*, semigroups == 0.18.*
other-extensions:
BangPatterns,
CPP,
DeriveDataTypeable,
EmptyDataDecls,
ExistentialQuantification,
FlexibleContexts,
FlexibleInstances,
ForeignFunctionInterface,
GeneralizedNewtypeDeriving,
MagicHash,
MultiParamTypeClasses,
OverloadedStrings,
Rank2Types,
ScopedTypeVariables,
StandaloneDeriving,
TypeFamilies,
TypeSynonymInstances
source-repository head
type: git
location: git://github.com/snapframework/snap-core.git
snap-core-1.0.4.0/README.md 0000644 0000000 0000000 00000003437 13424413616 013221 0 ustar 00 0000000 0000000 Snap Framework Core
===================
[](https://travis-ci.org/snapframework/snap-core)
Snap is a web framework for Haskell. For more information about Snap, read the
`README.SNAP.md` or visit the Snap project website at
http://www.snapframework.com/.
## Library contents
This is the `snap-core` library, which contains:
* primitive types and functions for HTTP (requests, responses, cookies,
post/query parameters, etc).
* a "Snap" monad interface for programming web handlers, which allows:
* stateful access to the HTTP request and response objects.
* monadic failure (i.e. MonadPlus/Alternative instances) for declining to
handle requests and chaining handlers together.
* early termination of the computation if you know early what you want to
return and want to prevent further monadic processing.
* useful utilities for web handlers, like file serving and gzip/zlib
compression.
Building snap-core
===================
The snap-core library is built using [Cabal](http://www.haskell.org/cabal/) and
[Hackage](http://hackage.haskell.org/packages/hackage.html). Just run
cabal install
from the `snap-core` toplevel directory.
## Building the Haddock Documentation
The haddock documentation can be built using the supplied `haddock.sh` shell
script:
./haddock.sh
The docs get put in `dist/doc/html/`.
## Building the testsuite
Snap aims for 100% test coverage, and we're trying hard to stick to that.
To build the test suite, configure with --enable-tests:
$ cabal configure --enable-tests
$ cabal build
From here you can invoke the testsuite by running:
$ ./runTestsAndCoverage.sh
The testsuite generates an `hpc` test coverage report in `dist/hpc`.
snap-core-1.0.4.0/haddock.sh 0000755 0000000 0000000 00000000446 13424413616 013673 0 ustar 00 0000000 0000000 #!/bin/sh
set -x
rm -Rf dist/doc
HADDOCK_OPTS='--html-location=http://hackage.haskell.org/packages/archive/$pkg/latest/doc/html'
cabal haddock $HADDOCK_OPTS --hyperlink-source $@
cp extra/logo.gif dist/doc/html/snap-core/haskell_icon.gif
cp extra/hscolour.css dist/doc/html/snap-core/src/
snap-core-1.0.4.0/Setup.hs 0000644 0000000 0000000 00000000057 13424413616 013371 0 ustar 00 0000000 0000000 import Distribution.Simple
main = defaultMain
snap-core-1.0.4.0/LICENSE 0000644 0000000 0000000 00000003006 13424413616 012737 0 ustar 00 0000000 0000000 Copyright (c) 2009, Snap Framework authors (see CONTRIBUTORS)
Copyright (c) 2010, Google, Inc.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
Redistributions in binary form must reproduce the above copyright notice, this
list of conditions and the following disclaimer in the documentation and/or
other materials provided with the distribution.
Neither the name of the Snap Framework authors nor the names of its
contributors may be used to endorse or promote products derived from this
software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
snap-core-1.0.4.0/runTestsAndCoverage.sh 0000755 0000000 0000000 00000002333 13424413616 016221 0 ustar 00 0000000 0000000 #!/bin/sh
set -e
export LC_ALL=C
export LANG=C
rm -f testsuite.tix
# TODO How do we find the executable without knowing the version number in dist-newstyle?
./dist-newstyle/build/snap-core-1.0.0.0/build/testsuite/testsuite -j4 -a1000 $*
DIR="./dist-newstyle/hpc"
rm -Rf $DIR
mkdir -p $DIR
mkdir -p out
# NOTE
# Snap.Internal.Util.FileUploads shouldn't be in the excludes list. This is a
# temporary workaround so we can release.
EXCLUDES='Main
Snap.Core.Tests
Snap.Internal.Debug
Snap.Internal.Http.Parser.Tests
Snap.Internal.Http.Server.Tests
Snap.Internal.Http.Types.Tests
Snap.Internal.Parsing.Tests
Snap.Internal.Routing.Tests
Snap.Internal.Test.Assertions
Snap.Internal.Test.RequestBuilder
Snap.Internal.Util.FileUploads
Snap.Test
Snap.Test.Common
Snap.Test.Tests
Snap.Types.Tests
Snap.Types.Headers.Tests
Snap.Util.FileServe.Tests
Snap.Util.FileUploads.Tests
Snap.Util.GZip.Tests
Snap.Util.Proxy.Tests
Snap.Util.Readable.Tests
Text.Snap.Templates.Tests'
EXCL=""
for m in $EXCLUDES; do
EXCL="$EXCL --exclude=$m"
done
hpc markup $EXCL --destdir=$DIR testsuite
rm -f testsuite.tix
#TODO only copy hpc results if this script is called from deploy_hpc.sh
cp -r $DIR out/
cat <