4.3. HTTP and WebSocket library (libhv)
The DASHV module provides HTTP and WebSocket networking built on top of the libhv library. It exposes WebSocket client/server types, HTTP request/response handling, route registration, cookie and form-data helpers, and an HTTP client for making outbound requests.
Use dashv_boost for the high-level daScript wrappers (HvWebServer,
HvWebSocketClient). The low-level C++ bindings live in this module.
All functions and symbols are in “dashv” module, use require to get access to it.
require dashv
WebSocket client / server / channel objects are exposed to daScript as
value-sized Handle<T> integers backed by HandleRegistry<T>. For
leak diagnostics on these handles (and an overview of the other
built-in leak detectors) see 6. HandleRegistry (dasHV handle objects) in the
Memory Leak Detection — Diagnostics Cheat Sheet guide.
See also:
dashv_boost — high-level wrapper classes
Memory Leak Detection — Diagnostics Cheat Sheet — leak diagnostics cheat sheet
4.3.1. Enumerations
- http_method
HTTP request method.
- Values:
DELETE = 0 - Delete resource
GET = 1 - Get resource
HEAD = 2 - Head request (headers only)
POST = 3 - Post data
PUT = 4 - Put resource
CONNECT = 5 - Connect tunnel
OPTIONS = 6 - Options inspection
TRACE = 7 - Trace echo
COPY = 8 - WebDAV copy
LOCK = 9 - WebDAV lock
MKCOL = 10 - WebDAV create collection
MOVE = 11 - WebDAV move
PROPFIND = 12 - WebDAV property find
PROPPATCH = 13 - WebDAV property patch
SEARCH = 14 - WebDAV search
UNLOCK = 15 - WebDAV unlock
BIND = 16 - WebDAV bind
REBIND = 17 - WebDAV rebind
UNBIND = 18 - WebDAV unbind
ACL = 19 - WebDAV ACL
REPORT = 20 - WebDAV report
MKACTIVITY = 21 - WebDAV make activity
CHECKOUT = 22 - WebDAV checkout
MERGE = 23 - WebDAV merge
MSEARCH = 14 - UPnP multicast search
NOTIFY = 25 - UPnP notify
SUBSCRIBE = 26 - UPnP subscribe
UNSUBSCRIBE = 27 - UPnP unsubscribe
PATCH = 28 - Partial update
PURGE = 29 - Cache purge
MKCALENDAR = 30 - CalDAV create calendar
LINK = 31 - Link resources
UNLINK = 32 - Unlink resources
SOURCE = 33 - Retrieve source
- http_status
HTTP response status code.
- Values:
CONTINUE = 100 - 100 Continue
SWITCHING_PROTOCOLS = 101 - 101 Switching Protocols
PROCESSING = 102 - 102 Processing
OK = 200 - 200 OK
CREATED = 201 - 201 Created
ACCEPTED = 202 - 202 Accepted
NON_AUTHORITATIVE_INFORMATION = 203 - 203 Non-Authoritative Information
NO_CONTENT = 204 - 204 No Content
RESET_CONTENT = 205 - 205 Reset Content
PARTIAL_CONTENT = 206 - 206 Partial Content
MULTI_STATUS = 207 - 207 Multi-Status
ALREADY_REPORTED = 208 - 208 Already Reported
IM_USED = 226 - 226 IM Used
MULTIPLE_CHOICES = 300 - 300 Multiple Choices
MOVED_PERMANENTLY = 301 - 301 Moved Permanently
FOUND = 302 - 302 Found
SEE_OTHER = 303 - 303 See Other
NOT_MODIFIED = 304 - 304 Not Modified
USE_PROXY = 305 - 305 Use Proxy
TEMPORARY_REDIRECT = 307 - 307 Temporary Redirect
PERMANENT_REDIRECT = 308 - 308 Permanent Redirect
BAD_REQUEST = 400 - 400 Bad Request
UNAUTHORIZED = 401 - 401 Unauthorized
PAYMENT_REQUIRED = 402 - 402 Payment Required
FORBIDDEN = 403 - 403 Forbidden
NOT_FOUND = 404 - 404 Not Found
METHOD_NOT_ALLOWED = 405 - 405 Method Not Allowed
NOT_ACCEPTABLE = 406 - 406 Not Acceptable
PROXY_AUTHENTICATION_REQUIRED = 407 - 407 Proxy Authentication Required
REQUEST_TIMEOUT = 408 - 408 Request Timeout
CONFLICT = 409 - 409 Conflict
GONE = 410 - 410 Gone
LENGTH_REQUIRED = 411 - 411 Length Required
PRECONDITION_FAILED = 412 - 412 Precondition Failed
PAYLOAD_TOO_LARGE = 413 - 413 Payload Too Large
URI_TOO_LONG = 414 - 414 URI Too Long
UNSUPPORTED_MEDIA_TYPE = 415 - 415 Unsupported Media Type
RANGE_NOT_SATISFIABLE = 416 - 416 Range Not Satisfiable
EXPECTATION_FAILED = 417 - 417 Expectation Failed
MISDIRECTED_REQUEST = 421 - 421 Misdirected Request
UNPROCESSABLE_ENTITY = 422 - 422 Unprocessable Entity
LOCKED = 423 - 423 Locked
FAILED_DEPENDENCY = 424 - 424 Failed Dependency
UPGRADE_REQUIRED = 426 - 426 Upgrade Required
PRECONDITION_REQUIRED = 428 - 428 Precondition Required
TOO_MANY_REQUESTS = 429 - 429 Too Many Requests
REQUEST_HEADER_FIELDS_TOO_LARGE = 431 - 431 Request Header Fields Too Large
UNAVAILABLE_FOR_LEGAL_REASONS = 451 - 451 Unavailable For Legal Reasons
INTERNAL_SERVER_ERROR = 500 - 500 Internal Server Error
NOT_IMPLEMENTED = 501 - 501 Not Implemented
BAD_GATEWAY = 502 - 502 Bad Gateway
SERVICE_UNAVAILABLE = 503 - 503 Service Unavailable
GATEWAY_TIMEOUT = 504 - 504 Gateway Timeout
HTTP_VERSION_NOT_SUPPORTED = 505 - 505 HTTP Version Not Supported
VARIANT_ALSO_NEGOTIATES = 506 - 506 Variant Also Negotiates
INSUFFICIENT_STORAGE = 507 - 507 Insufficient Storage
LOOP_DETECTED = 508 - 508 Loop Detected
NOT_EXTENDED = 510 - 510 Not Extended
NETWORK_AUTHENTICATION_REQUIRED = 511 - 511 Network Authentication Required
- ws_opcode
WebSocket frame opcode.
- Values:
WS_OPCODE_CONTINUE = 0 - Continuation frame
WS_OPCODE_TEXT = 1 - Text frame
WS_OPCODE_BINARY = 2 - Binary frame
WS_OPCODE_CLOSE = 8 - Close connection
WS_OPCODE_PING = 9 - Ping keepalive
WS_OPCODE_PONG = 10 - Pong reply
- ws_session_type
WebSocket session type.
- Values:
WS_CLIENT = 0 - Client session
WS_SERVER = 1 - Server session
4.3.2. Handled structures
- HttpRequest
HTTP request with URL, method, headers, body, and parameters.
- Fields:
body : das_string - Request body content.
method : http_method - HTTP method (GET, POST, etc.).
url : das_string - Full request URL.
scheme : das_string - URL scheme (http or https).
host : das_string - Host name.
port : int - Port number.
path : das_string - URL path component.
timeout : uint16 - Overall request timeout in seconds.
connect_timeout : uint16 - Connection timeout in seconds.
- HttpContext
HTTP request/response context passed to route handlers.
- HttpMessage
Base type for HTTP messages, providing header access.
- HttpResponse
HTTP response with status code, headers, and body.
- Fields:
body : das_string - Response body content.
content : void? - Content string.
status_code : http_status - HTTP status code.
- HttpResponseWriter
HTTP response writer for streaming responses. Supports chunked transfer encoding and SSE events. Obtained through async HTTP handlers registered with SSE.
4.3.3. Handled types
- WebSocketClient
Opaque handle to an outbound WebSocket connection.
Created by make_web_socket_client and released by destroy_web_socket_client; used by the HvWebSocketClient wrapper class.
- WebSocketChannel
Opaque handle to a server-side WebSocket client connection.
Passed to onWsOpen / onWsMessage / onWsClose and to send; becomes dead after the peer disconnects.
- WebSocketServer
Opaque handle to a running HTTP/WebSocket server.
Created by make_web_socket_server and released by destroy_web_socket_server; used by the HvWebServer wrapper class.
4.3.4. WebSocket client
make_web_socket_client (class: void?; info: StructInfo const?) : WebSocketClient
send (channel: WebSocketChannel; msg: string; opcode: ws_opcode; fin: bool) : int
send (self: WebSocketClient; msg: string; len: int; opcode: ws_opcode) : int
send (channel: WebSocketChannel; msg: string; len: int; fragment: int; opcode: ws_opcode) : int
send (channel: WebSocketChannel; msg: string; len: int; opcode: ws_opcode; fin: bool) : int
- close(self: WebSocketClient): int
Closes the WebSocket client connection. Returns 0 on success.
- Arguments:
self : WebSocketClient
- destroy_web_socket_client(arg0: WebSocketClient): bool
Releases the client handle. Returns true if the handle was live, false if already dead.
- Arguments:
arg0 : WebSocketClient
- is_connected(self: WebSocketClient): bool
Returns true if the WebSocket client is currently connected.
- Arguments:
self : WebSocketClient
- make_web_socket_client(class: void?; info: StructInfo const?): WebSocketClient
Creates a new low-level WebSocket client bound to a daScript class instance.
- Arguments:
class : void? implicit
info : StructInfo? implicit
- open(self: WebSocketClient; url: string): int
Opens a WebSocket connection to the specified URL. Returns 0 on success.
- Arguments:
self : WebSocketClient
url : string implicit
4.3.4.1. send
- send(self: WebSocketClient; msg: string): int
Sends a text message over the WebSocket client connection. Returns the number of bytes sent, or a negative error code.
- Arguments:
self : WebSocketClient
msg : string implicit
- send(channel: WebSocketChannel; msg: string; opcode: ws_opcode; fin: bool): int
- send(self: WebSocketClient; msg: string; len: int; opcode: ws_opcode): int
- send(channel: WebSocketChannel; msg: string; len: int; fragment: int; opcode: ws_opcode): int
- send(channel: WebSocketChannel; msg: string; len: int; opcode: ws_opcode; fin: bool): int
4.3.4.2. tick
- tick(server: WebSocketServer)
Drains one batch of queued HTTP/WebSocket events and invokes the user callbacks. Call periodically from the owning thread.
- Arguments:
server : WebSocketServer
- tick(self: WebSocketClient)
4.3.5. WebSocket server lifecycle
- destroy_web_socket_server(arg0: WebSocketServer): bool
Releases the server handle. Returns true if the handle was live. When this drops the last reference, ~hv::WebSocketServer runs and stops the background workers; call stop() explicitly if you keep other references to the server.
- Arguments:
arg0 : WebSocketServer
- make_web_socket_server(port: int; https_port: int; pathToCert: string; class: void?; info: StructInfo const?): WebSocketServer
Creates a new low-level WebSocket/HTTP server on the given port, optionally with TLS.
- Arguments:
port : int
https_port : int
pathToCert : string implicit
class : void? implicit
info : StructInfo? implicit
- start(server: WebSocketServer): int
Starts the server’s background workers. Returns 0 on success, a negative error code otherwise.
- Arguments:
server : WebSocketServer
- stop(server: WebSocketServer): int
Stops the server and drains pending events. Returns 0 on success.
- Arguments:
server : WebSocketServer
4.3.6. WebSocket channel send
4.3.7. Handle operations
WebSocketChannel!= (arg0: WebSocketChannel; arg1: WebSocketChannel) : bool
WebSocketChannel== (arg0: WebSocketChannel; arg1: WebSocketChannel) : bool
WebSocketClient!= (arg0: WebSocketClient; arg1: WebSocketClient) : bool
WebSocketClient== (arg0: WebSocketClient; arg1: WebSocketClient) : bool
WebSocketServer!= (arg0: WebSocketServer; arg1: WebSocketServer) : bool
WebSocketServer== (arg0: WebSocketServer; arg1: WebSocketServer) : bool
- WebSocketChannel!=(arg0: WebSocketChannel; arg1: WebSocketChannel): bool
Handle inequality: returns true if the two handles refer to different channels (or at least one is null).
- Arguments:
arg0 : WebSocketChannel
arg1 : WebSocketChannel
- WebSocketChannel==(arg0: WebSocketChannel; arg1: WebSocketChannel): bool
Handle equality: returns true if both refer to the same channel.
- Arguments:
arg0 : WebSocketChannel
arg1 : WebSocketChannel
- WebSocketClient!=(arg0: WebSocketClient; arg1: WebSocketClient): bool
Handle inequality: returns true if the two handles refer to different clients (or at least one is null).
- Arguments:
arg0 : WebSocketClient
arg1 : WebSocketClient
- WebSocketClient==(arg0: WebSocketClient; arg1: WebSocketClient): bool
Handle equality: returns true if both refer to the same client.
- Arguments:
arg0 : WebSocketClient
arg1 : WebSocketClient
- WebSocketServer!=(arg0: WebSocketServer; arg1: WebSocketServer): bool
Handle inequality: returns true if the two handles refer to different servers (or at least one is null).
- Arguments:
arg0 : WebSocketServer
arg1 : WebSocketServer
- WebSocketServer==(arg0: WebSocketServer; arg1: WebSocketServer): bool
Handle equality: returns true if both refer to the same live server.
- Arguments:
arg0 : WebSocketServer
arg1 : WebSocketServer
4.3.7.1. is_alive
- is_alive(arg0: WebSocketServer): bool
Returns true if the server handle is still live (not destroyed).
- Arguments:
arg0 : WebSocketServer
- is_alive(arg0: WebSocketClient): bool
- is_alive(arg0: WebSocketChannel): bool
4.3.8. HTTP route registration
ANY (server: WebSocketServer; url: string; lambda: lambda<():void>)
DELETE (server: WebSocketServer; url: string; lambda: lambda<():void>)
DELETE (url: string; headers: table<string, string>; block: block<(HttpResponse?):void>)
GET (url: string; headers: table<string, string>; block: block<(HttpResponse?):void>)
GET (server: WebSocketServer; url: string; lambda: lambda<():void>)
HEAD (server: WebSocketServer; url: string; lambda: lambda<():void>)
HEAD (url: string; headers: table<string, string>; block: block<(HttpResponse?):void>)
PATCH (server: WebSocketServer; url: string; lambda: lambda<():void>)
PATCH (url: string; text: string; block: block<(HttpResponse?):void>)
POST (url: string; text: string; headers: table<string, string>; block: block<(HttpResponse?):void>)
POST (url: string; text: string; block: block<(HttpResponse?):void>)
POST (server: WebSocketServer; url: string; lambda: lambda<():void>)
PUT (url: string; text: string; block: block<(HttpResponse?):void>)
PUT (url: string; text: string; headers: table<string, string>; block: block<(HttpResponse?):void>)
PUT (server: WebSocketServer; url: string; lambda: lambda<():void>)
SSE (server: WebSocketServer; url: string; lambda: lambda<():void>)
- ANY(server: WebSocketServer; url: string; lambda: lambda<():void>)
Warning
This is unsafe operation.
Registers a handler that matches any HTTP method (GET/POST/PUT/etc) for the given URL path.
- Arguments:
server : WebSocketServer
url : string implicit
lambda : lambda<void>
4.3.8.1. DELETE
- DELETE(url: string; block: block<(HttpResponse?):void>)
Registers a DELETE route handler, or performs an HTTP DELETE client request.
- Arguments:
url : string implicit
block : block<( HttpResponse?):void> implicit
- DELETE(server: WebSocketServer; url: string; lambda: lambda<():void>)
- DELETE(url: string; headers: table<string, string>; block: block<(HttpResponse?):void>)
4.3.8.2. GET
- GET(url: string; headers: table<string, string>; block: block<(HttpResponse?):void>)
Registers a GET route handler, or performs an HTTP GET client request.
- Arguments:
url : string implicit
headers : table<string;string> implicit
block : block<( HttpResponse?):void> implicit
- GET(url: string; block: block<(HttpResponse?):void>)
- GET(server: WebSocketServer; url: string; lambda: lambda<():void>)
4.3.8.3. HEAD
- HEAD(server: WebSocketServer; url: string; lambda: lambda<():void>)
Warning
This is unsafe operation.
Registers an HTTP HEAD handler for the given URL path.
- Arguments:
server : WebSocketServer
url : string implicit
lambda : lambda<void>
- HEAD(url: string; block: block<(HttpResponse?):void>)
- HEAD(url: string; headers: table<string, string>; block: block<(HttpResponse?):void>)
4.3.8.4. PATCH
- PATCH(server: WebSocketServer; url: string; lambda: lambda<():void>)
Warning
This is unsafe operation.
Registers an HTTP PATCH handler for the given URL path.
- Arguments:
server : WebSocketServer
url : string implicit
lambda : lambda<void>
- PATCH(url: string; text: string; block: block<(HttpResponse?):void>)
- PATCH(url: string; text: string; headers: table<string, string>; block: block<(HttpResponse?):void>)
- PATCH(url: string; text: string; headers: table<string, string>; from: table<string, string>; block: block<(HttpResponse?):void>)
4.3.8.5. POST
- POST(url: string; text: string; headers: table<string, string>; block: block<(HttpResponse?):void>)
Registers a POST route handler, or performs an HTTP POST client request.
- Arguments:
url : string implicit
text : string implicit
headers : table<string;string> implicit
block : block<( HttpResponse?):void> implicit
- POST(url: string; text: string; block: block<(HttpResponse?):void>)
- POST(url: string; text: string; headers: table<string, string>; from: table<string, string>; block: block<(HttpResponse?):void>)
- POST(server: WebSocketServer; url: string; lambda: lambda<():void>)
4.3.8.6. PUT
- PUT(url: string; text: string; block: block<(HttpResponse?):void>)
Registers a PUT route handler, or performs an HTTP PUT client request.
- Arguments:
url : string implicit
text : string implicit
block : block<( HttpResponse?):void> implicit
- PUT(url: string; text: string; headers: table<string, string>; block: block<(HttpResponse?):void>)
- PUT(server: WebSocketServer; url: string; lambda: lambda<():void>)
- PUT(url: string; text: string; headers: table<string, string>; from: table<string, string>; block: block<(HttpResponse?):void>)
- SSE(server: WebSocketServer; url: string; lambda: lambda<():void>)
Warning
This is unsafe operation.
Registers a Server-Sent Events (SSE) streaming handler for the given URL path.
- Arguments:
server : WebSocketServer
url : string implicit
lambda : lambda<void>
4.3.9. HTTP server configuration
- STATIC(server: WebSocketServer; path: string; dir: string)
Registers a static-file route: serves files under dir at the URL prefix path.
- Arguments:
server : WebSocketServer
path : string implicit
dir : string implicit
- allow_cors(server: WebSocketServer)
Enables cross-origin resource sharing (CORS) on all server responses.
- Arguments:
server : WebSocketServer
- set_document_root(server: WebSocketServer; dir: string)
Sets the root directory used for serving static files.
- Arguments:
server : WebSocketServer
dir : string implicit
- set_error_page(server: WebSocketServer; filename: string)
Sets the file served when the server returns an error response.
- Arguments:
server : WebSocketServer
filename : string implicit
- set_home_page(server: WebSocketServer; filename: string)
Sets the file served when a request maps to a directory (e.g. index.html).
- Arguments:
server : WebSocketServer
filename : string implicit
- set_index_of(server: WebSocketServer; dir: string)
Enables directory listing for the given directory path.
- Arguments:
server : WebSocketServer
dir : string implicit
4.3.10. HTTP response helpers
REDIRECT (response: HttpResponse?; location: string; status: http_status) : http_status
SERVE_FILE (response: HttpResponse?; filepath: string) : http_status
set_content_type (response: HttpResponse?; content_type: string)
set_content_type (request: HttpRequest?; content_type: string)
set_header (response: HttpResponse?; key: string; value: string)
set_header (request: HttpRequest?; key: string; value: string)
- DATA(response: HttpResponse?; data: string; length: int; status: http_status = dashv::http_status.OK): http_status
Sends raw data as the response body with the given status code.
- Arguments:
response : HttpResponse? implicit
data : string implicit
length : int
status : http_status
- JSON(response: HttpResponse?; json_string: string; status: http_status = dashv::http_status.OK): http_status
Sends a JSON response with the given status code.
- Arguments:
response : HttpResponse? implicit
json_string : string implicit
status : http_status
- REDIRECT(response: HttpResponse?; location: string; status: http_status): http_status
Sends an HTTP redirect response to the specified location.
- Arguments:
response : HttpResponse? implicit
location : string implicit
status : http_status
- SERVE_FILE(response: HttpResponse?; filepath: string): http_status
Sends a file as the response body, setting the content type automatically.
- Arguments:
response : HttpResponse? implicit
filepath : string implicit
- TEXT_PLAIN(response: HttpResponse?; text: string; status: http_status = dashv::http_status.OK): http_status
Sends a plain-text response with the given status code.
- Arguments:
response : HttpResponse? implicit
text : string implicit
status : http_status
4.3.10.1. set_content_type
- set_content_type(response: HttpResponse?; content_type: string)
Sets the Content-Type header on a response or request.
- Arguments:
response : HttpResponse? implicit
content_type : string implicit
- set_content_type(request: HttpRequest?; content_type: string)
4.3.10.2. set_header
- set_header(response: HttpResponse?; key: string; value: string)
Sets a response or request header.
- Arguments:
response : HttpResponse? implicit
key : string implicit
value : string implicit
- set_header(request: HttpRequest?; key: string; value: string)
4.3.11. HTTP client requests
- request(request: HttpRequest?; block: block<(HttpResponse?):void>)
Sends an HTTP request configured via an HttpRequest object and invokes the block with the response.
- Arguments:
request : HttpRequest? implicit
block : block<( HttpResponse?):void> implicit
4.3.11.1. request_cb
- request_cb(request: HttpRequest?; on_body: block<(uint8 const?;int):void>; on_complete: block<(HttpResponse?):void>)
Sends an HTTP request and invokes on_body with raw bytes (uint8? pointer and size) for each body chunk as it arrives, then calls on_complete with the final response. Use this for binary streaming or when exact byte counts are needed.
- Arguments:
request : HttpRequest? implicit
on_body : block<(uint8?;int):void> implicit
on_complete : block<( HttpResponse?):void> implicit
- request_cb(request: HttpRequest?; on_body: block<(string):void>; on_complete: block<(HttpResponse?):void>)
- status_message(response: HttpResponse?): string
Returns the status message string for the given HTTP response.
- Arguments:
response : HttpResponse? implicit
4.3.12. Message and header access
- HttpResponse.content_length(self: HttpResponse): int
Returns the content length of the HTTP response body.
- Arguments:
self : HttpResponse implicit
- each_header(message: HttpMessage?; block: block<(string;string):void>)
Iterates over all headers of an HTTP message, invoking the block with each key-value pair.
- Arguments:
message : HttpMessage? implicit
block : block<(string;string):void> implicit
- get_header(message: HttpMessage?; key: string): string
Returns the value of a specific HTTP header from a message.
- Arguments:
message : HttpMessage? implicit
key : string implicit
4.3.13. Request configuration
- allow_redirect(request: HttpRequest?; on: bool)
Enables or disables automatic following of HTTP redirects.
- Arguments:
request : HttpRequest? implicit
on : bool
- each_param(request: HttpRequest?; block: block<(string;string):void>)
Iterates over all query parameters of an HTTP request, invoking the block with each key-value pair.
- Arguments:
request : HttpRequest? implicit
block : block<(string;string):void> implicit
- get_param(request: HttpRequest?; key: string): string
Returns the value of a query parameter from an HTTP request.
- Arguments:
request : HttpRequest? implicit
key : string implicit
- set_basic_auth(request: HttpRequest?; username: string; password: string)
Sets HTTP Basic authentication credentials on a request.
- Arguments:
request : HttpRequest? implicit
username : string implicit
password : string implicit
- set_bearer_token_auth(request: HttpRequest?; token: string)
Sets a Bearer token authentication header on a request.
- Arguments:
request : HttpRequest? implicit
token : string implicit
- set_connect_timeout(request: HttpRequest?; seconds: int)
Sets the connection timeout in seconds.
- Arguments:
request : HttpRequest? implicit
seconds : int
- set_param(request: HttpRequest?; key: string; value: string)
Sets a query parameter on an HTTP request.
- Arguments:
request : HttpRequest? implicit
key : string implicit
value : string implicit
- set_timeout(request: HttpRequest?; seconds: int)
Sets the overall request timeout in seconds.
- Arguments:
request : HttpRequest? implicit
seconds : int
4.3.15. Form data
each_form_field (request: HttpRequest?; block: block<(string;string;string):void>)
get_form_data (request: HttpRequest?; name: string) : string
get_url_encoded (request: HttpRequest?; key: string) : string
save_form_file (request: HttpRequest?; name: string; path: string) : int
set_form_data (request: HttpRequest?; name: string; value: string)
set_form_file (request: HttpRequest?; name: string; filepath: string)
set_url_encoded (request: HttpRequest?; key: string; value: string)
- each_form_field(request: HttpRequest?; block: block<(string;string;string):void>)
Iterates over all form fields of a server-side request, invoking the block with name, filename, and content type.
- Arguments:
request : HttpRequest? implicit
block : block<(string;string;string):void> implicit
- get_form_data(request: HttpRequest?; name: string): string
Returns the value of a form field from a server-side request.
- Arguments:
request : HttpRequest? implicit
name : string implicit
- get_url_encoded(request: HttpRequest?; key: string): string
Returns the value of a URL-encoded form field from a server-side request.
- Arguments:
request : HttpRequest? implicit
key : string implicit
- save_form_file(request: HttpRequest?; name: string; path: string): int
Saves an uploaded form file to disk. Returns 0 on success.
- Arguments:
request : HttpRequest? implicit
name : string implicit
path : string implicit
- set_form_data(request: HttpRequest?; name: string; value: string)
Sets a form field value on a multipart request.
- Arguments:
request : HttpRequest? implicit
name : string implicit
value : string implicit
- set_form_file(request: HttpRequest?; name: string; filepath: string)
Attaches a file to a multipart request.
- Arguments:
request : HttpRequest? implicit
name : string implicit
filepath : string implicit
- set_url_encoded(request: HttpRequest?; key: string; value: string)
Sets a URL-encoded form field on a request.
- Arguments:
request : HttpRequest? implicit
key : string implicit
value : string implicit
4.3.16. SSE response writer
- close_writer(writer: HttpResponseWriter?): int
Closes the response writer’s underlying connection. Use this to forcefully terminate a long-lived streaming connection. Returns 0 on success.
- Arguments:
writer : HttpResponseWriter? implicit
- end_headers(writer: HttpResponseWriter?; key: string; value: string): int
Sends the response headers through the writer, adding one final header (key/value pair). Call this before writing body chunks or SSE events. Returns 0 on success.
- Arguments:
writer : HttpResponseWriter? implicit
key : string implicit
value : string implicit
- end_response(writer: HttpResponseWriter?): int
Ends the chunked response by sending a zero-length terminating chunk. Call this after all data has been written to signal the end of the response. Returns 0 on success.
- Arguments:
writer : HttpResponseWriter? implicit
- release_writer(server: WebSocketServer; writer: HttpResponseWriter?)
Releases a chunked/SSE response writer previously obtained from the server.
- Arguments:
server : WebSocketServer
writer : HttpResponseWriter? implicit
- sse_event(writer: HttpResponseWriter?; data: string; event: string): int
Sends an SSE event through the response writer. Formats the data and event type according to the SSE wire protocol. Returns 0 on success.
- Arguments:
writer : HttpResponseWriter? implicit
data : string implicit
event : string implicit
- write_chunked(writer: HttpResponseWriter?; data: string; length: int): int
Writes a chunk of data through the response writer using HTTP chunked transfer encoding. Returns 0 on success.
- Arguments:
writer : HttpResponseWriter? implicit
data : string implicit
length : int