annotate src/lastfm/lastfm.c @ 972:cf7021ca4e7b trunk

[svn] Add lastfm:// transport, an abstract VFS class which derives from curl to provide lastfm radio support. Written by majeru with some cleanups by me. Most last.fm metadata support isn't yet implemented, however, and will need to be done by majeru. ;)
author nenolod
date Sun, 22 Apr 2007 04:16:08 -0700
parents
children 8bdd0d76a0ca
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
972
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
1 /* Audacious
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
2 * Copyright (c) 2007 Cristi Magherusan
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
3 *
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
4 * This program is free software; you can redistribute it and/or modify
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
5 * it under the terms of the GNU General Public License as published by
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
6 * the Free Software Foundation; either version 2 of the License, or
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
7 * (at your option) any later version.
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
8 *
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
9 * This program is distributed in the hope that it will be useful,
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
12 * GNU General Public License for more details.
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
13 *
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
14 * You should have received a copy of the GNU General Public License
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
15 * along with this program; if not, write to the Free Software
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
16 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
17 */
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
18
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
19 #include <audacious/vfs.h>
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
20 #include <audacious/plugin.h>
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
21 #include <audacious/configdb.h>
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
22
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
23 #include <curl/curl.h>
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
24 #include <glib.h>
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
25
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
26
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
27 //#define LASTFM_HS_URL "http://ws.audioscrobbler.com/radio/handshake.php"
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
28 #define LASTFM_CURL_TIMEOUT 5
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
29 //#define DEBUG 1
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
30 static gchar *lastfm_session_id = NULL, *lastfm_mp3_stream_url = NULL, *lastfm_station_name = NULL;
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
31 CURL *curl = NULL;
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
32
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
33 static size_t lastfm_store_res(void *ptr, size_t size, size_t nmemb, void *udata)
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
34 {
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
35 GString *data = (GString *) udata;
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
36 g_string_append_len(data, ptr, nmemb);
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
37 return size * nmemb;
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
38 }
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
39
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
40 static gboolean setup_curl()
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
41 {
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
42 curl = curl_easy_init();
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
43 if (curl != NULL)
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
44 {
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
45 curl_easy_setopt(curl, CURLOPT_NOPROGRESS, 1);
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
46 curl_easy_setopt(curl, CURLOPT_USERAGENT, "Audacious");
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
47 curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, lastfm_store_res);
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
48 curl_easy_setopt(curl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0);
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
49 curl_easy_setopt(curl, CURLOPT_NOSIGNAL, 1);
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
50 curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, LASTFM_CURL_TIMEOUT);
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
51 return TRUE;
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
52 }
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
53 return FALSE;
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
54 }
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
55
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
56 static gchar *lastfm_login(CURL * curl)
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
57 {
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
58 /*gets the session ID in lastfm_session_id and returns the URL to be played
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
59 make a URI like this one and use curl to open it:
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
60
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
61 http://ws.audioscrobbler.com/radio/handshake.php?
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
62 version=1.1.1&platform=linux&username=<yourlastfmusername>&
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
63 passwordmd5=<yourmd5sum>&debug=0&partner=
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
64
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
65 then parse the returned data
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
66 */
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
67
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
68 gint status, i;
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
69 gchar buf[4096], **split = NULL, *lastfm_media_url = NULL;
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
70 GString *res = g_string_new(NULL);
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
71 ConfigDb *cfgfile = NULL;
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
72 char *username = NULL, *password = NULL;
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
73
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
74 if ((cfgfile = bmp_cfg_db_open()) != NULL)
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
75 {
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
76 bmp_cfg_db_get_string(cfgfile, "audioscrobbler", "username", &username);
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
77 bmp_cfg_db_get_string(cfgfile, "audioscrobbler", "password", &password);
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
78 }
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
79
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
80 if (username != NULL && password != NULL)
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
81 snprintf(buf, sizeof(buf), "http://ws.audioscrobbler.com/radio/handshake.php?version=1.1.1&platform=linux&username=%s&passwordmd5=%s&debug=0&language=jp", username, password);
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
82 else
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
83 return NULL;
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
84
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
85 curl_easy_setopt(curl, CURLOPT_URL, buf);
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
86 curl_easy_setopt(curl, CURLOPT_WRITEDATA, res);
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
87 status = curl_easy_perform(curl);
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
88 curl_easy_cleanup(curl);
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
89
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
90 if (status == CURLE_OK)
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
91 {
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
92 split = g_strsplit(res->str, "\n", 7);
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
93
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
94 for (i = 0; split && split[i]; i++)
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
95 {
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
96 if (g_str_has_prefix(split[i], "session="))
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
97 lastfm_session_id = g_strndup(split[i] + 8, 32);
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
98 else if (g_str_has_prefix(split[i], "stream_url="))
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
99 lastfm_media_url = g_strdup(split[i] + 11);
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
100 }
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
101 }
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
102
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
103 g_strfreev(split);
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
104 g_string_erase(res, 0, -1);
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
105 return lastfm_media_url;
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
106 }
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
107
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
108 static gboolean lastfm_adjust(const gchar * url)
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
109 {
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
110 gchar tmp[4096], **split = NULL;
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
111 gboolean ret = FALSE;
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
112 int status, i;
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
113
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
114 snprintf(tmp, sizeof(tmp), "http://ws.audioscrobbler.com/radio/adjust.php?session=%s&url=%s&debug=0", lastfm_session_id, url);
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
115 curl_easy_reset(curl);
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
116 setup_curl();
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
117 curl_easy_setopt(curl, CURLOPT_URL, tmp);
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
118
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
119 puts("am setat tmp, setez res");
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
120
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
121 GString *res = g_string_new(NULL);
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
122 curl_easy_setopt(curl, CURLOPT_WRITEDATA, res);
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
123 status = curl_easy_perform(curl);
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
124 curl_easy_cleanup(curl);
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
125
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
126 puts(res->str);
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
127 if (status == CURLE_OK)
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
128 {
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
129 split = g_strsplit(res->str, "\n", 7);
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
130
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
131 for (i = 0; split && split[i]; i++)
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
132 {
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
133 if (g_str_has_prefix(split[i], "response=OK"))
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
134 ret = TRUE;
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
135 else if (g_str_has_prefix(split[i], "stationname="))
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
136 lastfm_station_name = g_strdup(split[i] + 12);
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
137 }
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
138 }
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
139
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
140 if (ret == TRUE)
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
141 puts("response=OK");
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
142
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
143 g_string_erase(res, 0, -1);
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
144
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
145 return ret;
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
146 }
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
147
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
148 /* TODO: it may be a good idea to store last.fm auth data here instead of in
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
149 * the global scope. --nenolod
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
150 */
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
151 typedef struct {
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
152 VFSFile *proxy_fd;
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
153 } LastFMFile;
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
154
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
155 VFSFile *lastfm_vfs_fopen_impl(const gchar * path, const gchar * mode)
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
156 {
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
157 VFSFile *file;
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
158 LastFMFile *handle;
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
159
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
160 if (!lastfm_adjust(path))
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
161 puts("Cannot tune to given channel");
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
162 else
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
163 puts("Adjust completed OK");
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
164
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
165 file = g_new0(VFSFile, 1);
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
166 handle = g_new0(LastFMFile, 1);
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
167
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
168 puts("Opening stream with vfs_fopen");
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
169 handle->proxy_fd = vfs_fopen(lastfm_mp3_stream_url, mode);
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
170 file->handle = handle;
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
171
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
172 return file;
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
173 }
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
174
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
175 gint lastfm_vfs_fclose_impl(VFSFile * file)
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
176 {
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
177 gint ret = 0;
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
178 LastFMFile *handle;
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
179
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
180 if (file == NULL)
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
181 return -1;
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
182
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
183 handle = file->handle;
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
184
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
185 ret = vfs_fclose(handle->proxy_fd);
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
186 g_free(handle);
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
187
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
188 return ret;
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
189 }
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
190
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
191 size_t lastfm_vfs_fread_impl(gpointer ptr, size_t size, size_t nmemb, VFSFile * file)
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
192 {
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
193 LastFMFile *handle = file->handle;
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
194 size_t ret = vfs_fread(ptr, size, nmemb, handle->proxy_fd);
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
195
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
196 return ret;
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
197 }
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
198
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
199 size_t lastfm_vfs_fwrite_impl(gconstpointer ptr, size_t size, size_t nmemb, VFSFile * file)
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
200 {
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
201 return -1;
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
202 }
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
203
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
204 gint lastfm_vfs_getc_impl(VFSFile * stream)
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
205 {
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
206 LastFMFile *handle = stream->handle;
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
207
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
208 return vfs_getc(handle->proxy_fd);
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
209 }
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
210
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
211 gint lastfm_vfs_ungetc_impl(gint c, VFSFile * stream)
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
212 {
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
213 LastFMFile *handle = stream->handle;
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
214
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
215 return vfs_ungetc(c, handle->proxy_fd);
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
216 }
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
217
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
218 gint lastfm_vfs_fseek_impl(VFSFile * file, glong offset, gint whence)
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
219 {
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
220 return -1;
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
221 }
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
222
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
223 void lastfm_vfs_rewind_impl(VFSFile * file)
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
224 {
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
225 return;
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
226 }
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
227
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
228 glong lastfm_vfs_ftell_impl(VFSFile * file)
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
229 {
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
230 LastFMFile *handle = file->handle;
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
231
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
232 return vfs_ftell(handle->proxy_fd);
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
233 }
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
234
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
235 gboolean lastfm_vfs_feof_impl(VFSFile * file)
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
236 {
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
237 LastFMFile *handle = file->handle;
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
238
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
239 return vfs_feof(handle->proxy_fd);
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
240 }
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
241
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
242 gint lastfm_vfs_truncate_impl(VFSFile * file, glong size)
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
243 {
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
244 return -1;
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
245 }
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
246
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
247 off_t lastfm_vfs_fsize_impl(VFSFile * file)
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
248 {
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
249 return -1;
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
250 }
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
251
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
252 gchar *lastfm_vfs_metadata_impl(VFSFile * file, const gchar *key)
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
253 {
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
254 if (!strcasecmp(key, "stream-name"))
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
255 return g_strdup(lastfm_station_name);
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
256
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
257 return NULL;
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
258 }
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
259
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
260 VFSConstructor lastfm_const = {
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
261 "lastfm://",
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
262 lastfm_vfs_fopen_impl,
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
263 lastfm_vfs_fclose_impl,
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
264 lastfm_vfs_fread_impl,
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
265 lastfm_vfs_fwrite_impl,
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
266 lastfm_vfs_getc_impl,
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
267 lastfm_vfs_ungetc_impl,
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
268 lastfm_vfs_fseek_impl,
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
269 lastfm_vfs_rewind_impl,
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
270 lastfm_vfs_ftell_impl,
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
271 lastfm_vfs_feof_impl,
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
272 lastfm_vfs_truncate_impl,
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
273 lastfm_vfs_fsize_impl,
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
274 lastfm_vfs_metadata_impl
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
275 };
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
276
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
277 static void init(void)
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
278 {
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
279 setup_curl();
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
280 lastfm_mp3_stream_url = lastfm_login(curl);
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
281 puts(lastfm_mp3_stream_url);
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
282 puts(lastfm_session_id);
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
283
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
284 vfs_register_transport(&lastfm_const);
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
285 }
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
286
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
287 static void cleanup(void)
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
288 {
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
289 #if 0
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
290 vfs_unregister_transport(&default_const);
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
291 vfs_unregister_transport(&file_const);
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
292 #endif
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
293 }
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
294
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
295 LowlevelPlugin llp_lastfm = {
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
296 NULL,
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
297 NULL,
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
298 "lastfm:// URI Transport",
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
299 init,
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
300 cleanup,
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
301 };
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
302
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
303 LowlevelPlugin *get_lplugin_info(void)
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
304 {
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
305 return &llp_lastfm;
cf7021ca4e7b [svn] Add lastfm:// transport, an abstract VFS class which derives from curl
nenolod
parents:
diff changeset
306 }