structstd.http.Client.basic_authorization[src]

Values

Constantmax_user_len[src]

Source Code

Source code
pub const max_user_len = 255

Constantmax_password_len[src]

Source Code

Source code
pub const max_password_len = 255

Constantmax_value_len[src]

Source Code

Source code
pub const max_value_len = valueLength(max_user_len, max_password_len)

Functions

FunctionvalueLength[src]

pub fn valueLength(user_len: usize, password_len: usize) usize

Parameters

user_len: usize
password_len: usize

Source Code

Source code
pub fn valueLength(user_len: usize, password_len: usize) usize {
    return prefix.len + std.base64.standard.Encoder.calcSize(user_len + 1 + password_len);
}

FunctionvalueLengthFromUri[src]

pub fn valueLengthFromUri(uri: Uri) usize

Parameters

uri: Uri

Source Code

Source code
pub fn valueLengthFromUri(uri: Uri) usize {
    var stream = std.io.countingWriter(std.io.null_writer);
    try stream.writer().print("{user}", .{uri.user orelse Uri.Component.empty});
    const user_len = stream.bytes_written;
    stream.bytes_written = 0;
    try stream.writer().print("{password}", .{uri.password orelse Uri.Component.empty});
    const password_len = stream.bytes_written;
    return valueLength(@intCast(user_len), @intCast(password_len));
}

Functionvalue[src]

pub fn value(uri: Uri, out: []u8) []u8

Parameters

uri: Uri
out: []u8

Source Code

Source code
pub fn value(uri: Uri, out: []u8) []u8 {
    var buf: [max_user_len + ":".len + max_password_len]u8 = undefined;
    var stream = std.io.fixedBufferStream(&buf);
    stream.writer().print("{user}", .{uri.user orelse Uri.Component.empty}) catch
        unreachable;
    assert(stream.pos <= max_user_len);
    stream.writer().print(":{password}", .{uri.password orelse Uri.Component.empty}) catch
        unreachable;

    @memcpy(out[0..prefix.len], prefix);
    const base64 = std.base64.standard.Encoder.encode(out[prefix.len..], stream.getWritten());
    return out[0 .. prefix.len + base64.len];
}

Source Code

Source code
pub const basic_authorization = struct {
    pub const max_user_len = 255;
    pub const max_password_len = 255;
    pub const max_value_len = valueLength(max_user_len, max_password_len);

    const prefix = "Basic ";

    pub fn valueLength(user_len: usize, password_len: usize) usize {
        return prefix.len + std.base64.standard.Encoder.calcSize(user_len + 1 + password_len);
    }

    pub fn valueLengthFromUri(uri: Uri) usize {
        var stream = std.io.countingWriter(std.io.null_writer);
        try stream.writer().print("{user}", .{uri.user orelse Uri.Component.empty});
        const user_len = stream.bytes_written;
        stream.bytes_written = 0;
        try stream.writer().print("{password}", .{uri.password orelse Uri.Component.empty});
        const password_len = stream.bytes_written;
        return valueLength(@intCast(user_len), @intCast(password_len));
    }

    pub fn value(uri: Uri, out: []u8) []u8 {
        var buf: [max_user_len + ":".len + max_password_len]u8 = undefined;
        var stream = std.io.fixedBufferStream(&buf);
        stream.writer().print("{user}", .{uri.user orelse Uri.Component.empty}) catch
            unreachable;
        assert(stream.pos <= max_user_len);
        stream.writer().print(":{password}", .{uri.password orelse Uri.Component.empty}) catch
            unreachable;

        @memcpy(out[0..prefix.len], prefix);
        const base64 = std.base64.standard.Encoder.encode(out[prefix.len..], stream.getWritten());
        return out[0 .. prefix.len + base64.len];
    }
}