support -u/--url command line args to determine target
All checks were successful
AWS-Zig Build / build-zig-0.11.0-amd64-host (push) Successful in 2m0s
All checks were successful
AWS-Zig Build / build-zig-0.11.0-amd64-host (push) Successful in 2m0s
This commit is contained in:
parent
29687e1440
commit
05dd8b7e06
|
@ -9,6 +9,7 @@ const Option = struct {
|
|||
};
|
||||
|
||||
const target_option: Option = .{ .short = "t", .long = "target" };
|
||||
const url_option: Option = .{ .short = "u", .long = "url" };
|
||||
const header_option: Option = .{ .short = "h", .long = "header" };
|
||||
|
||||
/// Finds the "target" for this request. In a web request, this is the path
|
||||
|
@ -32,15 +33,18 @@ fn findTargetWithoutContext(allocator: std.mem.Allocator) ![]const u8 {
|
|||
var argIterator = try std.process.argsWithAllocator(allocator);
|
||||
_ = argIterator.next();
|
||||
var is_target_option = false;
|
||||
var is_url_option = false;
|
||||
while (argIterator.next()) |arg| {
|
||||
if (is_target_option) {
|
||||
if (is_target_option or is_url_option) {
|
||||
if (std.mem.startsWith(u8, arg, "-") or
|
||||
std.mem.startsWith(u8, arg, "--"))
|
||||
{
|
||||
// bad user input, but we're not returning errors here
|
||||
return "/";
|
||||
}
|
||||
return arg;
|
||||
if (is_target_option)
|
||||
return arg;
|
||||
return (try std.Uri.parse(arg)).path;
|
||||
}
|
||||
if (std.mem.startsWith(u8, arg, "-" ++ target_option.short) or
|
||||
std.mem.startsWith(u8, arg, "--" ++ target_option.long))
|
||||
|
@ -48,9 +52,20 @@ fn findTargetWithoutContext(allocator: std.mem.Allocator) ![]const u8 {
|
|||
// We'll search for --target=blah style first
|
||||
var split = std.mem.splitSequence(u8, arg, "=");
|
||||
_ = split.next();
|
||||
if (split.next()) |s| return s; // found it
|
||||
const rest = split.rest();
|
||||
if (split.next()) |_| return rest; // found it
|
||||
is_target_option = true;
|
||||
}
|
||||
if (std.mem.startsWith(u8, arg, "-" ++ url_option.short) or
|
||||
std.mem.startsWith(u8, arg, "--" ++ url_option.long))
|
||||
{
|
||||
// We'll search for --target=blah style first
|
||||
var split = std.mem.splitSequence(u8, arg, "=");
|
||||
_ = split.next();
|
||||
const rest = split.rest();
|
||||
if (split.next()) |_| return (try std.Uri.parse(rest)).path; // found it
|
||||
is_url_option = true;
|
||||
}
|
||||
}
|
||||
return "/";
|
||||
}
|
||||
|
|
|
@ -12,6 +12,7 @@ pub const Response = struct {
|
|||
status: std.http.Status = .ok,
|
||||
reason: ?[]const u8 = null,
|
||||
request: struct {
|
||||
// TODO: We will likely end up needing method here at some point...
|
||||
target: []const u8,
|
||||
headers: std.http.Headers,
|
||||
},
|
||||
|
|
Loading…
Reference in New Issue
Block a user