#ifndef LANDER #define LANDER #include "http_loop.h" #include "lsm/store.h" extern http_route lander_routes[6]; extern const char lander_key_charset[]; typedef struct lander_gctx { const char *data_dir; lsm_store *store; } lander_gctx; typedef struct lander_ctx { lsm_entry_handle *entry; } lander_ctx; typedef enum lander_attr_type : uint8_t { lander_attr_type_entry_type = 0, lander_attr_type_content_type = 1, lander_attr_type_url = 2, } lander_attr_type; typedef struct { char *header; lander_attr_type attr_type; http_header header_type; } header_to_attr; extern header_to_attr header_to_attrs[]; typedef enum lander_entry_type : uint8_t { lander_entry_type_redirect = 0, lander_entry_type_paste = 1, lander_entry_type_file = 2, } lander_entry_type; void *lander_gctx_init(); void *lander_ctx_init(); void lander_ctx_reset(lander_ctx *ctx); void lander_ctx_free(lander_ctx *ctx); bool lander_get_index(event_loop_conn *conn); bool lander_get_entry(event_loop_conn *conn); bool lander_post_redirect(event_loop_conn *conn); bool lander_post_paste(event_loop_conn *conn); bool lander_post_paste(event_loop_conn *conn); bool lander_post_redirect(event_loop_conn *conn); bool lander_stream_body_to_entry(event_loop_conn *conn); bool lander_stream_body_to_client(event_loop_conn *conn); bool lander_post_redirect_body_to_attr(event_loop_conn *conn); bool lander_remove_entry(event_loop_conn *conn); bool lander_post_file(event_loop_conn *conn); /** * Parse any custom headers and add them as attributes to the context's LSM * entry */ bool lander_headers_to_attrs(event_loop_conn *conn); bool lander_attrs_to_headers(event_loop_conn *conn); #endif