mirror of
https://github.com/zigzap/zap.git
synced 2025-10-20 23:24:09 +00:00
update README
This commit is contained in:
parent
4d70181701
commit
5c8aa438f9
1 changed files with 90 additions and 0 deletions
90
README.md
90
README.md
|
@ -372,3 +372,93 @@ pub fn main() !void {
|
|||
|
||||
|
||||
[`endpoints.zig`](examples/endpoints/endpoints.zig):
|
||||
|
||||
```zig
|
||||
const std = @import("std");
|
||||
const zap = @import("zap");
|
||||
const Users = @import("users.zig");
|
||||
|
||||
// the Endpoints
|
||||
|
||||
pub const Self = @This();
|
||||
|
||||
var alloc: std.mem.Allocator = undefined;
|
||||
var endpoint: zap.SimpleEndpoint = undefined;
|
||||
var list_endpoint: zap.SimpleEndpoint = undefined;
|
||||
var users: Users = undefined;
|
||||
|
||||
pub fn init(
|
||||
a: std.mem.Allocator,
|
||||
user_path: []const u8,
|
||||
userlist_path: []const u8,
|
||||
) void {
|
||||
users = Users.init(a);
|
||||
alloc = a;
|
||||
endpoint = zap.SimpleEndpoint.init(.{
|
||||
.path = user_path,
|
||||
.get = getUser,
|
||||
.post = null,
|
||||
.put = null,
|
||||
.delete = null,
|
||||
});
|
||||
list_endpoint = zap.SimpleEndpoint.init(.{
|
||||
.path = userlist_path,
|
||||
.get = listUsers,
|
||||
.post = null,
|
||||
.put = null,
|
||||
.delete = null,
|
||||
});
|
||||
}
|
||||
|
||||
pub fn getUsers() *Users {
|
||||
return &users;
|
||||
}
|
||||
|
||||
pub fn getUserEndpoint() *zap.SimpleEndpoint {
|
||||
return &endpoint;
|
||||
}
|
||||
|
||||
pub fn getUserListEndpoint() *zap.SimpleEndpoint {
|
||||
return &list_endpoint;
|
||||
}
|
||||
|
||||
fn userIdFromPath(path: []const u8) ?usize {
|
||||
if (path.len >= endpoint.settings.path.len + 2) {
|
||||
if (path[endpoint.settings.path.len] != '/') {
|
||||
return null;
|
||||
}
|
||||
const idstr = path[endpoint.settings.path.len + 1 ..];
|
||||
return std.fmt.parseUnsigned(usize, idstr, 10) catch null;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
pub fn getUser(e: *zap.SimpleEndpoint, r: zap.SimpleRequest) void {
|
||||
_ = e;
|
||||
if (r.path) |path| {
|
||||
if (userIdFromPath(path)) |id| {
|
||||
if (users.get(id)) |user| {
|
||||
if (Users.stringify(user, .{})) |json| {
|
||||
_ = r.sendJson(json);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pub fn listUsers(e: *zap.SimpleEndpoint, r: zap.SimpleRequest) void {
|
||||
_ = e;
|
||||
var l: std.ArrayList(Users.User) = std.ArrayList(Users.User).init(alloc);
|
||||
if (users.list(&l)) {} else |_| {
|
||||
return;
|
||||
}
|
||||
if (Users.stringifyUserList(&l, .{})) |maybe_json| {
|
||||
if (maybe_json) |json| {
|
||||
_ = r.sendJson(json);
|
||||
}
|
||||
} else |_| {
|
||||
return;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue