Function upgradeRequested [src]

Does not invalidate request.head.

Prototype

pub fn upgradeRequested(request: *const Request) UpgradeRequest

Parameters

request: *const Request

Source

pub fn upgradeRequested(request: *const Request) UpgradeRequest { switch (request.head.version) { .@"HTTP/1.0" => return .none, .@"HTTP/1.1" => if (request.head.method != .GET) return .none, } var sec_websocket_key: ?[]const u8 = null; var upgrade_name: ?[]const u8 = null; var it = request.iterateHeaders(); while (it.next()) |header| { if (std.ascii.eqlIgnoreCase(header.name, "sec-websocket-key")) { sec_websocket_key = header.value; } else if (std.ascii.eqlIgnoreCase(header.name, "upgrade")) { upgrade_name = header.value; } } const name = upgrade_name orelse return .none; if (std.ascii.eqlIgnoreCase(name, "websocket")) return .{ .websocket = sec_websocket_key }; return .{ .other = name }; }