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);
}