1
0
Fork 0
mirror of https://github.com/zigzap/zap.git synced 2025-10-20 23:24:09 +00:00

0.15.1-fix http_params example

This commit is contained in:
renerocksai 2025-08-28 22:22:59 +02:00
parent b5227bccbb
commit 7672a5e099
No known key found for this signature in database
2 changed files with 22 additions and 23 deletions

View file

@ -17,19 +17,18 @@ pub const std_options: std.Options = .{
// We send ourselves a request
fn makeRequest(a: std.mem.Allocator, url: []const u8) !void {
const uri = try std.Uri.parse(url);
var http_client: std.http.Client = .{ .allocator = a };
defer http_client.deinit();
var server_header_buffer: [2048]u8 = undefined;
var req = try http_client.open(.GET, uri, .{
.server_header_buffer = &server_header_buffer,
const response = try http_client.fetch(.{
.location = .{ .url = url },
.method = .GET,
.payload = null,
.keep_alive = false,
});
defer req.deinit();
try req.send();
try req.wait();
if (response.status.class() != .success) {
std.debug.print("HTTP Error: {?s}", .{response.status.phrase()});
}
}
fn makeRequestThread(a: std.mem.Allocator, url: []const u8) !std.Thread {
@ -95,7 +94,7 @@ pub fn main() !void {
std.debug.print("\n", .{});
// iterate over all params
const params = try r.parametersToOwnedList(alloc);
var params = try r.parametersToOwnedList(alloc);
defer params.deinit();
for (params.items) |kv| {
std.log.info("Param `{s}` is {any}", .{ kv.key, kv.value });

View file

@ -43,10 +43,10 @@ pub const HttpParamStrKVList = struct {
pub const HttpParamKVList = struct {
items: []HttpParamKV,
allocator: Allocator,
pub fn deinit(self: *const HttpParamKVList) void {
for (self.items) |item| {
pub fn deinit(self: *HttpParamKVList) void {
for (self.items) |*item| {
self.allocator.free(item.key);
if (item.value) |v| {
if (item.value) |*v| {
v.free(self.allocator);
}
}
@ -80,11 +80,11 @@ pub const HttpParam = union(HttpParamValueType) {
/// value will always be null
Array_Binfile: std.ArrayList(HttpParamBinaryFile),
pub fn free(self: HttpParam, alloc: Allocator) void {
switch (self) {
pub fn free(self: *HttpParam, alloc: Allocator) void {
switch (self.*) {
.String => |s| alloc.free(s),
.Array_Binfile => |a| {
a.deinit();
.Array_Binfile => |*a| {
a.deinit(alloc);
},
else => {
// nothing to free
@ -190,7 +190,7 @@ fn parseBinfilesFrom(a: Allocator, o: fio.FIOBJ) !HttpParam {
if (fio.fiobj_ary_count(fn_ary) == len and fio.fiobj_ary_count(mt_ary) == len) {
var i: isize = 0;
var ret = std.ArrayList(HttpParamBinaryFile).init(a);
var ret = std.ArrayList(HttpParamBinaryFile).empty;
while (i < len) : (i += 1) {
const file_data_obj = fio.fiobj_ary_entry(data, i);
const file_name_obj = fio.fiobj_ary_entry(fn_ary, i);
@ -215,7 +215,7 @@ fn parseBinfilesFrom(a: Allocator, o: fio.FIOBJ) !HttpParam {
const file_data = fio.fiobj_obj2cstr(file_data_obj);
const file_name = fio.fiobj_obj2cstr(file_name_obj);
const file_mimetype = fio.fiobj_obj2cstr(file_mimetype_obj);
try ret.append(.{
try ret.append(a, .{
.data = file_data.data[0..file_data.len],
.mimetype = file_mimetype.data[0..file_mimetype.len],
.filename = file_name.data[0..file_name.len],
@ -735,7 +735,7 @@ const CallbackContext_KV = struct {
const ctx: *CallbackContext_KV = @as(*CallbackContext_KV, @ptrCast(@alignCast(context_)));
// this is thread-safe, guaranteed by fio
const fiobj_key: fio.FIOBJ = fio.fiobj_hash_key_in_loop();
ctx.params.append(.{
ctx.params.append(ctx.allocator, .{
.key = util.fio2strAlloc(ctx.allocator, fiobj_key) catch |err| {
ctx.last_error = err;
return -1;
@ -764,7 +764,7 @@ const CallbackContext_StrKV = struct {
const ctx: *CallbackContext_StrKV = @as(*CallbackContext_StrKV, @ptrCast(@alignCast(context_)));
// this is thread-safe, guaranteed by fio
const fiobj_key: fio.FIOBJ = fio.fiobj_hash_key_in_loop();
ctx.params.append(.{
ctx.params.append(ctx.allocator, .{
.key = util.fio2strAlloc(ctx.allocator, fiobj_key) catch |err| {
ctx.last_error = err;
return -1;
@ -834,7 +834,7 @@ pub fn parametersToOwnedStrList(self: *const Request, a: Allocator) anyerror!Htt
if (howmany != self.getParamCount()) {
return error.HttpIterParams;
}
return .{ .items = try params.toOwnedSlice(), .allocator = a };
return .{ .items = try params.toOwnedSlice(a), .allocator = a };
}
/// Returns the query / body parameters as key/value pairs
@ -859,7 +859,7 @@ pub fn parametersToOwnedList(self: *const Request, a: Allocator) !HttpParamKVLis
if (howmany != self.getParamCount()) {
return error.HttpIterParams;
}
return .{ .items = try params.toOwnedSlice(), .allocator = a };
return .{ .items = try params.toOwnedSlice(a), .allocator = a };
}
/// get named parameter (parsed) as string