Skip to main content

net

The net library provides functions for performing network operations.

net.http

//net.http.get(config <: (header: <: dict), url <: string) <: tuple

get sends an HTTP GET request to the provided url and returns a tuple that represents the response.

  • config is a tuple with an optional header dictionary of {string: string}, or {string: [string]} for multi-value headers.
  • url is the destination of the request.

The schema of the response is a tuple, as follows:

(
status: "200 OK", # A string indicating the status of the response
status_code: 200, # A number indicating the status code of the response
header: { # A dictionary containing the response header
"Content-Type": ["application/json; charset=utf-8"],
...,
},
body: ..., # The body of the response as a byte array
)

Usage:

Expression:

//net.http.get("https://raw.githubusercontent.com/arr-ai/arrai/cf1326f7b61178e3e98aff30540e10cb73449445/Makefile")

Result:

(
body: "all: test lint wasm

# TODO: If this Makefile is ever used for CI, suppress timingsensitive there.
test:
go test $(GOTESTFLAGS) -tags timingsensitive ./...

lint:
golangci-lint run

wasm:
GOOS=js GOARCH=wasm go build -o /tmp/arrai.wasm ./cmd/arrai"
,
header:{
'Accept-Ranges': ['bytes'],
'Access-Control-Allow-Origin': ['*'],
'Cache-Control': ['max-age=300'],
'Connection': ['keep-alive'],
'Content-Security-Policy': ["default-src 'none'; style-src 'unsafe-inline'; sandbox"],
'Content-Type': ['text/plain; charset=utf-8'],
'Date': ['Mon, 13 Apr 2020 12:17:00 GMT'],
'Etag': ['W/"d7460fe5d998b2f25ba976ca6ef6646215c0b3314608fb5462a48f6412334f13"'],
'Expires': ['Mon, 13 Apr 2020 12:22:00 GMT'],
'Source-Age': ['246'],
'Strict-Transport-Security': ['max-age=31536000'],
'Vary': ['Authorization,Accept-Encoding'],
'Via': ['1.1 varnish (Varnish/6.0)', '1.1 varnish'],
'X-Cache': ['MISS, HIT'],
'X-Cache-Hits': ['0, 1'],
'X-Content-Type-Options': ['nosniff'],
'X-Fastly-Request-Id': ['fe13435de8287048b85b80e6057b941d3470dea6'],
'X-Frame-Options': ['deny'],
'X-Github-Request-Id': ['8956:2496:13C90C:1631AA:5E945745'],
'X-Served-By': ['cache-mel19034-MEL'],
'X-Timer': ['S1586780220.448718,VS0,VE1'],
'X-Xss-Protection': ['1; mode=block']
},
status: '200 OK',
status_code: 200
)

//net.http.post(config <: (header: <: dict), url <: string, body <: string|bytes) <: tuple

post sends an HTTP POST request to the provided url and returns a tuple that represents the response.

  • config is a tuple with an optional header dictionary of {string: string}, or {string: [string]} for multi-value headers.
    • This should typically contain at least the Content-Type header describing the format of the body. If not provided, this defaults to text/plain.
  • url is the destination of the request.
  • body is the content to send in the body of the request. It will be interpreted by the server using the Content-Type header from the request.

The schema of the response is a tuple (as above):

(
status: "200 OK", # A string indicating the status of the response
status_code: 200, # A number indicating the status code of the response
header: { # A dictionary containing the response header
"Content-Type": ["application/json; charset=utf-8"],
...,
},
body: ..., # The body of the response as a byte array
)