swarm-0.4: 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.

Once running, here are the available endpoints:

  • /robots : return the list of robots
  • robotID : return a single robot identified by its id

Missing endpoints:

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

Documentation

newtype RobotID Source #

Constructors

RobotID Int 

Instances

Instances details
FromHttpApiData RobotID Source # 
Instance details

Defined in Swarm.Web

ToCapture (Capture "id" RobotID) Source # 
Instance details

Defined in Swarm.Web

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 #

data WebStartResult Source #

Simple result type to report errors from forked startup thread.

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.

Orphan instances

ToSample Text Source # 
Instance details

Methods

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