avers-server 0.0.17.0 → 0.0.17.2
raw patch · 3 files changed
+58/−57 lines, 3 filesdep ~aesondep ~base64-bytestringdep ~bytestringPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependency ranges changed: aeson, base64-bytestring, bytestring, bytestring-conversion, containers, cookie, cryptonite, either, http-types, memory, mtl, resource-pool, rethinkdb-client-driver, servant, servant-server, stm, text, time, transformers, wai, wai-websockets, websockets
API changes (from Hackage documentation)
- Avers.Server: credentialsObjId :: Handle -> Credentials -> ExceptT ServantErr IO ObjId
+ Avers.Server: credentialsObjId :: Handle -> Credentials -> Handler ObjId
- Avers.Server: runAuthorization :: Handle -> Authz -> ExceptT ServantErr IO ()
+ Avers.Server: runAuthorization :: Handle -> Authz -> Handler ()
Files
- avers-server.cabal +51/−50
- src/Avers/Server.hs +6/−6
- src/Avers/Server/Authorization.hs +1/−1
avers-server.cabal view
@@ -1,55 +1,56 @@-name: avers-server-version: 0.0.17.0-cabal-version: >=1.10-build-type: Simple-license: MIT-license-file: LICENSE-copyright: 2016 Tomas Carnecky-maintainer: tomas.carnecky@gmail.com-homepage: http://github.com/wereHamster/avers-server-synopsis: Server implementation of the Avers API-description:- See README.md-category: Avers-author: Tomas Carnecky+name: avers-server+version: 0.0.17.2+synopsis: Server implementation of the Avers API+description: See README.md+homepage: http://github.com/wereHamster/avers-server+license: MIT+license-file: LICENSE+author: Tomas Carnecky+maintainer: tomas.carnecky@gmail.com+copyright: 2016 Tomas Carnecky+category: Avers+build-type: Simple+cabal-version: >=1.10 source-repository head- type: git- location: https://github.com/wereHamster/avers-server+ type: git+ location: https://github.com/wereHamster/avers library- exposed-modules:- Avers.Server- build-depends:- base >=4.7 && <5,- aeson >=1.0.2.0 && <1.1,- avers -any,- avers-api -any,- base64-bytestring >=1.0.0.1 && <1.1,- bytestring >=0.10.8.1 && <0.11,- bytestring-conversion >=0.3.1 && <0.4,- containers >=0.5.7.1 && <0.6,- cookie >=0.4.2.1 && <0.5,- cryptonite ==0.20.*,- either >=4.4.1.1 && <4.5,- http-types >=0.9.1 && <0.10,- memory ==0.13.*,- mtl >=2.2.1 && <2.3,- resource-pool >=0.2.3.2 && <0.3,- rethinkdb-client-driver >=0.0.23 && <0.1,- servant >=0.9.0.1 && <0.10,- servant-server >=0.9.0.1 && <0.10,- stm >=2.4.4.1 && <2.5,- text >=1.2.2.1 && <1.3,- time >=1.6.0.1 && <1.7,- transformers >=0.5.2.0 && <0.6,- wai >=3.2.1.1 && <3.3,- wai-websockets >=3.0.1.1 && <3.1,- websockets >=0.9.7.0 && <0.10- default-language: Haskell2010- hs-source-dirs: src- other-modules:- Avers.Server.Authorization- Avers.Server.Instances- ghc-options: -Wall+ default-language: Haskell2010+ hs-source-dirs: src+ ghc-options: -Wall + exposed-modules:+ Avers.Server++ other-modules:+ Avers.Server.Authorization+ , Avers.Server.Instances++ build-depends:+ base >= 4.7 && < 5+ , aeson+ , avers+ , avers-api+ , base64-bytestring+ , bytestring+ , bytestring-conversion+ , containers+ , cookie+ , cryptonite+ , either+ , http-types+ , memory+ , mtl+ , resource-pool+ , rethinkdb-client-driver+ , servant+ , servant-server+ , stm+ , text+ , time+ , transformers+ , wai+ , wai-websockets+ , websockets
src/Avers/Server.hs view
@@ -65,7 +65,7 @@ -- | Convert the 'Credentials' into an 'ObjId' to which the ceredentials refer. -- That's the object the client is authenticated as.-credentialsObjId :: Handle -> Credentials -> ExceptT ServantErr IO ObjId+credentialsObjId :: Handle -> Credentials -> Handler ObjId credentialsObjId aversH cred = do errOrObjId <- case cred of SessionIdCredential sId -> liftIO $ evalAvers aversH $@@ -76,12 +76,12 @@ Right s -> pure s -failWith :: Text -> ExceptT ServantErr IO b+failWith :: Text -> Handler b failWith e = throwError $ err500 { errBody = LBS.fromChunks [T.encodeUtf8 e] } -aversResult :: Either AversError a -> ExceptT ServantErr IO a+aversResult :: Either AversError a -> Handler a aversResult res = case res of Left e -> case e of DatabaseError detail -> failWith $ "database " <> detail@@ -96,11 +96,11 @@ Right r -> pure r -reqAvers :: Handle -> Avers a -> ExceptT ServantErr IO a+reqAvers :: Handle -> Avers a -> Handler a reqAvers aversH m = liftIO (evalAvers aversH m) >>= aversResult -cacheableResponse :: (ToJSON a) => Maybe Text -> a -> ExceptT ServantErr IO (Cacheable a)+cacheableResponse :: (ToJSON a) => Maybe Text -> a -> Handler (Cacheable a) cacheableResponse mbValidationToken a = do let etag = T.decodeUtf8 $ convertToBase Base64 $ (hashlazy (encode a) :: Digest SHA3_256) if mbValidationToken == Just (etagVersion <> ":" <> etag)@@ -302,7 +302,7 @@ sessionCookieName = "session" sessionExpirationTime = 2 * 365 * 24 * 60 * 60 - mkSetCookie :: SessionId -> ExceptT ServantErr IO SetCookie+ mkSetCookie :: SessionId -> Handler SetCookie mkSetCookie sId = do now <- liftIO $ getCurrentTime pure $ def
src/Avers/Server/Authorization.hs view
@@ -92,7 +92,7 @@ -------------------------------------------------------------------------------- -- | Run the authorization logic inside of the Servant monad. -runAuthorization :: Handle -> Authz -> ExceptT ServantErr IO ()+runAuthorization :: Handle -> Authz -> Handler () runAuthorization _ [] = pure () runAuthorization aversH (x:xs) = do res <- liftIO $ evalAvers aversH x