| Safe Haskell | None |
|---|---|
| Language | GHC2024 |
Arbiter.Servant.Server
Contents
Description
Servant server implementation for the Arbiter job queue REST API.
Hard-coded to use the SimpleDb backend from arbiter-simple.
Security: This module provides no built-in authentication or authorization. All endpoints (including job deletion, DLQ management, and cron schedule updates) are publicly accessible. Add your own auth middleware before exposing this to untrusted networks.
Synopsis
- arbiterServer :: forall (registry :: [(Symbol, Type)]). BuildServer registry registry => ArbiterServerConfig registry -> ServerT (ArbiterAPI registry) Handler
- arbiterApp :: forall (registry :: [(Symbol, Type)]). (BuildServer registry registry, HasServer (ArbiterAPI registry) ('[] :: [Type])) => ArbiterServerConfig registry -> Application
- runArbiterAPI :: forall (registry :: [(Symbol, Type)]). (BuildServer registry registry, HasServer (ArbiterAPI registry) ('[] :: [Type])) => Port -> ArbiterServerConfig registry -> IO ()
- data ArbiterServerConfig (registry :: k) = ArbiterServerConfig {}
- initArbiterServer :: forall (registry :: JobPayloadRegistry). AllQueuesUnique registry => Proxy registry -> ByteString -> Text -> IO (ArbiterServerConfig registry)
- class BuildServer (registry :: k) (reg :: [(Symbol, Type)]) where
- buildServer :: ArbiterServerConfig registry -> ServerT (RegistryToAPI reg) Handler
Server handlers
arbiterServer :: forall (registry :: [(Symbol, Type)]). BuildServer registry registry => ArbiterServerConfig registry -> ServerT (ArbiterAPI registry) Handler Source #
Complete Arbiter server at /api/v1/...
arbiterApp :: forall (registry :: [(Symbol, Type)]). (BuildServer registry registry, HasServer (ArbiterAPI registry) ('[] :: [Type])) => ArbiterServerConfig registry -> Application Source #
Convert to WAI Application
runArbiterAPI :: forall (registry :: [(Symbol, Type)]). (BuildServer registry registry, HasServer (ArbiterAPI registry) ('[] :: [Type])) => Port -> ArbiterServerConfig registry -> IO () Source #
Run the API server on a specific port.
Uses setTimeout 0 (no idle timeout) so that SSE streaming connections
are not killed by Warp.
data ArbiterServerConfig (registry :: k) Source #
Configuration for the API server
Constructors
| ArbiterServerConfig | |
Fields | |
initArbiterServer :: forall (registry :: JobPayloadRegistry). AllQueuesUnique registry => Proxy registry -> ByteString -> Text -> IO (ArbiterServerConfig registry) Source #
Create an ArbiterServerConfig with its own internal connection pool.
Note: Use runMigrationsForRegistry with
enableEventStreaming = True to set up the database triggers for SSE.
class BuildServer (registry :: k) (reg :: [(Symbol, Type)]) where Source #
Type class to build server implementations for registry entries
Methods
buildServer :: ArbiterServerConfig registry -> ServerT (RegistryToAPI reg) Handler Source #
Instances
| RegistryTables registry => BuildServer (registry :: JobPayloadRegistry) ('[] :: [(Symbol, Type)]) Source # | |
Defined in Arbiter.Servant.Server Methods buildServer :: ArbiterServerConfig registry -> ServerT (RegistryToAPI ('[] :: [(Symbol, Type)])) Handler Source # | |
| (JobPayload payload, KnownSymbol tableName, RegistryTables registry) => BuildServer (registry :: JobPayloadRegistry) '['(tableName, payload)] Source # | |
Defined in Arbiter.Servant.Server Methods buildServer :: ArbiterServerConfig registry -> ServerT (RegistryToAPI '['(tableName, payload)]) Handler Source # | |
| (BuildServer registry (nextTable ': moreRest), JobPayload payload, KnownSymbol tableName) => BuildServer (registry :: k) ('(tableName, payload) ': (nextTable ': moreRest)) Source # | |
Defined in Arbiter.Servant.Server Methods buildServer :: ArbiterServerConfig registry -> ServerT (RegistryToAPI ('(tableName, payload) ': (nextTable ': moreRest))) Handler Source # | |