Compare commits
No commits in common. "master" and "jswt" have entirely different histories.
7 changed files with 29 additions and 54 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -12,5 +12,3 @@ report.html
|
||||||
*.save*
|
*.save*
|
||||||
.envrc
|
.envrc
|
||||||
.direnv/
|
.direnv/
|
||||||
.hie/
|
|
||||||
stan.html
|
|
||||||
|
|
25
app/Main.hs
25
app/Main.hs
|
@ -11,37 +11,27 @@ module Main where
|
||||||
import Prelude as P
|
import Prelude as P
|
||||||
|
|
||||||
import Crypto.JWT hiding (Context, header)
|
import Crypto.JWT hiding (Context, header)
|
||||||
|
import Crypto.JOSE.JWK hiding (Context)
|
||||||
|
|
||||||
import Control.Concurrent.STM.TVar
|
|
||||||
import Control.Concurrent.STM (newTQueueIO)
|
import Control.Concurrent.STM (newTQueueIO)
|
||||||
import Control.Concurrent (forkIO)
|
import Control.Concurrent (forkIO)
|
||||||
|
|
||||||
import Control.Lens hiding (Context)
|
|
||||||
|
|
||||||
import Control.Monad (void, unless)
|
|
||||||
|
|
||||||
import Control.Monad.Reader
|
|
||||||
|
|
||||||
import Servant
|
import Servant
|
||||||
import Servant.Server.Experimental.Auth
|
import Servant.Server.Experimental.Auth
|
||||||
import qualified Servant.OpenApi as OA
|
import qualified Servant.OpenApi as OA
|
||||||
import Servant.Swagger.UI
|
import Servant.Swagger.UI
|
||||||
import Servant.RawM.Server
|
import Servant.RawM
|
||||||
|
|
||||||
|
import qualified Data.Aeson as A
|
||||||
|
|
||||||
import Data.Set as S (empty)
|
import Data.Set as S (empty)
|
||||||
|
|
||||||
import qualified Data.ByteString.Lazy as B
|
import qualified Data.ByteString.Lazy as B
|
||||||
import Data.ByteString.Char8 as B8 hiding (putStrLn)
|
import Data.ByteString.Char8 as B8 hiding (putStrLn)
|
||||||
|
|
||||||
import qualified Data.Text as T
|
import qualified Data.Text as T
|
||||||
import qualified Data.Text.Encoding as TE
|
import qualified Data.Text.Encoding as TE
|
||||||
|
|
||||||
import Data.String
|
import Data.String
|
||||||
|
|
||||||
import Data.Yaml
|
import Data.Yaml
|
||||||
|
|
||||||
import Data.Version (showVersion)
|
import Data.Version (showVersion)
|
||||||
|
|
||||||
import qualified Data.OpenApi as OA hiding (Server)
|
import qualified Data.OpenApi as OA hiding (Server)
|
||||||
|
|
||||||
import Database.PostgreSQL.Simple
|
import Database.PostgreSQL.Simple
|
||||||
|
@ -52,6 +42,12 @@ import Network.Wai
|
||||||
import Network.Wai.Logger
|
import Network.Wai.Logger
|
||||||
import Network.Wai.Handler.Warp
|
import Network.Wai.Handler.Warp
|
||||||
|
|
||||||
|
import Control.Monad.Reader
|
||||||
|
|
||||||
|
import Control.Concurrent.STM.TVar
|
||||||
|
|
||||||
|
import Control.Lens hiding (Context)
|
||||||
|
|
||||||
import Options.Applicative
|
import Options.Applicative
|
||||||
|
|
||||||
import System.Clock (TimeSpec(..))
|
import System.Clock (TimeSpec(..))
|
||||||
|
@ -153,6 +149,7 @@ main = do
|
||||||
, rsJWTSecret =
|
, rsJWTSecret =
|
||||||
fromOctets . B.fromStrict $ TE.encodeUtf8 jwt_secret
|
fromOctets . B.fromStrict $ TE.encodeUtf8 jwt_secret
|
||||||
}
|
}
|
||||||
|
expirationSpec = TimeSpec 5 0 -- five seconds
|
||||||
runSettings settings (app initState)
|
runSettings settings (app initState)
|
||||||
where
|
where
|
||||||
opts = info (options <**> helper)
|
opts = info (options <**> helper)
|
||||||
|
|
12
flake.lock
12
flake.lock
|
@ -5,11 +5,11 @@
|
||||||
"systems": "systems"
|
"systems": "systems"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1710146030,
|
"lastModified": 1705309234,
|
||||||
"narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
|
"narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=",
|
||||||
"owner": "numtide",
|
"owner": "numtide",
|
||||||
"repo": "flake-utils",
|
"repo": "flake-utils",
|
||||||
"rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
|
"rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -20,11 +20,11 @@
|
||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1725059563,
|
"lastModified": 1709116111,
|
||||||
"narHash": "sha256-laJvLHrSU5M9zWlejH7H67HdpLhcUI6uPDa4rX7eUuE=",
|
"narHash": "sha256-V7BbC39cGDOzJsCsmg+hCdBu1Tuhqs7kLcPxw86STh4=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "0abfc619bcb605299a0f3f01c1887bb65db61a6b",
|
"rev": "b84d9f029fa675d5ef312f032f322889149daa82",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
|
@ -72,22 +72,10 @@ library
|
||||||
|
|
||||||
-- Modules included in this library but not exported.
|
-- Modules included in this library but not exported.
|
||||||
-- other-modules:
|
-- other-modules:
|
||||||
default-extensions:
|
|
||||||
StrictData
|
|
||||||
other-extensions:
|
other-extensions:
|
||||||
DataKinds
|
DataKinds TypeOperators FlexibleInstances MultiParamTypeClasses
|
||||||
TypeOperators
|
RankNTypes ScopedTypeVariables FlexibleContexts OverloadedStrings
|
||||||
FlexibleInstances
|
Arrows CPP LambdaCase DeriveGeneric TypeFamilies
|
||||||
MultiParamTypeClasses
|
|
||||||
RankNTypes
|
|
||||||
ScopedTypeVariables
|
|
||||||
FlexibleContexts
|
|
||||||
OverloadedStrings
|
|
||||||
Arrows
|
|
||||||
CPP
|
|
||||||
LambdaCase
|
|
||||||
DeriveGeneric
|
|
||||||
TypeFamilies
|
|
||||||
TypeSynonymInstances
|
TypeSynonymInstances
|
||||||
|
|
||||||
build-depends:
|
build-depends:
|
||||||
|
@ -105,6 +93,7 @@ library
|
||||||
, servant
|
, servant
|
||||||
, servant-server
|
, servant-server
|
||||||
, servant-openapi3
|
, servant-openapi3
|
||||||
|
, servant-rawm >= 0.3.0.0
|
||||||
, servant-rawm-server
|
, servant-rawm-server
|
||||||
, opaleye
|
, opaleye
|
||||||
, aeson
|
, aeson
|
||||||
|
@ -122,14 +111,12 @@ library
|
||||||
, haskell-gettext
|
, haskell-gettext
|
||||||
, mime-mail
|
, mime-mail
|
||||||
, directory
|
, directory
|
||||||
, jose >= 0.10
|
, jose
|
||||||
, monad-time
|
, monad-time
|
||||||
|
|
||||||
hs-source-dirs: src
|
hs-source-dirs: src
|
||||||
default-language: Haskell2010
|
default-language: Haskell2010
|
||||||
ghc-options: -Wall
|
ghc-options: -Wall
|
||||||
-fwrite-ide-info
|
|
||||||
-hiedir=.hie
|
|
||||||
|
|
||||||
executable mateamt
|
executable mateamt
|
||||||
main-is: Main.hs
|
main-is: Main.hs
|
||||||
|
@ -140,8 +127,6 @@ executable mateamt
|
||||||
AppTypes.Configuration
|
AppTypes.Configuration
|
||||||
Janitor
|
Janitor
|
||||||
Paths_mateamt
|
Paths_mateamt
|
||||||
default-extensions:
|
|
||||||
StrictData
|
|
||||||
other-extensions:
|
other-extensions:
|
||||||
DataKinds TypeOperators FlexibleInstances MultiParamTypeClasses
|
DataKinds TypeOperators FlexibleInstances MultiParamTypeClasses
|
||||||
RankNTypes ScopedTypeVariables FlexibleContexts OverloadedStrings
|
RankNTypes ScopedTypeVariables FlexibleContexts OverloadedStrings
|
||||||
|
@ -166,7 +151,7 @@ executable mateamt
|
||||||
, network
|
, network
|
||||||
, servant
|
, servant
|
||||||
, servant-server
|
, servant-server
|
||||||
, servant-rawm-server
|
, servant-rawm
|
||||||
, servant-openapi3
|
, servant-openapi3
|
||||||
, servant-swagger-ui
|
, servant-swagger-ui
|
||||||
, servant-swagger-ui-core
|
, servant-swagger-ui-core
|
||||||
|
@ -185,8 +170,6 @@ executable mateamt
|
||||||
hs-source-dirs: app
|
hs-source-dirs: app
|
||||||
default-language: Haskell2010
|
default-language: Haskell2010
|
||||||
ghc-options: -Wall
|
ghc-options: -Wall
|
||||||
-fwrite-ide-info
|
|
||||||
-hiedir=.hie
|
|
||||||
|
|
||||||
-- test-suite mateamt-test
|
-- test-suite mateamt-test
|
||||||
-- default-language: Haskell2010
|
-- default-language: Haskell2010
|
||||||
|
|
11
src/API.hs
11
src/API.hs
|
@ -13,7 +13,8 @@ import Servant.Server
|
||||||
|
|
||||||
import Data.Proxy
|
import Data.Proxy
|
||||||
|
|
||||||
import Servant.RawM.Server
|
import Servant.RawM
|
||||||
|
import Servant.RawM.Server ()
|
||||||
|
|
||||||
-- internal imports
|
-- internal imports
|
||||||
|
|
||||||
|
@ -123,7 +124,7 @@ journalShowLink :: Maybe Int -> Maybe Int -> Link
|
||||||
journalPostCheck :: Link
|
journalPostCheck :: Link
|
||||||
|
|
||||||
avatarGetLink :: Int -> Link
|
avatarGetLink :: Int -> Link
|
||||||
avatarInsertLink :: Link
|
avaterInsertLink :: Link
|
||||||
avatarUpdateLink :: Int -> Link
|
avatarUpdateLink :: Int -> Link
|
||||||
avatarListLink :: Link
|
avatarListLink :: Link
|
||||||
|
|
||||||
|
@ -136,7 +137,7 @@ roleAssociationSubmitLink :: Link
|
||||||
roleAssociationDeleteLink :: Link
|
roleAssociationDeleteLink :: Link
|
||||||
|
|
||||||
settingsGetLink :: Link
|
settingsGetLink :: Link
|
||||||
settingsUpdateLink :: Link
|
settingsUpdateLnk :: Link
|
||||||
|
|
||||||
metaGetLink :: Link
|
metaGetLink :: Link
|
||||||
|
|
||||||
|
@ -167,7 +168,7 @@ metaGetLink :: Link
|
||||||
journalPostCheck :<|>
|
journalPostCheck :<|>
|
||||||
|
|
||||||
avatarGetLink :<|>
|
avatarGetLink :<|>
|
||||||
avatarInsertLink :<|>
|
avaterInsertLink :<|>
|
||||||
avatarUpdateLink :<|>
|
avatarUpdateLink :<|>
|
||||||
avatarListLink :<|>
|
avatarListLink :<|>
|
||||||
|
|
||||||
|
@ -180,7 +181,7 @@ metaGetLink :: Link
|
||||||
roleAssociationDeleteLink :<|>
|
roleAssociationDeleteLink :<|>
|
||||||
|
|
||||||
settingsGetLink :<|>
|
settingsGetLink :<|>
|
||||||
settingsUpdateLink :<|>
|
settingsUpdateLnk :<|>
|
||||||
|
|
||||||
metaGetLink
|
metaGetLink
|
||||||
) = allLinks (Proxy :: Proxy MateAPI)
|
) = allLinks (Proxy :: Proxy MateAPI)
|
||||||
|
|
|
@ -11,10 +11,8 @@ metaGet :: MateHandler MetaInformation
|
||||||
metaGet = do
|
metaGet = do
|
||||||
symbol <- asks rsCurrencySymbol
|
symbol <- asks rsCurrencySymbol
|
||||||
version <- asks rsSoftwareVersion
|
version <- asks rsSoftwareVersion
|
||||||
decimals <- asks rsCurrencyFraction
|
|
||||||
return (MetaInformation
|
return (MetaInformation
|
||||||
{ metaInfoVersion = version
|
{ metaInfoVersion = version
|
||||||
, metaInfoCurrency = symbol
|
, metaInfoCurrency = symbol
|
||||||
, metaInfoDecimals = fromIntegral decimals
|
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
|
@ -1,8 +1,6 @@
|
||||||
{-# LANGUAGE OverloadedStrings #-}
|
{-# LANGUAGE OverloadedStrings #-}
|
||||||
module Control.Settings where
|
module Control.Settings where
|
||||||
|
|
||||||
import Control.Monad (void, unless)
|
|
||||||
|
|
||||||
import Control.Monad.Reader
|
import Control.Monad.Reader
|
||||||
|
|
||||||
import Servant
|
import Servant
|
||||||
|
|
Loading…
Reference in a new issue