| Safe Haskell | None |
|---|---|
| Language | GHC2024 |
Arbiter.Servant.Server
Contents
Description
REST API server for the Arbiter job queue (SimpleDb backend).
Security: No built-in authentication. All endpoints are publicly accessible. Add auth middleware before exposing to untrusted networks.
Synopsis
- arbiterServer :: forall (registry :: JobPayloadRegistry). BuildServer registry registry => ArbiterServerConfig registry -> ServerT (ArbiterAPI registry) Handler
- arbiterServerHoisted :: forall (registry :: JobPayloadRegistry) m. (BuildServer registry registry, HasServer (ArbiterAPI registry) ('[] :: [Type])) => (forall x. Handler x -> m x) -> ArbiterServerConfig registry -> ServerT (ArbiterAPI registry) m
- arbiterApp :: forall (registry :: JobPayloadRegistry). (BuildServer registry registry, HasServer (ArbiterAPI registry) ('[] :: [Type])) => ArbiterServerConfig registry -> Application
- runArbiterAPI :: forall (registry :: JobPayloadRegistry). (BuildServer registry registry, HasServer (ArbiterAPI registry) ('[] :: [Type])) => Port -> ArbiterServerConfig registry -> IO ()
- data ArbiterServerConfig (registry :: JobPayloadRegistry) = ArbiterServerConfig {}
- initArbiterServer :: forall (registry :: JobPayloadRegistry). Proxy registry -> ByteString -> Text -> IO (ArbiterServerConfig registry)
- class BuildServer (registry :: JobPayloadRegistry) (reg :: [(Symbol, Type)]) where
- buildServer :: ArbiterServerConfig registry -> ServerT (RegistryToAPI reg) Handler
Server handlers
arbiterServer :: forall (registry :: JobPayloadRegistry). BuildServer registry registry => ArbiterServerConfig registry -> ServerT (ArbiterAPI registry) Handler Source #
Complete Arbiter server at /api/v1/...
arbiterServerHoisted :: forall (registry :: JobPayloadRegistry) m. (BuildServer registry registry, HasServer (ArbiterAPI registry) ('[] :: [Type])) => (forall x. Handler x -> m x) -> ArbiterServerConfig registry -> ServerT (ArbiterAPI registry) m Source #
Hoisted server for integration into a route tree using a custom monad.
arbiterApp :: forall (registry :: JobPayloadRegistry). (BuildServer registry registry, HasServer (ArbiterAPI registry) ('[] :: [Type])) => ArbiterServerConfig registry -> Application Source #
Convert to WAI Application
runArbiterAPI :: forall (registry :: JobPayloadRegistry). (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 :: JobPayloadRegistry) Source #
Configuration for the API server
Constructors
| ArbiterServerConfig | |
Fields | |
initArbiterServer :: forall (registry :: JobPayloadRegistry). 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 :: JobPayloadRegistry) (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 ('[] :: [(Symbol, Type)]) Source # | |
Defined in Arbiter.Servant.Server Methods buildServer :: ArbiterServerConfig registry -> ServerT (RegistryToAPI ('[] :: [(Symbol, Type)])) Handler Source # | |
| (BuildServer registry (nextTable ': moreRest), JobPayload payload, KnownSymbol tableName) => BuildServer registry ('(tableName, payload) ': (nextTable ': moreRest)) Source # | |
Defined in Arbiter.Servant.Server Methods buildServer :: ArbiterServerConfig registry -> ServerT (RegistryToAPI ('(tableName, payload) ': (nextTable ': moreRest))) Handler Source # | |
| (JobPayload payload, KnownSymbol tableName, RegistryTables registry) => BuildServer registry '['(tableName, payload)] Source # | |
Defined in Arbiter.Servant.Server Methods buildServer :: ArbiterServerConfig registry -> ServerT (RegistryToAPI '['(tableName, payload)]) Handler Source # | |