File: api.h

package info (click to toggle)
siridb-server 2.0.53-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 4,612 kB
  • sloc: ansic: 47,501; python: 6,263; sh: 254; makefile: 149
file content (72 lines) | stat: -rw-r--r-- 1,529 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
/*
 * api.h - SiriDB HTTP API.
 */
#ifndef SIRI_API_H_
#define SIRI_API_H_

#include <lib/http_parser.h>
#include <siri/db/db.h>
#include <siri/service/request.h>
#include <stdbool.h>
#include <uv.h>

typedef enum
{
    SIRI_API_CT_TEXT,
    SIRI_API_CT_JSON,
    SIRI_API_CT_QPACK,
} siri_api_content_t;

typedef enum
{
    SIRI_API_RT_NONE,
    SIRI_API_RT_QUERY,
    SIRI_API_RT_INSERT,
    SIRI_APT_RT_SERVICE,
} siri_api_req_t;

typedef enum
{
    E200_OK,
    E400_BAD_REQUEST,
    E401_UNAUTHORIZED,
    E403_FORBIDDEN,
    E404_NOT_FOUND,
    E405_METHOD_NOT_ALLOWED,
    E415_UNSUPPORTED_MEDIA_TYPE,
    E422_UNPROCESSABLE_ENTITY,
    E500_INTERNAL_SERVER_ERROR,
    E503_SERVICE_UNAVAILABLE
} siri_api_header_t;

typedef struct siri_api_request_s siri_api_request_t;

typedef int (*on_state_cb_t)(siri_api_request_t * ar, const char * at, size_t n);

int siri_api_init(void);
int siri_api_send(
        siri_api_request_t * ar,
        siri_api_header_t ht,
        unsigned char * src,
        size_t n);

struct siri_api_request_s
{
    uint32_t tp;        /* maps to siridb_tee_t flags for cleanup */
    uint32_t ref;
    on_state_cb_t on_state;
    siridb_t * siridb;
    void * origin;      /* can be a user, server or NULL */
    char * buf;
    size_t len;
    size_t size;
    uv_stream_t * stream;
    siri_api_content_t content_type;
    siri_api_req_t request_type;
    service_request_t service_type;
    bool service_authenticated;
    http_parser parser;
    uv_write_t req;
};

#endif /* SIRI_API_H_ */