fix crash when copy'ing latent plugins
[ardour.git] / libs / ardour / soundcloud_upload.cc
index 60bc21304cf061d19407c65db8501c23eea3f6cf..caef9570b4542d61f808da9ccd8cae34910aad9c 100644 (file)
 
 #include "pbd/xml++.h"
 #include <pbd/error.h>
-//#include "pbd/filesystem.h"
 
 #include <sys/stat.h>
 #include <sys/types.h>
 #include <iostream>
-#include <glib/gstdio.h>
+#include "pbd/gstdio_compat.h"
 
-#include "i18n.h"
+#include "pbd/i18n.h"
 
 using namespace PBD;
 
-// static const std::string base_url = "http://api.soundcloud.com/tracks/13158665?client_id=";
-
 size_t
 WriteMemoryCallback(void *ptr, size_t size, size_t nmemb, void *data)
 {
@@ -75,17 +72,17 @@ SoundcloudUploader::Get_Auth_Token( std::string username, std::string password )
        struct curl_httppost *formpost=NULL;
        struct curl_httppost *lastptr=NULL;
 
-       /* Fill in the filename field */ 
+       /* Fill in the filename field */
        curl_formadd(&formpost,
                        &lastptr,
                        CURLFORM_COPYNAME, "client_id",
-                       CURLFORM_COPYCONTENTS, "e7ac891eef866f139773cf8102b7a719",
+                       CURLFORM_COPYCONTENTS, "6dd9cf0ad281aa57e07745082cec580b",
                        CURLFORM_END);
 
        curl_formadd(&formpost,
                        &lastptr,
                        CURLFORM_COPYNAME, "client_secret",
-                       CURLFORM_COPYCONTENTS, "d78f34d19f09d26731801a0cb0f382c4",
+                       CURLFORM_COPYCONTENTS, "53f5b0113fb338800f8a7a9904fc3569",
                        CURLFORM_END);
 
        curl_formadd(&formpost,
@@ -111,7 +108,7 @@ SoundcloudUploader::Get_Auth_Token( std::string username, std::string password )
        headerlist = curl_slist_append(headerlist, "Accept: application/xml");
        curl_easy_setopt(curl_handle, CURLOPT_HTTPHEADER, headerlist);
 
-       /* what URL that receives this POST */ 
+       /* what URL that receives this POST */
        std::string url = "https://api.soundcloud.com/oauth2/token";
        curl_easy_setopt(curl_handle, CURLOPT_URL, url.c_str());
        curl_easy_setopt(curl_handle, CURLOPT_HTTPPOST, formpost);
@@ -120,13 +117,13 @@ SoundcloudUploader::Get_Auth_Token( std::string username, std::string password )
 
        // perform online request
        CURLcode res = curl_easy_perform(curl_handle);
-       if( res != 0 ) {
+       if (res != 0) {
                DEBUG_TRACE (DEBUG::Soundcloud, string_compose ("curl error %1 (%2)", res, curl_easy_strerror(res) ) );
                return "";
        }
 
-       if(xml_page.memory){
-               //cheesy way to parse the json return value.  find access_token, then advance 3 quotes
+       if (xml_page.memory){
+               // cheesy way to parse the json return value.  find access_token, then advance 3 quotes
 
                if ( strstr ( xml_page.memory , "access_token" ) == NULL) {
                        error << _("Upload to Soundcloud failed.  Perhaps your email or password are incorrect?\n") << endmsg;
@@ -173,14 +170,14 @@ SoundcloudUploader::Upload(std::string file_path, std::string title, std::string
        struct curl_httppost *lastptr=NULL;
 
        /* Fill in the file upload field. This makes libcurl load data from
-          the given file name when curl_easy_perform() is called. */ 
+          the given file name when curl_easy_perform() is called. */
        curl_formadd(&formpost,
                        &lastptr,
                        CURLFORM_COPYNAME, "track[asset_data]",
                        CURLFORM_FILE, file_path.c_str(),
                        CURLFORM_END);
 
-       /* Fill in the filename field */ 
+       /* Fill in the filename field */
        curl_formadd(&formpost,
                        &lastptr,
                        CURLFORM_COPYNAME, "oauth_token",
@@ -208,7 +205,7 @@ SoundcloudUploader::Upload(std::string file_path, std::string title, std::string
 
 
        /* initalize custom header list (stating that Expect: 100-continue is not
-          wanted */ 
+          wanted */
        struct curl_slist *headerlist=NULL;
        static const char buf[] = "Expect:";
        headerlist = curl_slist_append(headerlist, buf);
@@ -216,7 +213,7 @@ SoundcloudUploader::Upload(std::string file_path, std::string title, std::string
 
        if (curl_handle && multi_handle) {
 
-               /* what URL that receives this POST */ 
+               /* what URL that receives this POST */
                std::string url = "https://api.soundcloud.com/tracks";
                curl_easy_setopt(curl_handle, CURLOPT_URL, url.c_str());
                // curl_easy_setopt(curl_handle, CURLOPT_VERBOSE, 1L);
@@ -238,7 +235,7 @@ SoundcloudUploader::Upload(std::string file_path, std::string title, std::string
 
                while(still_running) {
                        struct timeval timeout;
-                       int rc; /* select() return code */ 
+                       int rc; /* select() return code */
 
                        fd_set fdread;
                        fd_set fdwrite;
@@ -251,7 +248,7 @@ SoundcloudUploader::Upload(std::string file_path, std::string title, std::string
                        FD_ZERO(&fdwrite);
                        FD_ZERO(&fdexcep);
 
-                       /* set a suitable timeout to play around with */ 
+                       /* set a suitable timeout to play around with */
                        timeout.tv_sec = 1;
                        timeout.tv_usec = 0;
 
@@ -264,33 +261,33 @@ SoundcloudUploader::Upload(std::string file_path, std::string title, std::string
                                        timeout.tv_usec = (curl_timeo % 1000) * 1000;
                        }
 
-                       /* get file descriptors from the transfers */ 
+                       /* get file descriptors from the transfers */
                        curl_multi_fdset(multi_handle, &fdread, &fdwrite, &fdexcep, &maxfd);
 
                        /* In a real-world program you OF COURSE check the return code of the
                           function calls.  On success, the value of maxfd is guaranteed to be
                           greater or equal than -1.  We call select(maxfd + 1, ...), specially in
                           case of (maxfd == -1), we call select(0, ...), which is basically equal
-                          to sleep. */ 
+                          to sleep. */
 
                        rc = select(maxfd+1, &fdread, &fdwrite, &fdexcep, &timeout);
 
                        switch(rc) {
                                case -1:
-                                       /* select error */ 
+                                       /* select error */
                                        break;
                                case 0:
                                default:
-                                       /* timeout or readable/writable sockets */ 
+                                       /* timeout or readable/writable sockets */
                                        curl_multi_perform(multi_handle, &still_running);
                                        break;
                        }
-               } 
+               }
 
-               /* then cleanup the formpost chain */ 
+               /* then cleanup the formpost chain */
                curl_formfree(formpost);
 
-               /* free slist */ 
+               /* free slist */
                curl_slist_free_all (headerlist);
        }
 
@@ -347,7 +344,7 @@ SoundcloudUploader::setcUrlOptions()
        curl_easy_setopt(curl_handle, CURLOPT_ERRORBUFFER, errorBuffer);
        // Allow redirection
        curl_easy_setopt(curl_handle, CURLOPT_FOLLOWLOCATION, 1);
-       
+
        // Allow connections to time out (without using signals)
        curl_easy_setopt(curl_handle, CURLOPT_NOSIGNAL, 1);
        curl_easy_setopt(curl_handle, CURLOPT_CONNECTTIMEOUT, 30);