{{page>index}} ------- ===== Basic usage of Ecore_Con_Url ===== The Ecore URL connection library is an HTTP abstraction. It makes it easy to perform HTTP requests like ''POST'', ''GET'', … === Table of Contents === * [[#Initialisation_and_URL_set|Initialisation and URL set]] * [[#Download_a_file|Download a file]] * [[#Ecore_File_usage|Ecore File usage]] ==== Initialisation and URL set ==== First, we need to initialise the Ecore URL connection library and create a ''Ecore_Con_Url'' object. The Ecore_Con library shall also be initialized as described in the previous chapter. Ecore_Con_Url *ec_url = NULL; // Initiate Ecore Url connection library. ecore_con_url_init(); // Create the Ecore_Con_Url object passing the URL that will receive the // requests as an argument. ec_url = ecore_con_url_new("http://www.enlightenment.org"); ''ecore_con_url_new()'' will return NULL on error, so be careful to check the returned object before using it. The URL can be modified using ''ecore_con_url_url_set()''. Here we will set it to [[https://docs.enlightenment.org/efl/1.15.0/index.html]]. Eina_Bool ret = ecore_con_url_url_set(ec_url, "https://docs.enlightenment.org/efl/1.15.0/index.html"); The ''return'' value will contain ''EINA_FALSE'' if the new URL cannot be set. ==== Download a file ==== To download a file, we first need to create a local file and open it with write access. We can then give the file descriptor to the Ecore URL connection library so that it can write to it. We can then register a callback on the following events: ^ ''ECORE_CON_EVENT_URL_PROGRESS'' |happens when the URL object transfer has made progress. \\ It gives the total and current data status of the transfer (upload and download).| ^ ''ECORE_CON_EVENT_URL_COMPLETE'' |happens when the URL object has completed a transfer. \\ It returns the HTTP status code of the operation.| ^ ''ECORE_CON_EVENT_URL_DATA'' |happens when the URL object has received data. \\ It gives the size of the received data and a buffer containing the data.| ''ECORE_CON_EVENT_URL_DATA'' event will not be emitted if a file has been set to receive the response data with ''ecore_con_url_fd_set()''. Here we only register callbacks for the complete and progress events. static Eina_Bool _url_progress_cb(void *data __UNUSED__, int type __UNUSED__, void *event_info) { Ecore_Con_Event_Url_Progress *url_progress = event_info; printf("Download progress : %d\n", (url_progress->down.now / url_progress->down.total) * 100); return EINA_TRUE; } static Eina_Bool _url_complete_cb(void *data __UNUSED__, int type __UNUSED__, void *event_info) { Ecore_Con_Event_Url_Complete *url_complete = event_info; printf("Download completed with status: %d\n", url_complete->status); return EINA_TRUE; } ecore_event_handler_add(ECORE_CON_EVENT_URL_PROGRESS, _url_progress_cb, NULL); ecore_event_handler_add(ECORE_CON_EVENT_URL_COMPLETE, _url_complete_cb, NULL); Once the URL is set up and the callbacks are registered, we can launch the GET request. ecore_con_url_get(ec_url); The status of the request will be shown in the ''_url_complete_cb()'' and the progress will be reported by the ''_url_progress_cb()'' function. ==== Ecore File usage ==== The Ecore File library provides an abstraction of the Ecore URL connection library. All that we described previously can be done with one function call. Ecore_File_Download_Job *jobret; ecore_file_download(http://www.enlightenment.org, file: _url_complete_cb, _url_progress_cb, NULL, &job_ret); We first pass the url string we want to download, the local filename where it needs to be written, then the complete and progress callbacks with the data to pass to them (here ''NULL''). Finally, it takes a ''Ecore_File_Download_Job'' structure that is filled by the function and which can be used with ''ecore_file_download_abort()'' to cancel the current download. ------- {{page>index}}