conferer-snap 0.2.0.0 → 0.3.0.0
raw patch · 3 files changed
+75/−69 lines, 3 filesdep ~confererPVP ok
version bump matches the API change (PVP)
Dependency ranges changed: conferer
API changes (from Hackage documentation)
- Conferer.FetchFromConfig.Snap: instance (Conferer.Types.FetchFromConfig a, Snap.Internal.Core.MonadSnap m) => Conferer.Types.FetchFromConfig (Snap.Internal.Http.Server.Config.Config m a)
- Conferer.FetchFromConfig.Snap: instance Conferer.Types.FetchFromConfig Snap.Internal.Http.Server.Config.ConfigLog
- Conferer.FetchFromConfig.Snap: instance Snap.Internal.Core.MonadSnap m => Conferer.Types.DefaultConfig (Snap.Internal.Http.Server.Config.Config m a)
+ Conferer.FromConfig.Snap: instance (Data.Typeable.Internal.Typeable m, Conferer.Types.FromConfig a, Snap.Internal.Core.MonadSnap m) => Conferer.Types.FromConfig (Snap.Internal.Http.Server.Config.Config m a)
+ Conferer.FromConfig.Snap: instance (Snap.Internal.Core.MonadSnap m, Conferer.Types.DefaultConfig a) => Conferer.Types.DefaultConfig (Snap.Internal.Http.Server.Config.Config m a)
+ Conferer.FromConfig.Snap: instance Conferer.Types.FromConfig Snap.Internal.Http.Server.Config.ConfigLog
Files
- conferer-snap.cabal +6/−6
- src/Conferer/FetchFromConfig/Snap.hs +0/−63
- src/Conferer/FromConfig/Snap.hs +69/−0
conferer-snap.cabal view
@@ -4,10 +4,10 @@ -- -- see: https://github.com/sol/hpack ----- hash: c3fb3465cdfcdbd877ac1a90998917be21c2be3174c9e635942c41abe78ea795+-- hash: a9417ee6e2d363834a082603cf8246196ad028d600b5f5d544451b6fe8d0b838 name: conferer-snap-version: 0.2.0.0+version: 0.3.0.0 synopsis: conferer's FromConfig instances for snap Config description: Library to abstract the parsing of many haskell config values from different config sources@@ -25,7 +25,7 @@ library exposed-modules:- Conferer.FetchFromConfig.Snap+ Conferer.FromConfig.Snap other-modules: Paths_conferer_snap hs-source-dirs:@@ -33,13 +33,13 @@ default-extensions: OverloadedStrings LambdaCase QuasiQuotes ScopedTypeVariables build-depends: base >=4.3 && <5- , conferer >=0.2.0.0 && <0.3.0.0+ , conferer >=0.3.0.0 && <0.4.0.0 , snap-core >=1.0 && <2.0 , snap-server >=1.0 && <2.0 , text >=1.1 && <1.3 default-language: Haskell2010 -test-suite conferer-snap-test+test-suite specs type: exitcode-stdio-1.0 main-is: Spec.hs other-modules:@@ -49,7 +49,7 @@ default-extensions: OverloadedStrings LambdaCase QuasiQuotes ScopedTypeVariables build-depends: base >=4.3 && <5- , conferer >=0.2.0.0 && <0.3.0.0+ , conferer >=0.3.0.0 && <0.4.0.0 , conferer-snap , hspec , snap-core >=1.0 && <2.0
− src/Conferer/FetchFromConfig/Snap.hs
@@ -1,63 +0,0 @@-module Conferer.FetchFromConfig.Snap- (- -- * How to use this- -- | FetchFromConfig instance for snap server configuration- --- -- @- -- import Conferer- -- import Conferer.FetchFromConfig.Snap ()- --- -- main = do- -- config <- 'defaultConfig' \"awesomeapp\"- -- snapConfig <- 'getFromConfig' \"snap\" config- -- @- --- -- * Internal utility functions- -- | These may be useful for someone but are subject to change at any point so- -- use with care- ) where--import Conferer.Core-import Conferer.Types-import Conferer.FetchFromConfig.Basics--import Data.Either (rights)-import Data.String (fromString)-import Data.Text (Text, unpack)--import qualified Snap.Http.Server.Config as Snap-import qualified Snap.Core as Snap--instance FetchFromConfig Snap.ConfigLog where- fetch k config = do- getKey k config- >>= \case- Just "NoLog" -> return $ Just $ Snap.ConfigNoLog- Just t -> return $ Just $ Snap.ConfigFileLog $ unpack t- Nothing -> return $ Nothing--instance (Snap.MonadSnap m) => DefaultConfig (Snap.Config m a) where- configDef = Snap.defaultConfig--instance (FetchFromConfig a, Snap.MonadSnap m) => FetchFromConfig (Snap.Config m a) where- fetch k config = do- pure (configDef)- >>= findKeyAndApplyConfig config k "default-timeout" Snap.setDefaultTimeout- >>= findKeyAndApplyConfig config k "access-log" Snap.setAccessLog- >>= findKeyAndApplyConfig config k "bind" Snap.setBind- >>= findKeyAndApplyConfig config k "compression" Snap.setCompression- >>= findKeyAndApplyConfig config k "error-log" Snap.setErrorLog- >>= findKeyAndApplyConfig config k "hostname" Snap.setHostname- >>= findKeyAndApplyConfig config k "locale" Snap.setLocale- >>= findKeyAndApplyConfig config k "other" Snap.setOther- >>= findKeyAndApplyConfig config k "port" Snap.setPort- -- >>= findKeyAndApplyConfig config k "proxy-type" Snap.setProxyType- >>= findKeyAndApplyConfig config k "ssl-bind" Snap.setSSLBind- >>= findKeyAndApplyConfig config k "ssl-cert" Snap.setSSLCert- >>= findKeyAndApplyConfig config k "ssl-key" Snap.setSSLKey- >>= findKeyAndApplyConfig config k "ssl-chain-cert" Snap.setSSLChainCert- >>= findKeyAndApplyConfig config k "ssl-port" Snap.setSSLPort- >>= findKeyAndApplyConfig config k "verbose" Snap.setVerbose- >>= findKeyAndApplyConfig config k "unix-socket" Snap.setUnixSocket- >>= findKeyAndApplyConfig config k "unix-socket-access-mode" Snap.setUnixSocketAccessMode- >>= (return . return)
+ src/Conferer/FromConfig/Snap.hs view
@@ -0,0 +1,69 @@+module Conferer.FromConfig.Snap+ (+ -- * How to use this+ -- | FromConfig instance for snap server configuration+ --+ -- @+ -- import Conferer+ -- import Conferer.FromConfig.Snap ()+ --+ -- main = do+ -- config <- 'defaultConfig' \"awesomeapp\"+ -- snapConfig <- 'getFromConfig' \"snap\" config+ -- @+ --+ -- * Internal utility functions+ -- | These may be useful for someone but are subject to change at any point so+ -- use with care+ ) where++import Conferer.Core+import Conferer.Types+import Conferer.FromConfig.Basics++import Data.Either (rights)+import Data.String (fromString)+import Data.Text (Text, unpack)+import Data.Typeable++import qualified Snap.Http.Server.Config as Snap+import qualified Snap.Core as Snap++instance FromConfig Snap.ConfigLog where+ updateFromConfig = updateAllAtOnceUsingFetch+ fetchFromConfig k config = do+ getKey k config+ >>= \case+ Just "NoLog" -> return $ Just $ Snap.ConfigNoLog+ Just t -> return $ Just $ Snap.ConfigFileLog $ unpack t+ Nothing -> return $ Nothing++instance (Snap.MonadSnap m, DefaultConfig a) => DefaultConfig (Snap.Config m a) where+ configDef = Snap.defaultConfig++withMaybe f (Just a) c = f a c+withMaybe f (Nothing) c = c++instance forall a m. (Typeable m, FromConfig a, Snap.MonadSnap m) => FromConfig (Snap.Config m a) where+ fetchFromConfig k config = return Nothing+ updateFromConfig k config snapConfig = do+ pure snapConfig+ >>= findKeyAndApplyConfig config k "defaultTimeout" Snap.getDefaultTimeout (withMaybe Snap.setDefaultTimeout)+ >>= findKeyAndApplyConfig config k "accessLog" Snap.getAccessLog (withMaybe Snap.setAccessLog)+ >>= findKeyAndApplyConfig config k "bind" Snap.getBind (withMaybe Snap.setBind)+ >>= findKeyAndApplyConfig config k "compression" Snap.getCompression (withMaybe Snap.setCompression)+ >>= findKeyAndApplyConfig config k "errorLog" Snap.getErrorLog (withMaybe Snap.setErrorLog)+ >>= findKeyAndApplyConfig config k "hostname" Snap.getHostname (withMaybe Snap.setHostname)+ >>= findKeyAndApplyConfig config k "locale" Snap.getLocale (withMaybe Snap.setLocale)+ >>= findKeyAndApplyConfig config k "port" Snap.getPort (withMaybe Snap.setPort)+ -- >>= findKeyAndApplyConfig config k "proxy-type" (withMaybe Snap.setProxyType)+ >>= findKeyAndApplyConfig config k "sslBind" Snap.getSSLBind (withMaybe Snap.setSSLBind)+ >>= findKeyAndApplyConfig config k "sslCert" Snap.getSSLCert (withMaybe Snap.setSSLCert)+ >>= findKeyAndApplyConfig config k "sslKey" Snap.getSSLKey (withMaybe Snap.setSSLKey)+ >>= findKeyAndApplyConfig config k "sslChain-cert" Snap.getSSLChainCert (withMaybe Snap.setSSLChainCert)+ >>= findKeyAndApplyConfig config k "sslPort" Snap.getSSLPort (withMaybe Snap.setSSLPort)+ >>= findKeyAndApplyConfig config k "verbose" Snap.getVerbose (withMaybe Snap.setVerbose)+ >>= findKeyAndApplyConfig config k "unixSocket" Snap.getUnixSocket (withMaybe Snap.setUnixSocket)+ >>= findKeyAndApplyConfig config k "unixSocketAccessMode" Snap.getUnixSocketAccessMode (withMaybe Snap.setUnixSocketAccessMode)+ >>= findKeyAndApplyConfig config k "other" Snap.getOther (withMaybe Snap.setOther)+ >>= return