git.iko.soy/typeable/random-token
on master help sign in
reduce js dependencies
7cdd6d7odr
random-token.cabal+3−2
@@ -17,12 +17,13 @@ library
17 , aeson
17 , aeson
18 , base64-bytestring
18 , base64-bytestring
19 , bytestring
19 , bytestring
20− , cryptonite
21 , deepseq
20 , deepseq
22 , http-api-data
21 , http-api-data
23 , text
22 , text
24 if !(impl(ghcjs) || arch(javascript))
23 if !(impl(ghcjs) || arch(javascript))
24+ build-depends: cryptonite
25− build-depends: postgresql-simple
25+ , postgresql-simple
26+ ,
26 default-language: Haskell2010
27 default-language: Haskell2010
27 default-extensions: CPP
28 default-extensions: CPP
28 , ConstraintKinds
29 , ConstraintKinds
src/Random/Token.hs+6−3
@@ -5,9 +5,11 @@ module Random.Token
5 , tokenToText
5 , tokenToText
6 , asciiToToken
6 , asciiToToken
7 , textToToken
7 , textToToken
8− , generateToken
9 , unsafeCoerceToken
8 , unsafeCoerceToken
10 , tokenWithContents
9 , tokenWithContents
10+#ifndef ghcjs_HOST_OS
11+ , generateToken
12+#endif
11 ) where
13 ) where
12
14
13import Control.DeepSeq
15import Control.DeepSeq
@@ -22,9 +24,9 @@ import Data.Typeable
22import Test.QuickCheck.Arbitrary
24import Test.QuickCheck.Arbitrary
23import Web.HttpApiData
25import Web.HttpApiData
24
26
25−import Crypto.Random as R
26
27
27#ifndef ghcjs_HOST_OS
28#ifndef ghcjs_HOST_OS
29+import Crypto.Random as R
28import Database.PostgreSQL.Simple.FromField
30import Database.PostgreSQL.Simple.FromField
29import Database.PostgreSQL.Simple.ToField
31import Database.PostgreSQL.Simple.ToField
30#endif
32#endif
@@ -54,11 +56,12 @@ instance forall a. (Typeable (Token a), Typeable a) => FromField (Token a) where
54
56
55instance ToField (Token a) where
57instance ToField (Token a) where
56 toField = toField . tokenToText
58 toField = toField . tokenToText
57−#endif
58
59
59generateToken :: (MonadRandom m) => m (Token a)
60generateToken :: (MonadRandom m) => m (Token a)
60generateToken = Token <$> R.getRandomBytes 16
61generateToken = Token <$> R.getRandomBytes 16
61
62
63+#endif
64+
62instance FromHttpApiData (Token a) where
65instance FromHttpApiData (Token a) where
63 parseQueryParam = first T.pack . textToToken
66 parseQueryParam = first T.pack . textToToken
64
67