OSDN Git Service

update libMiMic
[mimic/MiMicSDK.git] / lib / src / net / httpd / mod / NyLPC_cModUrl.h
1 /*********************************************************************************\r
2  * PROJECT: MiMic\r
3  * --------------------------------------------------------------------------------\r
4  *\r
5  * This file is part of MiMic\r
6  * Copyright (C)2011 Ryo Iizuka\r
7  *\r
8  * MiMic is free software: you can redistribute it and/or modify\r
9  * it under the terms of the GNU Lesser General Public License as published\r
10  * by the Free Software Foundation, either version 3 of the License, or\r
11  * (at your option) any later version.\r
12  *\r
13  * This program is distributed in the hope that it will be useful,\r
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
16  * GNU General Public License for more details.\r
17  *\r
18  * You should have received a copy of the GNU Lesser General Public License\r
19  * along with this program.  If not, see <http://www.gnu.org/licenses/>.\r
20  *\r
21  * For further information please contact.\r
22  *  http://nyatla.jp/\r
23  *  <airmail(at)ebony.plala.or.jp> or <nyatla(at)nyatla.jp>\r
24  *\r
25  *********************************************************************************/\r
26 #ifndef NYLPC_CMODURL_H_\r
27 #define NYLPC_CMODURL_H_\r
28 \r
29 #include "NyLPC_http.h"\r
30 #include "../NyLPC_cHttpdConnection.h"\r
31 \r
32 #ifdef __cplusplus\r
33 extern "C" {\r
34 #endif /* __cplusplus */\r
35 \r
36 /**\r
37  * URLの取得モード\r
38  */\r
39 typedef NyLPC_TUInt8 NyLPC_cModUrl_ParseMode;\r
40 /**\r
41  * URL文字列全てを取得する。\r
42  */\r
43 #define NyLPC_cModUrl_ParseMode_ALL       0x00\r
44 /**\r
45  * URLのパス部分だけを取得する。\r
46  * /absolutepath/?queryや/absolutepath/#bookmarkの/absolutepath/だけを取り出します。\r
47  */\r
48 #define NyLPC_cModUrl_ParseMode_PATH_ONLY 0x01\r
49 \r
50 \r
51 /**\r
52  * コネクションヘッダからURLを取得します。\r
53  */\r
54 typedef struct NyLPC_TcModUrl NyLPC_TcModUrl_t;\r
55 \r
56 \r
57 struct NyLPC_TcModUrl\r
58 {\r
59     struct NyLPC_THttpBasicHeader _header;\r
60     NyLPC_TcHttpBodyParser_t _body_parser;\r
61 };\r
62 \r
63 /**\r
64  * コンストラクタ。\r
65  */\r
66 void NyLPC_cModUrl_initialize(NyLPC_TcModUrl_t* i_inst);\r
67 void NyLPC_cModUrl_finalize(NyLPC_TcModUrl_t* i_inst);\r
68 \r
69 /**\r
70  * コネクションから全てのURLをパースします。\r
71  * NyLPC_cModUrl_execute2のラッパーです。i_i_pass_prefix_len=0,i_mode=NyLPC_cModUrl_ParseMode_ALLを指定したときと同じ動作をします。\r
72  * @param o_url_buf\r
73  * 取得したURL文字列。i_pass_prefix_lenが指定されている場合は、URLの後半部分です。\r
74  * 戻り値がTRUEの場合に有効です。\r
75  * @return\r
76  * 処理が成功するとTRUEを返します。FALSEの場合、URLのパースに失敗しています。\r
77  * TRUEの場合は引き続きResponseの送信処理をしてください。FALSEの場合はそのままリクエストハンドラを終了してください。\r
78  */\r
79 #define NyLPC_cModUrl_execute(i_inst,i_connection,o_url_buf,i_length_buf) NyLPC_cModUrl_execute2((i_inst),(i_connection),(o_url_buf),(i_length_buf),0,NyLPC_cModUrl_ParseMode_ALL)\r
80 \r
81 /**\r
82  * コネクションからURLをパースします。\r
83  * @param i_i_pass_prefix_len\r
84  * URLの先頭から取り除く文字数。\r
85  * 全てのURLを得るには0を指定します。\r
86  * @param o_url_buf\r
87  * 取得したURL文字列。i_pass_prefix_lenが指定されている場合は、URLの後半部分です。\r
88  * 戻り値がTRUEの場合に有効です。\r
89  * @param i_mode\r
90  * URLの取得モードです。\r
91  * <ul>\r
92  * <li>NyLPC_cModUrl_ParseMode_ALL - URL全てを取得します。</li>\r
93  * <li>NyLPC_cModUrl_ParseMode_PATH_ONLY - クエリ文字列、ブックマークを除く文字列を取得します。</li>\r
94  * </ul>\r
95  * @return\r
96  * 処理が成功するとTRUEを返します。FALSEの場合、URLのパースに失敗しています。\r
97  * TRUEの場合は引き続きResponseの送信処理をしてください。FALSEの場合はそのままリクエストハンドラを終了してください。\r
98  */\r
99 NyLPC_TBool NyLPC_cModUrl_execute2(NyLPC_TcModUrl_t* i_inst,NyLPC_TcHttpdConnection_t* i_connection,char* o_url_buf,NyLPC_TInt16 i_length_buf,NyLPC_TInt16 i_pass_prefix_len, NyLPC_cModUrl_ParseMode i_mode);\r
100 \r
101 /**\r
102  * HTTPストリームからBODY部分を読み出す。\r
103  * この関数はexecuteが成功した後に利用できます。\r
104  * @param read_len\r
105  * 読み出したバイト数\r
106  * @return\r
107  * -1:エラー\r
108  * 0:終端\r
109  * 1以上:読み出したデータサイズ\r
110  */\r
111 NyLPC_TInt16 NyLPC_cModUrl_readBody(NyLPC_TcModUrl_t* i_inst,NyLPC_TcHttpdConnection_t* i_connection,void* i_buf,NyLPC_TInt16 i_buf_size);\r
112 \r
113 /**\r
114  * basicヘッダオブジェクトを返します。\r
115  */\r
116 const struct NyLPC_THttpBasicHeader* NyLPC_cModUrl_getHeader(const NyLPC_TcModUrl_t* i_inst);\r
117 \r
118 /**\r
119  * Methodタイプを返します。\r
120  */\r
121 NyLPC_THttpMethodType NyLPC_cModUrl_getMethod(const NyLPC_TcModUrl_t* i_inst);\r
122 \r
123 \r
124 \r
125 \r
126 \r
127 \r
128 #ifdef __cplusplus\r
129 }\r
130 #endif /* __cplusplus */\r
131 \r
132 \r
133 \r
134 \r
135 #endif /* NYLPC_CMODURL_H_ */\r