Examples
Complete programs that use c0de_net/http. The servers are examples; replace them with the API you want to use.
Weather forecast
Reads a forecast as JSON and prints it.
FROM_JSON of c0de/strings reads the answer into a struct. The elements of the struct must match the keys of the JSON object.
PROGRAM weather
NOOP
INCLUDE c0de_net/http
INCLUDE c0de/strings
NOOP
STRUCT forecast
BEGIN
sky STRING
temperature FLOAT
END STRUCT
NOOP
FUNCTION show
BEGIN
VARIABLE api STRUCT c0de_net/http/HTTP_CONNECTION
VARIABLE answer STRING
VARIABLE today STRUCT forecast
ASSIGN api.use_ssl TRUE ;
ASSIGN api.server "weather.example.com" ;
CALL c0de_net/http/HTTP_GET
PARAMETER connection api ;
PARAMETER endpoint "/today?city=Berlin" ;
RESULT result answer
CALL c0de/strings/FROM_JSON
PARAMETER source answer ;
PARAMETER destination today ;
CALL PRINT
PARAMETER value today.sky ⊕ ", " ⊕ today.temperature ⊕ " °C" ;
END FUNCTIONSwitching a lamp
Turns a lamp of a home automation on or off.
Put the trigger block next to a lever and give it a constant item token with the token of your home automation. The request is sent from the computer of the player who flips the lever, so only players in your home network can switch it.
PROGRAM lamp
NOOP
INCLUDE c0de_net/http
NOOP
FUNCTION switch
PARAMETER token STRING
PARAMETER on BOOLEAN TRUE
RESULT status INTEGER
BEGIN
VARIABLE api STRUCT c0de_net/http/HTTP_CONNECTION
VARIABLE state STRING "{\"on\": false}"
ASSIGN api.server "192.168.1.20" ;
ASSIGN api.port 8123 ;
ASSIGN api.base_endpoint "/api" ;
ASSIGN api.headers["Authorization"] "Bearer " ⊕ token ;
ASSIGN api.headers["Content-Type"] "application/json" ;
IF on ;
BEGIN
ASSIGN state "{\"on\": true}" ;
END IF
CALL c0de_net/http/HTTP_PUT
PARAMETER connection api ;
PARAMETER endpoint "/lamps/kitchen" ;
PARAMETER data state ;
RESULT status status
END FUNCTIONHandling errors
Checks whether a server answers and returns an exit code instead of crashing.
The exit code is 0 if the server answers, 1 if it answers with an error status and 2 if there is no answer. A comparator next to the trigger block reads it.
PROGRAM ping
NOOP
INCLUDE c0de_net/http
NOOP
FUNCTION check
PARAMETER host STRING
BEGIN
VARIABLE api STRUCT c0de_net/http/HTTP_CONNECTION
VARIABLE problem ERROR
ASSIGN api.use_ssl TRUE ;
ASSIGN api.server host ;
ASSIGN api.timeout 5 ;
CALL c0de_net/http/HTTP_HEAD problem
PARAMETER connection api ;
IF problem.code = 1000 ;
BEGIN
EXIT 1 ;
END IF
IF problem.code ≠ 0 ;
BEGIN
EXIT 2 ;
END IF
EXIT 0 ;
END FUNCTION