param is now functional
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
@@ -227,10 +227,9 @@ restd_server_t *restd_server_new(void)
|
|||||||
|
|
||||||
// Initialize instance.
|
// Initialize instance.
|
||||||
server->options = qhashtbl(0, 0);
|
server->options = qhashtbl(0, 0);
|
||||||
server->stats = qhashtbl(100, QHASHTBL_THREADSAFE);
|
|
||||||
server->hooks = qlist(0);
|
server->hooks = qlist(0);
|
||||||
//server->call_hooks = call_hooks;
|
//server->call_hooks = call_hooks;
|
||||||
if (server->options == NULL || server->stats == NULL || server->hooks == NULL)
|
if (server->options == NULL || server->hooks == NULL)
|
||||||
{
|
{
|
||||||
restd_server_free(server);
|
restd_server_free(server);
|
||||||
return NULL;
|
return NULL;
|
||||||
@@ -271,10 +270,7 @@ void restd_server_free(restd_server_t *server)
|
|||||||
{
|
{
|
||||||
server->options->free(server->options);
|
server->options->free(server->options);
|
||||||
}
|
}
|
||||||
if (server->stats)
|
|
||||||
{
|
|
||||||
server->stats->free(server->stats);
|
|
||||||
}
|
|
||||||
if (server->hooks)
|
if (server->hooks)
|
||||||
{
|
{
|
||||||
qlist_t *tbl = server->hooks;
|
qlist_t *tbl = server->hooks;
|
||||||
@@ -648,12 +644,6 @@ static void close_server(restd_server_t *server)
|
|||||||
server->notify_buffer = NULL;
|
server->notify_buffer = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (server->listener)
|
|
||||||
{
|
|
||||||
evconnlistener_free(server->listener);
|
|
||||||
server->listener = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (server->thread)
|
if (server->thread)
|
||||||
{
|
{
|
||||||
void *retval = NULL;
|
void *retval = NULL;
|
||||||
@@ -989,57 +979,10 @@ bool manage_hook(restd_hook_t *hook, restd_resp_t *response, const char *request
|
|||||||
qlist_free(uri_fragments);
|
qlist_free(uri_fragments);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
printf("rate: path fragment: %ld != uri_fragment: %ld\n", qlist_size(hook->path_fragments), qlist_size(uri_fragments));
|
|
||||||
}
|
|
||||||
|
|
||||||
qlist_free(uri_fragments);
|
qlist_free(uri_fragments);
|
||||||
}
|
}
|
||||||
#if 0
|
|
||||||
|
|
||||||
qlist_obj_t obj;
|
|
||||||
|
|
||||||
// Init Hook.
|
|
||||||
hook = restd_hook_new();
|
|
||||||
|
|
||||||
hook->method = method;
|
|
||||||
hook->path = (path) ? strdup(path) : NULL;
|
|
||||||
hook->cb = cb;
|
|
||||||
hook->userdata = userdata;
|
|
||||||
hook->path_fragments = qstrtokenizer(path, "/");
|
|
||||||
|
|
||||||
// Split URI and detect parameter and action.
|
|
||||||
memset((void *)&obj, 0, sizeof(obj));
|
|
||||||
while (qlist_getnext(hook->path_fragments, &obj, true))
|
|
||||||
{
|
|
||||||
|
|
||||||
int i = 0;
|
|
||||||
int pos = -1;
|
|
||||||
while (hook->path[i])
|
|
||||||
{
|
|
||||||
if (hook->path[i] == ':')
|
|
||||||
pos = i;
|
|
||||||
i++;
|
|
||||||
}
|
|
||||||
if (pos != -1 && contain(hook->path, request_path, pos))
|
|
||||||
{
|
|
||||||
const char *buffer = &request_path[pos];
|
|
||||||
// printf("buffer: <%s>\n", buffer);
|
|
||||||
// TODO conn->id = atoi(buffer);
|
|
||||||
hook->cb(response, hook->userdata);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
int rett = strcmp(hook->path, request_path);
|
|
||||||
if (rett == 0)
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -40,11 +40,7 @@ typedef struct restd_server_s restd_server_t;
|
|||||||
typedef struct restd_hook_s restd_hook_t;
|
typedef struct restd_hook_s restd_hook_t;
|
||||||
typedef struct restd_resp_s restd_resp_t;
|
typedef struct restd_resp_s restd_resp_t;
|
||||||
|
|
||||||
/**
|
|
||||||
* User callback(hook) prototype.
|
|
||||||
*/
|
|
||||||
typedef int (*restd_callback)(restd_resp_t *response, void *arg);
|
typedef int (*restd_callback)(restd_resp_t *response, void *arg);
|
||||||
typedef void (*restd_userdata_free_cb)(void *conn, void *userdata);
|
|
||||||
|
|
||||||
/*------------------------------- INCLUDES ----------------------------------*/
|
/*------------------------------- INCLUDES ----------------------------------*/
|
||||||
|
|
||||||
@@ -106,15 +102,12 @@ struct restd_server_s
|
|||||||
pthread_t *thread; /*!< thread object. not null if server runs as a thread */
|
pthread_t *thread; /*!< thread object. not null if server runs as a thread */
|
||||||
|
|
||||||
qhashtbl_t *options; /*!< server options */
|
qhashtbl_t *options; /*!< server options */
|
||||||
qhashtbl_t *stats; /*!< internal statistics */
|
|
||||||
qlist_t *hooks; /*!< list of registered hooks */
|
qlist_t *hooks; /*!< list of registered hooks */
|
||||||
struct evconnlistener *listener; /*!< listener */
|
|
||||||
struct event_base *evbase; /*!< event base */
|
struct event_base *evbase; /*!< event base */
|
||||||
struct evhttp *evhttp;
|
struct evhttp *evhttp;
|
||||||
|
|
||||||
struct bufferevent *notify_buffer; /*!< internal notification channel */
|
struct bufferevent *notify_buffer; /*!< internal notification channel */
|
||||||
|
|
||||||
restd_callback request_handler;
|
|
||||||
restd_callback error_handler;
|
restd_callback error_handler;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -32,14 +32,14 @@
|
|||||||
#define kerror_body "{\"status\":\"error\"}"
|
#define kerror_body "{\"status\":\"error\"}"
|
||||||
|
|
||||||
#define ksuccess_put_param1 "{ \"id\": 1 }"
|
#define ksuccess_put_param1 "{ \"id\": 1 }"
|
||||||
#define ksuccess_put_param2 "{ \"id\":\"1977\",\"action\":\"todo\" }"
|
#define ksuccess_put_param2 "{ \"year\": 1977, \"action\": \"todo\" }"
|
||||||
|
|
||||||
#define kserver_port "7777"
|
#define kserver_port "7777"
|
||||||
#define kapi_test_get "/api/v1/test_get"
|
#define kapi_test_get "/api/v1/test_get"
|
||||||
|
|
||||||
#define kapi_test_put_id1 "/api/v1/test_put/:id"
|
#define kapi_test_put_id1 "/api/v1/test_put/:id"
|
||||||
#define kapi_test_put_id1_body "/api/v1/test_put/1"
|
#define kapi_test_put_id1_body "/api/v1/test_put/1"
|
||||||
#define kapi_test_put_id2 "/api/v1/test_put/:id/todo"
|
#define kapi_test_put_id2 "/api/v1/test_put/:year/todo"
|
||||||
#define kapi_test_put_id2_body "/api/v1/test_put/1977/todo"
|
#define kapi_test_put_id2_body "/api/v1/test_put/1977/todo"
|
||||||
|
|
||||||
#define kpost_method "POST"
|
#define kpost_method "POST"
|
||||||
@@ -227,7 +227,7 @@ int exec_request(const char *request, const char *path, int expected_code, const
|
|||||||
{
|
{
|
||||||
res = strcmp(expected_body, resp_body);
|
res = strcmp(expected_body, resp_body);
|
||||||
}
|
}
|
||||||
// printf ("body: %s != expected_body: %s\n", resp_body, expected_body);
|
//printf ("body: %s != expected_body: %s\n", resp_body, expected_body);
|
||||||
if (res != 0)
|
if (res != 0)
|
||||||
{
|
{
|
||||||
ret = 2;
|
ret = 2;
|
||||||
@@ -518,9 +518,13 @@ TEST("Rest - create start access to rest hook with params free\t")
|
|||||||
|
|
||||||
sleep(1);
|
sleep(1);
|
||||||
|
|
||||||
PRINTLN("\n - Param1");
|
//PRINTLN("\n - Param1");
|
||||||
ret = exec_request(kput_method, "http://localhost:" kserver_port kapi_test_put_id1_body, 200, "", ksuccess_put_param1);
|
ret = exec_request(kput_method, "http://localhost:" kserver_port kapi_test_put_id1_body, 200, "", ksuccess_put_param1);
|
||||||
ASSERT_EQUAL_INT(ret, 0);
|
ASSERT_EQUAL_INT(ret, 0);
|
||||||
|
|
||||||
|
//PRINTLN("\n - Param2");
|
||||||
|
ret = exec_request(kput_method, "http://localhost:" kserver_port kapi_test_put_id2_body, 200, "", ksuccess_put_param2);
|
||||||
|
ASSERT_EQUAL_INT(ret, 0);
|
||||||
|
|
||||||
restd_server_free(rest_server);
|
restd_server_free(rest_server);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user