swarm-0.5.0.0: 2D resource gathering game with programmable robots
LicenseBSD-3-Clause
Safe HaskellSafe-Inferred
LanguageHaskell2010

Swarm.Web

Description

A web service for Swarm.

The service can be started using the `--port 5357` command line argument, or through the REPL by calling demoWeb.

See SwarmAPI for the available endpoints. You can also see them in your browser on the top level endpoint: lynx localhost:5357 -dump or you can output the markdown documentation to your terminal: cabal run swarm -O0 -- generate endpoints

Missing endpoints:

  • TODO: #625 run endpoint to load definitions
  • TODO: #493 export the whole game state
Synopsis

Documentation

startWebThread Source #

Arguments

:: Maybe Port 
-> ReadableIORef AppState

Read-only reference to the application state.

-> BChan AppEvent

Writable channel to send events to the game

-> IO (Either String Port) 

Attempt to start a web thread on the requested port, or a default one if none is requested (or don't start a web thread if the requested port is 0). If an explicit port was requested, fail if startup doesn't work. Otherwise, ignore the failure. In any case, return a Maybe Port value representing whether a web server is actually running, and if so, what port it is on.

Docs

type SwarmAPI = ("robots" :> Get '[JSON] [Robot]) :<|> (("robot" :> (Capture "id" RobotID :> Get '[JSON] (Maybe Robot))) :<|> (("goals" :> ("prereqs" :> Get '[JSON] [PrereqSatisfaction])) :<|> (("goals" :> ("active" :> Get '[JSON] [Objective])) :<|> (("goals" :> ("graph" :> Get '[JSON] (Maybe GraphInfo))) :<|> (("goals" :> ("uigoal" :> Get '[JSON] GoalTracking)) :<|> (("goals" :> Get '[JSON] WinCondition) :<|> (("code" :> ("render" :> (ReqBody '[PlainText] Text :> Post '[PlainText] Text))) :<|> (("code" :> ("run" :> (ReqBody '[PlainText] Text :> Post '[PlainText] Text))) :<|> ("repl" :> ("history" :> ("full" :> Get '[JSON] [REPLHistItem]))))))))))) Source #

Development

webMain Source #

Arguments

:: Maybe (MVar WebStartResult) 
-> Port 
-> ReadableIORef AppState

Read-only reference to the application state.

-> BChan AppEvent

Writable channel to send events to the game

-> IO () 

Orphan instances

ToSample Text Source # 
Instance details

Methods

toSamples :: Proxy Text -> [(Text, Text)] #