2 * Copyright (C) 2012 Toni Gundogdu <legatvs@gmail.com>
4 * This file is part of libquvi <http://quvi.sourceforge.net/>.
6 * This library is free software: you can redistribute it and/or
7 * modify it under the terms of the GNU Affero General Public
8 * License as published by the Free Software Foundation, either
9 * version 3 of the License, or (at your option) any later version.
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU Affero General Public License for more details.
16 * You should have received a copy of the GNU Affero General
17 * Public License along with this library. If not, see
18 * <http://www.gnu.org/licenses/>.
23 #include <glib/gi18n-lib.h>
25 #include <curl/curl.h>
30 #include "_quvi_media_s.h"
31 #include "_quvi_net_s.h"
33 #include "curl/autoproxy.h"
34 #include "curl/temp.h"
36 static void _set_opts(_quvi_net_t n
, _c_temp_t t
, CURL
*c
)
38 typedef curl_write_callback cwc
;
40 curl_easy_setopt(c
, CURLOPT_WRITEFUNCTION
, (cwc
) c_temp_wrcb
);
41 curl_easy_setopt(c
, CURLOPT_URL
, n
->url
.addr
->str
);
42 curl_easy_setopt(c
, CURLOPT_WRITEDATA
, t
);
43 /* CURLOPT_ENCODING -> CURLOPT_ACCEPT_ENCODING 7.21.6+ */
44 curl_easy_setopt(c
, CURLOPT_ENCODING
, "");
46 c_autoproxy(n
->handle
.quvi
, n
->url
.addr
->str
);
49 static const gchar
*_EOK
= N_("The server responded with the code %03ld");
51 static QuviError
_fetch(_quvi_net_t n
, CURL
*c
)
56 curlcode
= curl_easy_perform(c
);
57 curl_easy_getinfo(c
, CURLINFO_RESPONSE_CODE
, &n
->status
.resp_code
);
61 if (curlcode
== CURLE_OK
&& n
->status
.resp_code
== 200)
65 if (curlcode
== CURLE_OK
)
67 g_string_printf(n
->status
.errmsg
,
68 g_dgettext(GETTEXT_PACKAGE
, _EOK
),
73 const gchar
*s
= curl_easy_strerror(curlcode
);
74 const glong c
= n
->status
.resp_code
;
75 const gint cc
= curlcode
;
76 #define _ENO "%s (HTTP/%03ld, cURL=0x%03x)"
77 g_string_printf(n
->status
.errmsg
, _ENO
, s
, c
, cc
);
80 rc
= QUVI_ERROR_CALLBACK
;
85 QuviError
c_fetch(_quvi_net_t n
)
91 c
= n
->handle
.quvi
->handle
.curl
;
98 g_string_assign(n
->fetch
.content
, t
->p
);
106 /* vim: set ts=2 sw=2 tw=72 expandtab: */