mirror of
https://github.com/zigzap/zap.git
synced 2025-10-20 07:04:08 +00:00
0.15.1-fix http_params example
This commit is contained in:
parent
b5227bccbb
commit
7672a5e099
2 changed files with 22 additions and 23 deletions
|
@ -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 });
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Reference in a new issue