ua_easy_run - quickly perform a transfer#
-
ORCAcode ua_easy_run(struct user_agent *ua, struct ua_info *info, struct ua_resp_handle *handle, struct ua_conn_attr *attr)#
Perform a blocking REST transfer.
Note
This is an easy, yet highly abstracted way of performing requests. If a higher control is necessary, users are better off using the functions of
ua_conn_xxx()
family.- Parameters:
ua – the User-Agent handle created with ua_init()
info – optional informational handle on how the request went
handle – the optional response callbacks, can be NULL
attr – connection attributes
body – the optional request body, can be NULL
method – the HTTP method of this transfer (GET, POST, …)
endpoint – the endpoint to be appended to the URL set at ua_set_url()
- Returns:
ORCAcode for how the operation went, ORCA_OK means nothing out of the ordinary
Response handle#
-
typedef void (*ua_load_obj_cb)(char *str, size_t len, void *p_obj)#
Callback for object to be loaded by api response.
-
struct ua_resp_handle#
User callback to be called on request completion.
Public Members
-
ua_load_obj_cb ok_cb#
callback called when a successful transfer occurs
-
void *ok_obj#
the pointer to be passed to ok_cb
-
ua_load_obj_cb err_cb#
callback called when a failed transfer occurs
-
void *err_obj#
the pointer to be passed to err_cb
-
ua_load_obj_cb ok_cb#
Example#
void done(char *body, size_t len, void *data)
{
printf("Success! Receive a response body of %zu bytes!\n", len);
}
void fail(char *body, size_t len, void *data)
{
printf("Failure! Receive a response body of %zu bytes!\n", len);
}
int main(void)
{
struct user_agent *ua = ua_init(NULL);
ua_set_url(ua, "https://www.example.com");
struct ua_conn_attr conn_attr = { .method = HTTP_GET };
struct ua_resp_handle handle = { .ok_cb = &done, .err_cb = &fail };
ua_easy_run(ua, NULL, &handle, &conn_attr);
ua_cleanup(ua);
}