mirror of
https://github.com/lxsang/ant-http
synced 2025-04-19 00:46:44 +02:00
add json request support
This commit is contained in:
parent
08a29ee87e
commit
9305d4f800
2
Makefile
2
Makefile
@ -8,7 +8,7 @@ ifeq ($(UNAME_S),Linux)
|
|||||||
PF_FLAG=-D_GNU_SOURCE
|
PF_FLAG=-D_GNU_SOURCE
|
||||||
endif
|
endif
|
||||||
ifeq ($(UNAME_S),Darwin)
|
ifeq ($(UNAME_S),Darwin)
|
||||||
BUILDIRD=./build
|
BUILDIRD=../ant-build
|
||||||
PF_FLAG=
|
PF_FLAG=
|
||||||
endif
|
endif
|
||||||
CFLAGS=-W -Wall -g -std=c99 -D DEBUG -D USE_DB $(PF_FLAG)
|
CFLAGS=-W -Wall -g -std=c99 -D DEBUG -D USE_DB $(PF_FLAG)
|
||||||
|
BIN
build/.DS_Store
vendored
BIN
build/.DS_Store
vendored
Binary file not shown.
BIN
build/plugins/.DS_Store
vendored
BIN
build/plugins/.DS_Store
vendored
Binary file not shown.
@ -91,6 +91,13 @@ dictionary decode_request(int client,const char* method,const char* query)
|
|||||||
//printf("Multi part form : %s\n", ctype);
|
//printf("Multi part form : %s\n", ctype);
|
||||||
request = decode_multi_part_request(client,ctype);
|
request = decode_multi_part_request(client,ctype);
|
||||||
}
|
}
|
||||||
|
else if(strstr(ctype,APP_JSON) > 0)
|
||||||
|
{
|
||||||
|
char* query = json_data_decode(client,clen);
|
||||||
|
request = dict();
|
||||||
|
dput(request,"json", strdup(query));
|
||||||
|
free(query);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
LOG("Un supported yet %s\n",ctype);
|
LOG("Un supported yet %s\n",ctype);
|
||||||
@ -306,6 +313,21 @@ dictionary decode_url_request(const char* query)
|
|||||||
free(str_copy);
|
free(str_copy);
|
||||||
return dic;
|
return dic;
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* Decode JSON query string to string
|
||||||
|
*/
|
||||||
|
char* json_data_decode(int client,int len)
|
||||||
|
{
|
||||||
|
char *query = (char*) malloc((len+1)*sizeof(char));
|
||||||
|
for (int i = 0; i < len; i++) {
|
||||||
|
recv(client, (query+i), 1, 0);
|
||||||
|
}
|
||||||
|
query[len]='\0';
|
||||||
|
//query = url_decode(query);
|
||||||
|
LOG("JSON Query %s\n", query);
|
||||||
|
return query;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* read the request as a string line format
|
* read the request as a string line format
|
||||||
* @param sock socket
|
* @param sock socket
|
||||||
|
@ -5,6 +5,7 @@
|
|||||||
|
|
||||||
#define FORM_URL_ENCODE "application/x-www-form-urlencoded"
|
#define FORM_URL_ENCODE "application/x-www-form-urlencoded"
|
||||||
#define FORM_MULTI_PART "multipart/form-data"
|
#define FORM_MULTI_PART "multipart/form-data"
|
||||||
|
#define APP_JSON "application/json"
|
||||||
#define PLUGIN_HANDLER "handler"
|
#define PLUGIN_HANDLER "handler"
|
||||||
|
|
||||||
struct plugin_entry {
|
struct plugin_entry {
|
||||||
@ -26,6 +27,7 @@ dictionary decode_url_request(const char* query);
|
|||||||
dictionary decode_request(int client,const char* method,const char* query);
|
dictionary decode_request(int client,const char* method,const char* query);
|
||||||
dictionary decode_multi_part_request(int,const char*);
|
dictionary decode_multi_part_request(int,const char*);
|
||||||
dictionary decode_cookie(const char*);
|
dictionary decode_cookie(const char*);
|
||||||
|
char* json_data_decode(int,int);
|
||||||
char* read_line(int sock);
|
char* read_line(int sock);
|
||||||
int read_buf(int sock,char* buf,int i);
|
int read_buf(int sock,char* buf,int i);
|
||||||
int execute_plugin(int client, const char *path,
|
int execute_plugin(int client, const char *path,
|
||||||
|
Binary file not shown.
Binary file not shown.
@ -320,11 +320,16 @@ char to_hex(char code) {
|
|||||||
return hex[code & 15];
|
return hex[code & 15];
|
||||||
}
|
}
|
||||||
unsigned hash(const char* key, int hash_size)
|
unsigned hash(const char* key, int hash_size)
|
||||||
|
{
|
||||||
|
unsigned hashval = simple_hash(key);
|
||||||
|
return hashval % hash_size;
|
||||||
|
}
|
||||||
|
unsigned simple_hash(const char* key)
|
||||||
{
|
{
|
||||||
unsigned hashval;
|
unsigned hashval;
|
||||||
for (hashval = 0; *key != '\0'; key++)
|
for (hashval = 0; *key != '\0'; key++)
|
||||||
hashval = *key + 31 * hashval;
|
hashval = *key + 31 * hashval;
|
||||||
return hashval % hash_size;
|
return hashval;
|
||||||
}
|
}
|
||||||
int is_file(const char* f)
|
int is_file(const char* f)
|
||||||
{
|
{
|
||||||
|
@ -80,5 +80,6 @@ char *url_encode(const char *str);
|
|||||||
char from_hex(char ch);
|
char from_hex(char ch);
|
||||||
char to_hex(char code);
|
char to_hex(char code);
|
||||||
unsigned hash(const char*, int);
|
unsigned hash(const char*, int);
|
||||||
|
unsigned simple_hash(const char*);
|
||||||
int is_file(const char* f);
|
int is_file(const char* f);
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
x
Reference in New Issue
Block a user