Csilk 0.2.1
A lightweight, high-performance C HTTP web framework
Loading...
Searching...
No Matches
/home/runner/work/csilk/csilk/include/csilk/app/app.h

csilk_app_t* app = csilk_app_new("config.yaml"); csilk_app_use(app, csilk_logger_handler); csilk_app_get(app, "/", hello_handler); csilk_app_get(app, "/user/:id", user_handler); csilk_app_post(app, "/login", login_handler); csilk_app_static(app, "/public", "./static"); csilk_app_run(app, 8080); csilk_app_free(app);

Version
0.2.3
#ifndef CSILK_APP_H
#define CSILK_APP_H
#include "csilk/csilk.h"
typedef struct csilk_app_s csilk_app_t;
/* ---- Lifecycle ---- */
csilk_app_t* csilk_app_new(const char* config_path);
void csilk_app_free(csilk_app_t* app);
/* ---- Logger ---- */
void csilk_app_log_level(csilk_app_t* app, csilk_log_level_t level);
void csilk_app_log_file(csilk_app_t* app, const char* path, size_t max_sz);
void csilk_app_log_json(csilk_app_t* app, int enable);
/* ---- Middleware ---- */
void csilk_app_use(csilk_app_t* app, csilk_handler_t h);
void csilk_app_use_group(csilk_app_t* app, const char* prefix, csilk_handler_t h);
void csilk_app_apply_config(csilk_app_t* app);
/* ---- Routes ---- */
void csilk_app_add_route(csilk_app_t* app,
const char* method,
const char* path,
csilk_handler_t handler);
csilk_app_t* app, const char* method, const char* path, csilk_handler_t* handlers, size_t n);
void csilk_app_add_route_extended(csilk_app_t* app,
const char* method,
const char* path,
csilk_handler_t handler,
const char* input_type,
const char* output_type,
const char* summary,
const char* description);
void csilk_app_add_route_perm(csilk_app_t* app,
const char* method,
const char* path,
csilk_handler_t handler,
const char* perm_required,
const char* perm_resource);
void csilk_app_add_route_extended_perm(csilk_app_t* app,
const char* method,
const char* path,
csilk_handler_t handler,
const char* input_type,
const char* output_type,
const char* summary,
const char* description,
const char* perm_required,
const char* perm_resource);
#define csilk_app_get(app, path, handler) csilk_app_add_route(app, "GET", path, handler)
#define csilk_app_get_ext(app, path, handler, in, out, summary, desc) \
csilk_app_add_route_extended(app, "GET", path, handler, in, out, summary, desc)
#define csilk_app_get_perm(app, path, handler, perm, res) \
csilk_app_add_route_perm(app, "GET", path, handler, perm, res)
#define csilk_app_post(app, path, handler) csilk_app_add_route(app, "POST", path, handler)
#define csilk_app_post_ext(app, path, handler, in, out, summary, desc) \
csilk_app_add_route_extended(app, "POST", path, handler, in, out, summary, desc)
#define csilk_app_post_perm(app, path, handler, perm, res) \
csilk_app_add_route_perm(app, "POST", path, handler, perm, res)
#define csilk_app_put(app, path, handler) csilk_app_add_route(app, "PUT", path, handler)
#define csilk_app_put_ext(app, path, handler, in, out, summary, desc) \
csilk_app_add_route_extended(app, "PUT", path, handler, in, out, summary, desc)
#define csilk_app_put_perm(app, path, handler, perm, res) \
csilk_app_add_route_perm(app, "PUT", path, handler, perm, res)
#define csilk_app_delete(app, path, handler) csilk_app_add_route(app, "DELETE", path, handler)
#define csilk_app_delete_ext(app, path, handler, in, out, summary, desc) \
csilk_app_add_route_extended(app, "DELETE", path, handler, in, out, summary, desc)
#define csilk_app_delete_perm(app, path, handler, perm, res) \
csilk_app_add_route_perm(app, "DELETE", path, handler, perm, res)
#define csilk_app_patch(app, path, handler) csilk_app_add_route(app, "PATCH", path, handler)
#define csilk_app_patch_ext(app, path, handler, in, out, summary, desc) \
csilk_app_add_route_extended(app, "PATCH", path, handler, in, out, summary, desc)
#define csilk_app_patch_perm(app, path, handler, perm, res) \
csilk_app_add_route_perm(app, "PATCH", path, handler, perm, res)
#define csilk_app_options(app, path, handler) csilk_app_add_route(app, "OPTIONS", path, handler)
#define csilk_app_options_ext(app, path, handler, in, out, summary, desc) \
csilk_app_add_route_extended(app, "OPTIONS", path, handler, in, out, summary, desc)
#define csilk_app_options_perm(app, path, handler, perm, res) \
csilk_app_add_route_perm(app, "OPTIONS", path, handler, perm, res)
#define csilk_app_head(app, path, handler) csilk_app_add_route(app, "HEAD", path, handler)
#define csilk_app_head_ext(app, path, handler, in, out, summary, desc) \
csilk_app_add_route_extended(app, "HEAD", path, handler, in, out, summary, desc)
#define csilk_app_head_perm(app, path, handler, perm, res) \
csilk_app_add_route_perm(app, "HEAD", path, handler, perm, res)
/* ---- Static Files ---- */
void csilk_app_static(csilk_app_t* app, const char* prefix, const char* root_dir);
/* ---- Configuration ---- */
csilk_config_t* csilk_app_config(csilk_app_t* app);
/* ---- OpenAPI / Swagger ---- */
void csilk_app_enable_openapi(csilk_app_t* app, int enable);
/* ---- Run ---- */
int csilk_app_run(csilk_app_t* app, int port);
/* ---- Access underlying objects (advanced use) ---- */
csilk_router_t* csilk_app_router(csilk_app_t* app);
csilk_server_t* csilk_app_server(csilk_app_t* app);
#endif /* CSILK_APP_H */
Main application structure containing config, router, server, and groups.
Definition app.c:162
void csilk_app_add_route_perm(csilk_app_t *app, const char *method, const char *path, csilk_handler_t handler, const char *perm_required, const char *perm_resource)
Register a route with permission metadata.
Definition app.c:667
void csilk_app_static(csilk_app_t *app, const char *prefix, const char *root_dir)
Serve static files from a local directory.
Definition app.c:724
void csilk_app_add_route(csilk_app_t *app, const char *method, const char *path, csilk_handler_t handler)
Register a route with a single handler.
Definition app.c:581
csilk_server_t * csilk_app_server(csilk_app_t *app)
Get the underlying server for advanced operations.
Definition app.c:837
void csilk_app_set_server_config(csilk_app_t *app, csilk_server_config_t c)
Apply server-level configuration (timeouts, limits, TCP options).
Definition app.c:769
void csilk_app_enable_openapi(csilk_app_t *app, int enable)
Enable or disable the built-in /openapi.json endpoint. The endpoint is enabled by default when the ap...
Definition app.c:565
void csilk_app_use(csilk_app_t *app, csilk_handler_t h)
Register a global middleware that runs on every route.
Definition app.c:505
void csilk_app_log_json(csilk_app_t *app, int enable)
Enable or disable JSON structured log output.
Definition app.c:484
csilk_router_t * csilk_app_router(csilk_app_t *app)
Get the underlying router for advanced operations.
Definition app.c:827
csilk_app_t * csilk_app_new(const char *config_path)
Create a new application with optional YAML config.
Definition app.c:316
int csilk_app_run(csilk_app_t *app, int port)
Start the server and block until stopped (Ctrl+C).
Definition app.c:812
void csilk_app_free(csilk_app_t *app)
Deallocate all application resources.
Definition app.c:415
void csilk_app_add_route_extended(csilk_app_t *app, const char *method, const char *path, csilk_handler_t handler, const char *input_type, const char *output_type, const char *summary, const char *description)
Register a route with OpenAPI metadata (input/output types).
Definition app.c:605
void csilk_app_add_handlers(csilk_app_t *app, const char *method, const char *path, csilk_handler_t *handlers, size_t n)
Register a route with multiple handlers (middleware + handler).
Definition app.c:686
void csilk_app_apply_config(csilk_app_t *app)
Auto-apply built-in middleware based on current config.
Definition app.c:542
csilk_config_t * csilk_app_config(csilk_app_t *app)
Get a copy of the current application configuration.
Definition app.c:787
void csilk_app_log_level(csilk_app_t *app, csilk_log_level_t level)
Set the minimum log level.
Definition app.c:443
void csilk_app_use_group(csilk_app_t *app, const char *prefix, csilk_handler_t h)
Register a middleware that runs only on a specific prefix group.
Definition app.c:523
void csilk_app_add_route_extended_perm(csilk_app_t *app, const char *method, const char *path, csilk_handler_t handler, const char *input_type, const char *output_type, const char *summary, const char *description, const char *perm_required, const char *perm_resource)
Register a route with full metadata including permissions.
Definition app.c:629
void csilk_app_log_file(csilk_app_t *app, const char *path, size_t max_sz)
Enable file logging with optional rotation.
Definition app.c:462
High-performance C web framework — main public API header.
Top-level application configuration.
Definition csilk.h:1000
The main HTTP router.
Definition csilk.h:1419
Low-level server configuration options.
Definition csilk.h:953
void(* csilk_handler_t)(csilk_ctx_t *c)
Function pointer for route handlers and middleware.
Definition csilk.h:120
csilk_log_level_t
Log severity levels.
Definition csilk.h:739