#include <iostream>
#include <glib.h>
-#include <pbd/gstdio_compat.h>
+#include "pbd/gstdio_compat.h"
-#include "i18n.h"
+#include "pbd/i18n.h"
#include "ardour/audio_library.h"
#include "ardour/rc_configuration.h"
}
#endif
}
-
+
//------------------------------------------------------------------------
size_t Mootcher::WriteMemoryCallback(void *ptr, size_t size, size_t nmemb, void *data)
{
int realsize = (int)(size * nmemb);
- struct MemoryStruct *mem = (struct MemoryStruct *)data;
+ struct SfdbMemoryStruct *mem = (struct SfdbMemoryStruct *)data;
mem->memory = (char *)realloc(mem->memory, mem->size + realsize + 1);
// sort the results in the requested way.
switch (sort) {
- case sort_duration_desc: return "duration_desc";
+ case sort_duration_desc: return "duration_desc";
case sort_duration_asc: return "duration_asc";
case sort_created_desc: return "created_desc";
case sort_created_asc: return "created_asc";
case sort_downloads_asc: return "downloads_asc";
case sort_rating_desc: return "rating_desc";
case sort_rating_asc: return "rating_asc";
- default: return "";
+ default: return "";
}
}
curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, errorBuffer);
// Allow redirection
curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1);
-
+
// Allow connections to time out (without using signals)
curl_easy_setopt(curl, CURLOPT_NOSIGNAL, 1);
curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, 30);
std::string Mootcher::doRequest(std::string uri, std::string params)
{
std::string result;
- struct MemoryStruct xml_page;
+ struct SfdbMemoryStruct xml_page;
xml_page.memory = NULL;
xml_page.size = 0;
} else {
url += "api_key=" + api_key + "&format=xml";
}
-
+
curl_easy_setopt(curl, CURLOPT_URL, url.c_str() );
-
+
// perform online request
CURLcode res = curl_easy_perform(curl);
if( res != 0 ) {
if (xml_page.memory) {
result = xml_page.memory;
}
-
+
free (xml_page.memory);
xml_page.memory = NULL;
xml_page.size = 0;
params += "&f=" + std::string(ef);
free(ef);
}
-
+
if (sort)
params += "&s=" + sortMethodString(sort);
res = curl_easy_perform (curl);
fclose (theFile);
curl_easy_setopt (curl, CURLOPT_NOPROGRESS, 1); // turn off the progress bar
-
+
if (res != CURLE_OK) {
/* it's not an error if the user pressed the stop button */
if (res != CURLE_ABORTED_BY_CALLBACK) {
error << string_compose (_("curl error %1 (%2)"), res, curl_easy_strerror(res)) << endmsg;
}
- remove ( (audioFileName+".part").c_str() );
+ remove ( (audioFileName+".part").c_str() );
} else {
rename ( (audioFileName+".part").c_str(), audioFileName.c_str() );
// now download the tags &c.
return (void *) res;
}
-
+
void
Mootcher::doneWithMootcher()
{
- // update the sound info pane if the selection in the list box is still us
+ // update the sound info pane if the selection in the list box is still us
sfb->refresh_display(ID, audioFileName);
delete this; // this should be OK to do as long as Progress and Finished signals are always received in the order in which they are emitted
}
static void *
-freesound_download_thread_func(void *arg)
-{
+freesound_download_thread_func(void *arg)
+{
Mootcher *thisMootcher = (Mootcher *) arg;
void *res;
// check to see if audio file already exists
FILE *testFile = g_fopen(audioFileName.c_str(), "r");
- if (testFile) {
+ if (testFile) {
fseek (testFile , 0 , SEEK_END);
if (ftell (testFile) > 256) {
fclose (testFile);
return true;
}
-
- // else file was small, probably an error, delete it
+
+ // else file was small, probably an error, delete it
fclose(testFile);
- remove( audioFileName.c_str() );
+ remove( audioFileName.c_str() );
}
return false;
}
if (!theFile) {
return false;
}
-
+
// create the download url
audioURL += "?api_key=" + api_key;
//---------
-void
-Mootcher::updateProgress(double dlnow, double dltotal)
+void
+Mootcher::updateProgress(double dlnow, double dltotal)
{
if (dltotal > 0) {
double fraction = dlnow / dltotal;
}
}
-int
+int
Mootcher::progress_callback(void *caller, double dltotal, double dlnow, double /*ultotal*/, double /*ulnow*/)
{
// It may seem curious to pass a pointer to an instance of an object to a static
// and we want access to some private members of Mootcher.
Mootcher *thisMootcher = (Mootcher *) caller;
-
+
if (thisMootcher->cancel_download) {
return -1;
}