\hypertarget{ecore_con_url_headers_example_8c-example}{}\section{ecore\+\_\+con\+\_\+url\+\_\+headers\+\_\+example.\+c}
Shows how to make G\+E\+T or P\+O\+S\+T requests using an Ecore\+\_\+\+Con\+\_\+\+Url object, and make use of most of its A\+P\+I. See the complete example description at \hyperlink{ecore_con_url_headers_example_c}{Ecore\+\_\+\+Con\+\_\+\+Url -\/ customizing a request}


\begin{DoxyCodeInclude}
\textcolor{comment}{//Compile with:}
\textcolor{comment}{// gcc -o ecore\_con\_url\_headers\_example ecore\_con\_url\_headers\_example.c `pkg-config --libs --cflags ecore
       ecore-con eina`}

\textcolor{preprocessor}{#include <stdio.h>}
\textcolor{preprocessor}{#include <\hyperlink{Eina_8h}{Eina.h}>}
\textcolor{preprocessor}{#include <Ecore.h>}
\textcolor{preprocessor}{#include <Ecore\_Con.h>}

\textcolor{keyword}{static} \hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\_Bool}
\_url\_data\_cb(\textcolor{keywordtype}{void} *data EINA\_UNUSED, \textcolor{keywordtype}{int} type EINA\_UNUSED, \textcolor{keywordtype}{void} *event\_info)
\{
   \hyperlink{struct__Ecore__Con__Event__Url__Data}{Ecore\_Con\_Event\_Url\_Data} *url\_data = event\_info;
   \textcolor{keywordtype}{int} i;

   \textcolor{keywordflow}{for} (i = 0; i < url\_data->\hyperlink{struct__Ecore__Con__Event__Url__Data_a1d4725aa77f3875cc3405597a5fbff91}{size}; i++)
     printf(\textcolor{stringliteral}{"%c"}, url\_data->\hyperlink{struct__Ecore__Con__Event__Url__Data_aaa4c4dbc6575b071164f8152a7808268}{data}[i]);

   \textcolor{keywordflow}{return} \hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\_TRUE};
\}

\textcolor{keyword}{static} \hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\_Bool}
\_url\_complete\_cb(\textcolor{keywordtype}{void} *data EINA\_UNUSED, \textcolor{keywordtype}{int} type EINA\_UNUSED, \textcolor{keywordtype}{void} *event\_info)
\{
   \hyperlink{struct__Ecore__Con__Event__Url__Complete}{Ecore\_Con\_Event\_Url\_Complete} *url\_complete = event\_info;
   \textcolor{keyword}{const} \hyperlink{struct__Eina__List}{Eina\_List} *headers, *l;
   \textcolor{keywordtype}{char} *str;

   printf(\textcolor{stringliteral}{"\(\backslash\)n"});
   printf(\textcolor{stringliteral}{"download completed with status code: %d\(\backslash\)n"}, url\_complete->\hyperlink{struct__Ecore__Con__Event__Url__Complete_ab842caa1615a911c3578e0dfeae5f773}{status});

   headers = \hyperlink{group__Ecore__Con__Url__Group_gad2b33c58653c013adbd0953555081fc6}{ecore\_con\_url\_response\_headers\_get}(url\_complete->
      \hyperlink{struct__Ecore__Con__Event__Url__Complete_a58335ec0eac21f9c0828695922807039}{url\_con});

   \hyperlink{group__Eina__List__Group_gad02f746a08ee0b12b7ed66d4bc0d71d8}{EINA\_LIST\_FOREACH}(headers, l, str)
     printf("header: %s\(\backslash\)n", str);

   \hyperlink{group__Ecore__Main__Loop__Group_ga95cf8e97dff0716433c2c5474d606a98}{ecore\_main\_loop\_quit}();

   return EINA\_TRUE;
\}

\textcolor{keywordtype}{int}
main(\textcolor{keywordtype}{int} argc, const \textcolor{keywordtype}{char} *argv[])
\{
   Ecore\_Con\_Url *ec\_url = NULL;
   \textcolor{keyword}{const} \textcolor{keywordtype}{char} *type;
   \hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\_Bool} r;

   \textcolor{keywordflow}{if} (argc < 3)
     \{
        printf(\textcolor{stringliteral}{"need at least two parameters: < POST|GET >  <url1>\(\backslash\)n"});
        \textcolor{keywordflow}{return} -1;
     \}

   type = argv[1];

   \textcolor{keywordflow}{if} (strcmp(type, \textcolor{stringliteral}{"POST"}) && (strcmp(type, \textcolor{stringliteral}{"GET"})))
     \{
        printf(\textcolor{stringliteral}{"only POST or GET are supported by this example.\(\backslash\)n"});
        \textcolor{keywordflow}{return} -1;
     \}

   \hyperlink{group__Ecore__Init__Group_ga77757609684a2c922dc5ec398274751b}{ecore\_init}();
   \hyperlink{group__Ecore__Con__Events__Group_gacf5ecf42c516bb9c8b6759721e9559bd}{ecore\_con\_init}();
   \hyperlink{group__Ecore__Con__Url__Group_gac3fbeaf9cde529362e4567fc37e45c9f}{ecore\_con\_url\_init}();

   \textcolor{comment}{// check if requests are being pipelined, and set them if not:}
   \textcolor{keywordflow}{if} (!\hyperlink{group__Ecore__Con__Url__Group_ga1abb9bf94b5d36f19b0809bb8639e17b}{ecore\_con\_url\_pipeline\_get}())
     \hyperlink{group__Ecore__Con__Url__Group_ga39a8588deb7f759d7808496c477fe28e}{ecore\_con\_url\_pipeline\_set}(EINA\_TRUE);

   ec\_url = \hyperlink{group__Ecore__Con__Url__Group_ga2baf5b650b0926f6abd9bd50871ec8eb}{ecore\_con\_url\_custom\_new}(argv[2], type);
   \textcolor{keywordflow}{if} (!ec\_url)
     \{
        printf(\textcolor{stringliteral}{"error when creating ecore con url object.\(\backslash\)n"});
        \textcolor{keywordflow}{goto} end;
     \}

   \hyperlink{group__Ecore__Event__Group_gae75b0b1b2c50e73b8e42afc628b00a62}{ecore\_event\_handler\_add}(\hyperlink{group__Ecore__Con__Events__Group_ga6ebe51236dac1bc1255b5b390cc9e6e3}{ECORE\_CON\_EVENT\_URL\_DATA}, 
      \_url\_data\_cb, NULL);
   \hyperlink{group__Ecore__Event__Group_gae75b0b1b2c50e73b8e42afc628b00a62}{ecore\_event\_handler\_add}(\hyperlink{group__Ecore__Con__Events__Group_gae90b9b857e1e0adc0c7f24e7ccecb44b}{ECORE\_CON\_EVENT\_URL\_COMPLETE},
       \_url\_complete\_cb, NULL);

   \hyperlink{group__Ecore__Con__Url__Group_ga1f9939c84aa5128d5197f1939d8cffeb}{ecore\_con\_url\_additional\_header\_add}(ec\_url, \textcolor{stringliteral}{"User-Agent"}, \textcolor{stringliteral}{"blablabla"}
      );
   \hyperlink{group__Ecore__Con__Url__Group_ga45a962a3b08b35fb5c1468ebe643ea2b}{ecore\_con\_url\_verbose\_set}(ec\_url, EINA\_TRUE);

   \hyperlink{group__Ecore__Con__Url__Group_ga9834a4bf039957602a8966ae4d628ffb}{ecore\_con\_url\_httpauth\_set}(ec\_url, \textcolor{stringliteral}{"user"}, \textcolor{stringliteral}{"password"}, 
      \hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{EINA\_FALSE});

   \hyperlink{group__Ecore__Con__Url__Group_gac93f0e4c37e17b87e95212887a097f26}{ecore\_con\_url\_time}(ec\_url, \hyperlink{group__Ecore__Con__Url__Group_gga7fd1cb32a295b11143fb1660dc8bcd6bad3aba66e3ab06bb1c66942641a0b2d29}{ECORE\_CON\_URL\_TIME\_IFMODSINCE},
       0);

   \textcolor{keywordflow}{if} (!strcmp(type, \textcolor{stringliteral}{"GET"}))
     r = \hyperlink{group__Ecore__Con__Url__Group_ga46f75358256eec26bd99eef96b25ffa8}{ecore\_con\_url\_get}(ec\_url);
   \textcolor{keywordflow}{else}
     r = \hyperlink{group__Ecore__Con__Url__Group_gaa9da5f3b9c091cf1a755136c5797d39c}{ecore\_con\_url\_post}(ec\_url, NULL, 0, NULL);

   \textcolor{keywordflow}{if} (!r)
     \{
        printf(\textcolor{stringliteral}{"could not realize request.\(\backslash\)n"});
        \textcolor{keywordflow}{goto} free\_ec\_url;
     \}

   \hyperlink{group__Ecore__Main__Loop__Group_gaf103b9f668bb3e4fed12e52c6180132d}{ecore\_main\_loop\_begin}();

free\_ec\_url:
   \hyperlink{group__Ecore__Con__Url__Group_ga711510886aaece16f5dee6903c603fb2}{ecore\_con\_url\_free}(ec\_url);
end:
   \hyperlink{group__Ecore__Con__Url__Group_ga0da252aa2c919722894dd41cc6549435}{ecore\_con\_url\_shutdown}();
   \hyperlink{group__Ecore__Con__Events__Group_gaccfd8dd2a1187b71339b5cc39dc83938}{ecore\_con\_shutdown}();
   \hyperlink{group__Ecore__Init__Group_ga768298b932f18d7e7593a447493e5cde}{ecore\_shutdown}();

   \textcolor{keywordflow}{return} 0;
\}

\end{DoxyCodeInclude}
 