SultanC
  1. Home
  2. Examples
  3. Web

Parsing an HTTP/1.1 response from raw bytes, without a network

web/http_response.sn
// Parsing an HTTP/1.1 response from raw bytes, without a network.
import std.io.println;
import std.text.number;
import std.text.from_bytes;
import std.http.client;

def main(): int {
    let raw: vector u8 = bytes_from_text("HTTP/1.1 200 OK\r\nContent-Length: 5\r\nContent-Type: text/plain\r\n\r\nhello");
    match parse_http1_response(&raw, true, 1024) with
    | result.err(_) -> { println("invalid response"); return 1; }
    | result.ok(parsed) -> {
        // Library records have canonical field names only.
        println(uint_to_text(parsed.الاستجابة.الحالة));
        println(from_bytes(&parsed.الاستجابة.الجسم));
    };
    return 0;
}

Run it

With the interpreter, without compiling:

./build/sultanc run examples/en/web/http_response.sn

Or compile it to an executable:

./build/sultanc examples/en/web/http_response.sn -o build/example && ./build/example

Source on GitHub   All examples