// تحليل استجابة HTTP/1.1 من بايتات خام دون شبكة.
استورد std.io.println;
استورد std.text.number;
استورد std.text.from_bytes;
استورد std.http.client;
عرف الرئيسية(): عدد {
دع الخام: متجه ط8 = بايتات_من_نص("HTTP/1.1 200 OK\r\nContent-Length: 5\r\nContent-Type: text/plain\r\n\r\nhello");
طابق حلل_استجابة_ويب1(&الخام, صواب, 1024) مع
| نتيجة.خطأ(_) -> { اطبع_سطر("استجابة غير صالحة"); أرجع 1; }
| نتيجة.نجح(المحلل) -> {
اطبع_سطر(طبيعي_إلى_نص(المحلل.الاستجابة.الحالة));
اطبع_سطر(من_بايتات(&المحلل.الاستجابة.الجسم));
};
أرجع 0;
}// 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;
}
التشغيل
بالمفسر، دون ترجمة:
./build/sultanc run examples/ar/web/http_response.snأو ترجمه إلى ملف تنفيذي:
./build/sultanc examples/ar/web/http_response.sn -o build/example && ./build/example