forked from enlightenment/efl
ecore/ecore_con - Add simple examples of ecore_con_url usage.
SVN revision: 61160
This commit is contained in:
parent
3f02227826
commit
8c3c7f0dac
|
@ -28,6 +28,8 @@ SRCS = \
|
|||
ecore_time_functions_example.c \
|
||||
ecore_job_example.c \
|
||||
ecore_con_lookup_example.c \
|
||||
ecore_con_url_headers_example.c \
|
||||
ecore_con_url_download_example.c \
|
||||
client_bench.c \
|
||||
server_bench.c \
|
||||
ecore_con_client_example.c \
|
||||
|
@ -57,9 +59,15 @@ pkglib_PROGRAMS += \
|
|||
ecore_timer_example \
|
||||
ecore_time_functions_example \
|
||||
ecore_pipe_simple_example \
|
||||
ecore_con_lookup_example
|
||||
ecore_con_lookup_example \
|
||||
ecore_con_url_headers_example \
|
||||
ecore_con_url_download_example
|
||||
|
||||
ecore_con_lookup_example_LDADD = $(ECOREBASELDADD) $(top_builddir)/src/lib/ecore_con/libecore_con.la
|
||||
ecore_animator_example_LDADD = $(ECOREBASELDADD) $(top_builddir)/src/lib/ecore_evas/libecore_evas.la
|
||||
ecore_con_lookup_example_LDADD = $(ECOREBASELDADD) $(top_builddir)/src/lib/ecore_con/libecore_con.la
|
||||
ecore_con_url_headers_example_LDADD = $(ECOREBASELDADD) $(top_builddir)/src/lib/ecore_con/libecore_con.la
|
||||
ecore_con_url_download_example_LDADD = $(ECOREBASELDADD) $(top_builddir)/src/lib/ecore_con/libecore_con.la
|
||||
ecore_con_server_simple_example_LDADD = $(ECOREBASELDADD) $(top_builddir)/src/lib/ecore_con/libecore_con.la
|
||||
|
||||
endif
|
||||
|
||||
|
|
|
@ -0,0 +1,110 @@
|
|||
#include <stdio.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <fcntl.h>
|
||||
#include <Ecore.h>
|
||||
#include <Ecore_Con.h>
|
||||
|
||||
struct _request {
|
||||
long size;
|
||||
};
|
||||
|
||||
static Eina_Bool
|
||||
_url_progress_cb(void *data, int type, void *event_info)
|
||||
{
|
||||
Ecore_Con_Event_Url_Progress *url_progress = event_info;
|
||||
float percent;
|
||||
|
||||
if (url_progress->down.total > 0)
|
||||
{
|
||||
struct _request *req = ecore_con_url_data_get(url_progress->url_con);
|
||||
req->size = url_progress->down.now;
|
||||
|
||||
percent = (url_progress->down.now / url_progress->down.total) * 100;
|
||||
printf("Total of download complete: %0.1f (%0.0f)%%\n",
|
||||
percent, url_progress->down.now);
|
||||
}
|
||||
|
||||
return EINA_TRUE;
|
||||
}
|
||||
|
||||
static Eina_Bool
|
||||
_url_complete_cb(void *data, int type, void *event_info)
|
||||
{
|
||||
Ecore_Con_Event_Url_Complete *url_complete = event_info;
|
||||
|
||||
struct _request *req = ecore_con_url_data_get(url_complete->url_con);
|
||||
int nbytes = ecore_con_url_received_bytes_get(url_complete->url_con);
|
||||
|
||||
printf("\n");
|
||||
printf("download completed with status code: %d\n", url_complete->status);
|
||||
printf("Total size of downloaded file: %ld bytes\n", req->size);
|
||||
printf("Total size of downloaded file: %ld bytes "
|
||||
"(from received_bytes_get)\n", nbytes);
|
||||
ecore_main_loop_quit();
|
||||
|
||||
return EINA_TRUE;
|
||||
}
|
||||
|
||||
int main(int argc, const char *argv[])
|
||||
{
|
||||
Ecore_Con_Url *ec_url = NULL;
|
||||
struct _request *req;
|
||||
int fd;
|
||||
const char *filename = "downloadedfile.dat";
|
||||
|
||||
if (argc < 2)
|
||||
{
|
||||
printf("need one parameter: <url>\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
fd = open(filename, O_CREAT|O_WRONLY|O_TRUNC, 0644);
|
||||
|
||||
if (fd == -1)
|
||||
{
|
||||
printf("error: could not open file for writing: \"%s\"\n",
|
||||
filename);
|
||||
return -1;
|
||||
}
|
||||
|
||||
ecore_init();
|
||||
ecore_con_init();
|
||||
ecore_con_url_init();
|
||||
|
||||
ec_url = ecore_con_url_new(argv[1]);
|
||||
if (!ec_url)
|
||||
{
|
||||
printf("error when creating ecore con url object.\n");
|
||||
goto end;
|
||||
}
|
||||
|
||||
req = malloc(sizeof(*req));
|
||||
req->size = 0;
|
||||
ecore_con_url_data_set(ec_url, req);
|
||||
|
||||
ecore_con_url_fd_set(ec_url, fd);
|
||||
|
||||
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);
|
||||
|
||||
if (!ecore_con_url_get(ec_url))
|
||||
{
|
||||
printf("could not realize request.\n");
|
||||
goto free_ec_url;
|
||||
}
|
||||
|
||||
ecore_main_loop_begin();
|
||||
|
||||
free_ec_url:
|
||||
free(req);
|
||||
ecore_con_url_free(ec_url);
|
||||
end:
|
||||
|
||||
close(fd);
|
||||
ecore_con_url_shutdown();
|
||||
ecore_con_shutdown();
|
||||
ecore_shutdown();
|
||||
|
||||
return 0;
|
||||
}
|
|
@ -0,0 +1,104 @@
|
|||
#include <stdio.h>
|
||||
#include <Eina.h>
|
||||
#include <Ecore.h>
|
||||
#include <Ecore_Con.h>
|
||||
|
||||
static Eina_Bool
|
||||
_url_data_cb(void *data, int type, void *event_info)
|
||||
{
|
||||
Ecore_Con_Event_Url_Data *url_data = event_info;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < url_data->size; i++)
|
||||
printf("%c", url_data->data[i]);
|
||||
|
||||
return EINA_TRUE;
|
||||
}
|
||||
|
||||
static Eina_Bool
|
||||
_url_complete_cb(void *data, int type, void *event_info)
|
||||
{
|
||||
Ecore_Con_Event_Url_Complete *url_complete = event_info;
|
||||
const Eina_List *headers, *l;
|
||||
char *str;
|
||||
|
||||
printf("\n");
|
||||
printf("download completed with status code: %d\n", url_complete->status);
|
||||
|
||||
headers = ecore_con_url_response_headers_get(url_complete->url_con);
|
||||
|
||||
EINA_LIST_FOREACH(headers, l, str)
|
||||
printf("header: %s\n", str);
|
||||
|
||||
ecore_main_loop_quit();
|
||||
|
||||
return EINA_TRUE;
|
||||
}
|
||||
|
||||
int main(int argc, const char *argv[])
|
||||
{
|
||||
Ecore_Con_Url *ec_url = NULL;
|
||||
const char *type;
|
||||
Eina_Bool r;
|
||||
|
||||
if (argc < 3)
|
||||
{
|
||||
printf("need at least two parameters: < POST|GET > <url1>\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
type = argv[1];
|
||||
|
||||
if (strcmp(type, "POST") && (strcmp(type, "GET")))
|
||||
{
|
||||
printf("only POST or GET are supported by this example.\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
ecore_init();
|
||||
ecore_con_init();
|
||||
ecore_con_url_init();
|
||||
|
||||
// check if requests are being pipelined, and set them if not:
|
||||
if (!ecore_con_url_pipeline_get())
|
||||
ecore_con_url_pipeline_set(EINA_TRUE);
|
||||
|
||||
ec_url = ecore_con_url_custom_new(argv[2], type);
|
||||
if (!ec_url)
|
||||
{
|
||||
printf("error when creating ecore con url object.\n");
|
||||
goto end;
|
||||
}
|
||||
|
||||
ecore_event_handler_add(ECORE_CON_EVENT_URL_DATA, _url_data_cb, NULL);
|
||||
ecore_event_handler_add(ECORE_CON_EVENT_URL_COMPLETE, _url_complete_cb, NULL);
|
||||
|
||||
ecore_con_url_additional_header_add(ec_url, "User-Agent", "blablabla");
|
||||
ecore_con_url_verbose_set(ec_url, EINA_TRUE);
|
||||
|
||||
ecore_con_url_httpauth_set(ec_url, "user", "password", EINA_FALSE);
|
||||
|
||||
ecore_con_url_time(ec_url, ECORE_CON_URL_TIME_IFMODSINCE, 0);
|
||||
|
||||
if (!strcmp(type, "GET"))
|
||||
r = ecore_con_url_get(ec_url);
|
||||
else
|
||||
r = ecore_con_url_post(ec_url, NULL, 0, NULL);
|
||||
|
||||
if (!r)
|
||||
{
|
||||
printf("could not realize request.\n");
|
||||
goto free_ec_url;
|
||||
}
|
||||
|
||||
ecore_main_loop_begin();
|
||||
|
||||
free_ec_url:
|
||||
ecore_con_url_free(ec_url);
|
||||
end:
|
||||
ecore_con_url_shutdown();
|
||||
ecore_con_shutdown();
|
||||
ecore_shutdown();
|
||||
|
||||
return 0;
|
||||
}
|
Loading…
Reference in New Issue