git.iko.soy/typeable/random-token
on d405065 help sign in
2 files changed+102−116
since splitsnapshots
unifiedsplit
random-token.cabal+99−106 src/Random/Token.hs+3−10
random-token.cabal+99−106
@@ -1,111 +1,104 @@
1−cabal-version: 2.4
2−name: random-token
3−version: 0.1.0.0
4−synopsis: Implementation of random token generation and parsing
5−author: typeable.io
6−maintainer: s9gf4ult@gmail.com
7−license-file: LICENSE
8−category: Web
9−build-type: Simple
1+cabal-version: 2.4
2+name: random-token
3+version: 0.1.0.0
4+synopsis: Implementation of random token generation and parsing
5+author: typeable.io
6+maintainer: s9gf4ult@gmail.com
7+license-file: LICENSE
8+category: Web
9+build-type: Simple
1010
1111library
12− hs-source-dirs: src
13− ghc-options: -Wall
14− exposed-modules: Random.Token
15− build-depends:
16− , aeson
17− , base >=4.9 && <5
18− , base64-bytestring
19− , bytestring >=0.10
20− , deepseq
21− , http-api-data
22− , QuickCheck
23− , text
24−
25− if !(impl(ghcjs) || arch(javascript) || arch(wasm32))
26− build-depends:
27− , cryptonite
28− , postgresql-simple
29−
30− default-language: Haskell2010
31− default-extensions:
32− CPP
33− ConstraintKinds
34− DataKinds
35− DeriveFoldable
36− DeriveFunctor
37− DeriveGeneric
38− DeriveTraversable
39− DuplicateRecordFields
40− FlexibleContexts
41− FlexibleInstances
42− FunctionalDependencies
43− GADTs
44− GeneralizedNewtypeDeriving
45− LambdaCase
46− MultiParamTypeClasses
47− MultiWayIf
48− NumDecimals
49− OverloadedStrings
50− PolyKinds
51− QuasiQuotes
52− RankNTypes
53− RecordWildCards
54− RoleAnnotations
55− ScopedTypeVariables
56− StandaloneDeriving
57− TemplateHaskell
58− TupleSections
59− TypeApplications
60− TypeFamilies
61− TypeOperators
62− UndecidableInstances
63− ViewPatterns
12+ hs-source-dirs: src
13+ ghc-options: -Wall
14+ exposed-modules: Random.Token
15+ build-depends: base >= 4.7 && < 5
16+ , QuickCheck
17+ , aeson
18+ , base64-bytestring
19+ , bytestring
20+ , cryptonite
21+ , deepseq
22+ , http-api-data
23+ , text
24+ if !impl(ghcjs)
25+ build-depends: postgresql-simple
26+ default-language: Haskell2010
27+ default-extensions: CPP
28+ , ConstraintKinds
29+ , DataKinds
30+ , DeriveFoldable
31+ , DeriveFunctor
32+ , DeriveGeneric
33+ , DeriveTraversable
34+ , DuplicateRecordFields
35+ , FlexibleContexts
36+ , FlexibleInstances
37+ , FunctionalDependencies
38+ , GADTs
39+ , GeneralizedNewtypeDeriving
40+ , LambdaCase
41+ , MultiParamTypeClasses
42+ , MultiWayIf
43+ , NumDecimals
44+ , OverloadedStrings
45+ , PolyKinds
46+ , QuasiQuotes
47+ , RankNTypes
48+ , RecordWildCards
49+ , RoleAnnotations
50+ , ScopedTypeVariables
51+ , StandaloneDeriving
52+ , TemplateHaskell
53+ , TupleSections
54+ , TypeApplications
55+ , TypeFamilies
56+ , TypeOperators
57+ , UndecidableInstances
58+ , ViewPatterns
6459
6560test-suite spec
66− type: exitcode-stdio-1.0
67− hs-source-dirs: spec
68− main-is: Test.hs
69− other-modules: TokenSpec
70− default-language: Haskell2010
71− build-depends:
72− , base >=4.10 && <5
73− , hspec
74− , random-token
75−
61+ type: exitcode-stdio-1.0
62+ hs-source-dirs: spec
63+ main-is: Test.hs
64+ other-modules: TokenSpec
65+ default-language: Haskell2010
66+ build-depends: base >= 4.10 && <4.13
67+ , hspec
68+ , random-token
7669 build-tool-depends: hspec-discover:hspec-discover
77− ghc-options:
78− -Wall -threaded -rtsopts "-with-rtsopts=-N -A64m -qb0 -n4m -T -I1"
79−
80− ghc-prof-options: -fprof-auto
81− default-extensions:
82− ConstraintKinds
83− DataKinds
84− DeriveFoldable
85− DeriveFunctor
86− DeriveGeneric
87− DeriveTraversable
88− DuplicateRecordFields
89− FlexibleContexts
90− FlexibleInstances
91− FunctionalDependencies
92− GADTs
93− GeneralizedNewtypeDeriving
94− LambdaCase
95− MultiParamTypeClasses
96− MultiWayIf
97− NumDecimals
98− OverloadedStrings
99− PolyKinds
100− QuasiQuotes
101− RankNTypes
102− RecordWildCards
103− ScopedTypeVariables
104− StandaloneDeriving
105− TemplateHaskell
106− TupleSections
107− TypeApplications
108− TypeFamilies
109− TypeOperators
110− UndecidableInstances
111− ViewPatterns
70+ ghc-options: -Wall
71+ -threaded
72+ -rtsopts
73+ "-with-rtsopts=-N -A64m -qb0 -n4m -T -I1"
74+ ghc-prof-options: -fprof-auto
75+ default-extensions: ConstraintKinds
76+ , DataKinds
77+ , DeriveFoldable
78+ , DeriveFunctor
79+ , DeriveGeneric
80+ , DeriveTraversable
81+ , DuplicateRecordFields
82+ , FlexibleContexts
83+ , FlexibleInstances
84+ , FunctionalDependencies
85+ , GADTs
86+ , GeneralizedNewtypeDeriving
87+ , LambdaCase
88+ , MultiParamTypeClasses
89+ , MultiWayIf
90+ , NumDecimals
91+ , OverloadedStrings
92+ , PolyKinds
93+ , QuasiQuotes
94+ , RankNTypes
95+ , RecordWildCards
96+ , ScopedTypeVariables
97+ , StandaloneDeriving
98+ , TemplateHaskell
99+ , TupleSections
100+ , TypeApplications
101+ , TypeFamilies
102+ , TypeOperators
103+ , UndecidableInstances
104+ , ViewPatterns
src/Random/Token.hs+3−10
@@ -5,11 +5,8 @@ module Random.Token
55 , tokenToText
66 , asciiToToken
77 , textToToken
8− , unsafeCoerceToken
9− , tokenWithContents
10−#ifndef ghcjs_HOST_OS
118 , generateToken
12−#endif
9+ , unsafeCoerceToken
1310 ) where
1411
1512import Control.DeepSeq
@@ -24,9 +21,9 @@ import Data.Typeable
2421import Test.QuickCheck.Arbitrary
2522import Web.HttpApiData
2623
24+import Crypto.Random as R
2725
2826#ifndef ghcjs_HOST_OS
29−import Crypto.Random as R
3027import Database.PostgreSQL.Simple.FromField
3128import Database.PostgreSQL.Simple.ToField
3229#endif
@@ -56,12 +53,11 @@ instance forall a. (Typeable (Token a), Typeable a) => FromField (Token a) where
5653
5754instance ToField (Token a) where
5855 toField = toField . tokenToText
56+#endif
5957
6058generateToken :: (MonadRandom m) => m (Token a)
6159generateToken = Token <$> R.getRandomBytes 16
6260
63−#endif
64−
6561instance FromHttpApiData (Token a) where
6662 parseQueryParam = first T.pack . textToToken
6763
@@ -80,8 +76,5 @@ asciiToToken bs = Token <$> B64.decode bs
8076textToToken :: Text -> Either String (Token a)
8177textToToken = asciiToToken . T.encodeUtf8
8278
83−tokenWithContents :: Text -> Token a
84−tokenWithContents = Token . T.encodeUtf8
85−
8679unsafeCoerceToken :: Token a -> Token b
8780unsafeCoerceToken (Token a) = Token a