Add a very limited URI parser.
parent
a0e9515600
commit
b73550bdcf
|
@ -2,6 +2,37 @@ const std = @import("std");
|
||||||
// const hexdump = @import("./hexdump.zig");
|
// const hexdump = @import("./hexdump.zig");
|
||||||
const testing = std.testing;
|
const testing = std.testing;
|
||||||
|
|
||||||
|
/// A VERY LIGHT and INCOMPLETE way of decoding URI.
|
||||||
|
/// DO NOT USE IT UNLESS YOU KNOW WHAT TO EXPECT.
|
||||||
|
pub const URI = struct {
|
||||||
|
protocol: []const u8,
|
||||||
|
address: []const u8,
|
||||||
|
path: []const u8,
|
||||||
|
|
||||||
|
const Self = @This();
|
||||||
|
|
||||||
|
pub fn read(uri_to_decode: []const u8) Self {
|
||||||
|
|
||||||
|
var protocolit = std.mem.split(u8, uri_to_decode, "://");
|
||||||
|
var protocol = protocolit.first();
|
||||||
|
|
||||||
|
var addressit = std.mem.split(u8, protocolit.next().?, "/");
|
||||||
|
var address = addressit.first();
|
||||||
|
|
||||||
|
var path = addressit.rest();
|
||||||
|
|
||||||
|
return Self { .protocol = protocol
|
||||||
|
, .address = address
|
||||||
|
, .path = path };
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
test "URI simple decoding" {
|
||||||
|
var uri = URI.read("tcp://127.0.0.1:8000/some-path");
|
||||||
|
try testing.expectEqualSlices(u8, uri.protocol, "tcp");
|
||||||
|
try testing.expectEqualSlices(u8, uri.address, "127.0.0.1:8000");
|
||||||
|
try testing.expectEqualSlices(u8, uri.path, "some-path");
|
||||||
|
}
|
||||||
|
|
||||||
pub fn print_eq(expected: anytype, obj: anytype) !void {
|
pub fn print_eq(expected: anytype, obj: anytype) !void {
|
||||||
var buffer: [4096]u8 = undefined;
|
var buffer: [4096]u8 = undefined;
|
||||||
|
|
Reference in New Issue