mirror of
https://github.com/jhillyerd/inbucket.git
synced 2025-12-18 18:17:03 +00:00
ui: Display server configuration on status page
This commit is contained in:
107
ui/src/Data/ServerConfig.elm
Normal file
107
ui/src/Data/ServerConfig.elm
Normal file
@@ -0,0 +1,107 @@
|
||||
module Data.ServerConfig exposing (ServerConfig, decoder, encode)
|
||||
|
||||
import Json.Decode as D
|
||||
import Json.Decode.Pipeline as P
|
||||
import Json.Encode as E
|
||||
|
||||
|
||||
|
||||
-- Generated by https://github.com/jhillyerd/go-to-elm-json
|
||||
|
||||
|
||||
type alias ServerConfig =
|
||||
{ version : String
|
||||
, buildDate : String
|
||||
, pop3Listener : String
|
||||
, webListener : String
|
||||
, smtpConfig : SmtpConfig
|
||||
, storageConfig : StorageConfig
|
||||
}
|
||||
|
||||
|
||||
type alias SmtpConfig =
|
||||
{ addr : String
|
||||
, defaultAccept : Bool
|
||||
, acceptDomains : Maybe (List String)
|
||||
, rejectDomains : Maybe (List String)
|
||||
, defaultStore : Bool
|
||||
, storeDomains : Maybe (List String)
|
||||
, discardDomains : Maybe (List String)
|
||||
}
|
||||
|
||||
|
||||
type alias StorageConfig =
|
||||
{ mailboxMsgCap : Int
|
||||
, storeType : String
|
||||
, retentionPeriod : String
|
||||
}
|
||||
|
||||
|
||||
decoder : D.Decoder ServerConfig
|
||||
decoder =
|
||||
D.succeed ServerConfig
|
||||
|> P.required "version" D.string
|
||||
|> P.required "build-date" D.string
|
||||
|> P.required "pop3-listener" D.string
|
||||
|> P.required "web-listener" D.string
|
||||
|> P.required "smtp-config" smtpConfigDecoder
|
||||
|> P.required "storage-config" storageConfigDecoder
|
||||
|
||||
|
||||
encode : ServerConfig -> E.Value
|
||||
encode r =
|
||||
E.object
|
||||
[ ( "version", E.string r.version )
|
||||
, ( "build-date", E.string r.buildDate )
|
||||
, ( "pop3-listener", E.string r.pop3Listener )
|
||||
, ( "web-listener", E.string r.webListener )
|
||||
, ( "smtp-config", encodeSmtpConfig r.smtpConfig )
|
||||
, ( "storage-config", encodeStorageConfig r.storageConfig )
|
||||
]
|
||||
|
||||
|
||||
smtpConfigDecoder : D.Decoder SmtpConfig
|
||||
smtpConfigDecoder =
|
||||
D.succeed SmtpConfig
|
||||
|> P.required "addr" D.string
|
||||
|> P.required "default-accept" D.bool
|
||||
|> P.required "accept-domains" (D.nullable (D.list D.string))
|
||||
|> P.required "reject-domains" (D.nullable (D.list D.string))
|
||||
|> P.required "default-store" D.bool
|
||||
|> P.required "store-domains" (D.nullable (D.list D.string))
|
||||
|> P.required "discard-domains" (D.nullable (D.list D.string))
|
||||
|
||||
|
||||
encodeSmtpConfig : SmtpConfig -> E.Value
|
||||
encodeSmtpConfig r =
|
||||
E.object
|
||||
[ ( "addr", E.string r.addr )
|
||||
, ( "default-accept", E.bool r.defaultAccept )
|
||||
, ( "accept-domains", maybe (E.list E.string) r.acceptDomains )
|
||||
, ( "reject-domains", maybe (E.list E.string) r.rejectDomains )
|
||||
, ( "default-store", E.bool r.defaultStore )
|
||||
, ( "store-domains", maybe (E.list E.string) r.storeDomains )
|
||||
, ( "discard-domains", maybe (E.list E.string) r.discardDomains )
|
||||
]
|
||||
|
||||
|
||||
storageConfigDecoder : D.Decoder StorageConfig
|
||||
storageConfigDecoder =
|
||||
D.succeed StorageConfig
|
||||
|> P.required "mailbox-msg-cap" D.int
|
||||
|> P.required "store-type" D.string
|
||||
|> P.required "retention-period" D.string
|
||||
|
||||
|
||||
encodeStorageConfig : StorageConfig -> E.Value
|
||||
encodeStorageConfig r =
|
||||
E.object
|
||||
[ ( "mailbox-msg-cap", E.int r.mailboxMsgCap )
|
||||
, ( "store-type", E.string r.storeType )
|
||||
, ( "retention-period", E.string r.retentionPeriod )
|
||||
]
|
||||
|
||||
|
||||
maybe : (a -> E.Value) -> Maybe a -> E.Value
|
||||
maybe encoder =
|
||||
Maybe.map encoder >> Maybe.withDefault E.null
|
||||
Reference in New Issue
Block a user