cshiori
1
|
SHIORI/3.xインターフェース・パーサ・ビルダ・コンテナ [詳解]
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include "bool.h"
クラス | |
struct | cshiori_request_message |
SHIORI/3.x Request. [詳解] | |
struct | cshiori_response_message |
SHIORI/3.x Response. [詳解] | |
マクロ定義 | |
#define | LF "\r\n" |
#define | LF_LEN 2 |
#define | CSHIORI_REQUEST_MESSAGE_REFERENCE_SIZE 100 |
cshiori_request_message で配列参照可能なreferenceのサイズ | |
#define | CSHIORI_RESPONSE_MESSAGE_REFERENCE_SIZE 100 |
cshiori_response_message で配列参照可能なreferenceのサイズ | |
#define | CSHIORI_SHIORI_REQUEST_PARSE_HEADER_UNIT_SIZE 10 |
cshiori_shiori_request_parse() で一回に確保するヘッダサイズ | |
列挙型 | |
enum | cshiori_request_method { NONE, GET, NOTIFY } |
SHIORI/3.x Request METHOD. [詳解] | |
関数 | |
bool | cshiori_load (const char *dirpath, bool(*load)(const char *)) |
SHIORI/3.x load. [詳解] | |
char * | cshiori_request (char **const lines, const size_t lines_length, struct cshiori_response_message *(*request)(struct cshiori_request_message *, struct cshiori_response_message *)) |
SHIORI/3.x request. [詳解] | |
bool | cshiori_unload (bool(*unload)(void)) |
SHIORI/3.x unload. [詳解] | |
struct cshiori_request_message * | cshiori_request_message_new (void) |
SHIORI/3.x Requestをmallocします。 [詳解] | |
void | cshiori_request_message_delete (struct cshiori_request_message *req) |
SHIORI/3.x Requestをfreeします。 [詳解] | |
char * | cshiori_request_message_get (struct cshiori_request_message *req, const char *const name) |
SHIORI/3.x Requestのヘッダを取得します。 [詳解] | |
bool | cshiori_request_message_set (struct cshiori_request_message *req, char *const name, char *const value) |
SHIORI/3.x Requestのヘッダを設定します。 [詳解] | |
struct cshiori_response_message * | cshiori_response_message_new (void) |
SHIORI/3.x Responseをmallocします。 [詳解] | |
void | cshiori_response_message_delete (struct cshiori_response_message *res) |
SHIORI/3.x Responseをfreeします。 [詳解] | |
struct cshiori_request_message * | cshiori_shiori_request_parse (char **const lines, const size_t lines_length) |
SHIORI/3.x Requestをパースします。 [詳解] | |
char * | cshiori_shiori_request_build (const struct cshiori_request_message *const req) |
SHIORI/3.x Requestをビルドします。 [詳解] | |
char * | cshiori_shiori_response_build (const struct cshiori_response_message *const res) |
SHIORI/3.x Responseをビルドします。 [詳解] | |
char * | cshiori_shiori_response_build_bad_request () |
SHIORI/3.x Response 400 Bad Requestをビルドします。 [詳解] | |
char * | cshiori_shiori_response_build_internal_server_error () |
SHIORI/3.x Response 500 Internal Server Errorをビルドします。 [詳解] | |
SHIORI/3.xインターフェース・パーサ・ビルダ・コンテナ
(C) 2014 Narazaka : Licensed under The MIT License - http://narazaka.net/license/MIT?2014
bool cshiori_load | ( | const char * | dirpath, |
bool(*)(const char *) | load | ||
) |
char* cshiori_request | ( | char **const | lines, |
const size_t | lines_length, | ||
struct cshiori_response_message *(*)(struct cshiori_request_message *, struct cshiori_response_message *) | request | ||
) |
SHIORI/3.x request.
SHIORI/3.x Requestをパースし、 request() 関数に渡して、戻ったSHIORI/3.x Responseを文字列にして返します。
lines | 行単位で分割され改行文字を削除したSHIORI/3.x Request文字列 |
lines_length | SHIORI/3.x Requestの行数 |
request | request()関数へのポインタ |
request()関数は
です。
request()にはすでに初期化されたreq, resが渡されます。 reqを参照しながらresを適切に設定してそのまま返せば大丈夫です。
入力をSHIORI/3.xとしてパースできなかった場合と、request()がNULLを返した場合は、400 Bad Requestの文字列を返します。
void cshiori_request_message_delete | ( | struct cshiori_request_message * | req | ) |
SHIORI/3.x Requestをfreeします。
req | SHIORI/3.x Request |
char* cshiori_request_message_get | ( | struct cshiori_request_message * | req, |
const char *const | name | ||
) |
SHIORI/3.x Requestのヘッダを取得します。
req | SHIORI/3.x Request |
name | ヘッダ名 |
struct cshiori_request_message* cshiori_request_message_new | ( | void | ) |
SHIORI/3.x Requestをmallocします。
methodは0、common headersはNULL、header_sizeは0で初期化されます。
bool cshiori_request_message_set | ( | struct cshiori_request_message * | req, |
char *const | name, | ||
char *const | value | ||
) |
SHIORI/3.x Requestのヘッダを設定します。
これで設定したヘッダはcommon headersのショートカットに反映されません。common headersに含まれないヘッダを扱う場合に使用してください。
同名のヘッダがある場合上書きします。
req | SHIORI/3.x Request |
name | ヘッダ名 |
value | ヘッダ値。NULLを指定した場合、ヘッダは削除されます。 |
void cshiori_response_message_delete | ( | struct cshiori_response_message * | res | ) |
SHIORI/3.x Responseをfreeします。
res | SHIORI/3.x Response |
struct cshiori_response_message* cshiori_response_message_new | ( | void | ) |
SHIORI/3.x Responseをmallocします。
status_codeは0、common headersはNULLで初期化されます。
char* cshiori_shiori_request_build | ( | const struct cshiori_request_message *const | req | ) |
SHIORI/3.x Requestをビルドします。
req | SHIORI/3.x Request |
struct cshiori_request_message* cshiori_shiori_request_parse | ( | char **const | lines, |
const size_t | lines_length | ||
) |
SHIORI/3.x Requestをパースします。
lines | 行単位で分割され改行文字を削除したSHIORI/3.x Request文字列 |
lines_length | SHIORI/3.x Requestの行数 |
char* cshiori_shiori_response_build | ( | const struct cshiori_response_message *const | res | ) |
SHIORI/3.x Responseをビルドします。
res | SHIORI/3.x Response |
char* cshiori_shiori_response_build_bad_request | ( | ) |
SHIORI/3.x Response 400 Bad Requestをビルドします。
char* cshiori_shiori_response_build_internal_server_error | ( | ) |
SHIORI/3.x Response 500 Internal Server Errorをビルドします。