And now, the patch is really attached.

Kumar
--- trunk/src/common.c	2009/04/29 18:40:34	952
+++ trunk/src/common.c	2009/04/29 20:51:31	953
@@ -74,6 +74,8 @@
 
 
 const char* const flickcurl_flickr_service_uri =  "http://www.flickr.com/services/rest/?";;
+const char* const flickcurl_flickr_upload_service_uri =  "http://api.flickr.com/services/upload/";;
+const char* const flickcurl_flickr_replace_service_uri =  "http://api.flickr.com/services/replace/";;
 
 
 static void
@@ -195,6 +197,8 @@
     return NULL;
 
   fc->service_uri = strdup(flickcurl_flickr_service_uri);
+  fc->upload_service_uri = strdup(flickcurl_flickr_upload_service_uri);
+  fc->replace_service_uri = strdup(flickcurl_flickr_replace_service_uri);
 
   /* DEFAULT delay between requests is 1000ms i.e 1 request/second max */
   fc->request_delay=1000;
@@ -301,6 +305,13 @@
   if(fc->upload_value)
     free(fc->upload_value);
 
+  if(fc->service_uri)
+    free(fc->service_uri);
+  if(fc->upload_service_uri)
+    free(fc->upload_service_uri);
+  if(fc->replace_service_uri)
+    free(fc->replace_service_uri);
+
   free(fc);
 }
 
@@ -464,6 +475,57 @@
     fc->service_uri = strdup(uri);
 }
 
+
+/**
+ * flickcurl_set_upload_service_uri:
+ * @fc: flickcurl object
+ * @uri: Upload Service URI (or NULL)
+ *
+ * Set Web Upload Service URI for flickcurl requests
+ *
+ * Sets the upload service to the default (Flickr API web
+ * upload_service) if @uri is NULL.
+ */
+void
+flickcurl_set_upload_service_uri(flickcurl *fc, const char *uri)
+{
+  if(!uri)
+    uri = flickcurl_flickr_upload_service_uri;
+    
+#if FLICKCURL_DEBUG > 1
+    fprintf(stderr, "Upload Service URI set to: '%s'\n", uri);
+#endif
+    if(fc->upload_service_uri)
+      free(fc->upload_service_uri);
+    fc->upload_service_uri = strdup(uri);
+}
+
+
+/**
+ * flickcurl_set_replace_service_uri:
+ * @fc: flickcurl object
+ * @uri: Replace Service URI (or NULL)
+ *
+ * Set Web Replace Service URI for flickcurl requests
+ *
+ * Sets the replace service to the default (Flickr API web
+ * replace_service) if @uri is NULL.
+ */
+void
+flickcurl_set_replace_service_uri(flickcurl *fc, const char *uri)
+{
+  if(!uri)
+    uri = flickcurl_flickr_replace_service_uri;
+    
+#if FLICKCURL_DEBUG > 1
+    fprintf(stderr, "Replace Service URI set to: '%s'\n", uri);
+#endif
+    if(fc->replace_service_uri)
+      free(fc->replace_service_uri);
+    fc->replace_service_uri = strdup(uri);
+}
+
+
 /**
  * flickcurl_set_api_key:
  * @fc: flickcurl object
@@ -610,6 +672,7 @@
 
 static int
 flickcurl_prepare_common(flickcurl *fc, 
+                         const char* url,
                          const char* method,
                          const char* upload_field, const char* upload_value,
                          const char* parameters[][2], int count,
@@ -619,7 +682,7 @@
   char *md5_string=NULL;
   size_t* values_len=NULL;
 
-  if(!fc->service_uri || !parameters)
+  if(!url || !parameters)
     return 1;
   
   /* If one is given, both are required */
@@ -767,7 +830,7 @@
     parameters[count][0] = NULL;
   }
 
-  strcpy(fc->uri, fc->service_uri);
+  strcpy(fc->uri, url);
 
   if(parameters_in_url) {
     for(i=0; parameters[i][0]; i++) {
@@ -820,6 +883,7 @@
   }
   
   return flickcurl_prepare_common(fc,
+                                  fc->service_uri,
                                   method,
                                   NULL, NULL,
                                   parameters, count,
@@ -837,6 +901,7 @@
   }
   
   return flickcurl_prepare_common(fc,
+                                  fc->service_uri,
                                   method,
                                   NULL, NULL,
                                   parameters, count,
@@ -851,6 +916,7 @@
                          const char* parameters[][2], int count)
 {
   return flickcurl_prepare_common(fc,
+                                  url,
                                   NULL,
                                   upload_field, upload_value,
                                   parameters, count,
--- trunk/src/flickcurl.h	2009/04/29 18:40:34	952
+++ trunk/src/flickcurl.h	2009/04/29 20:51:31	953
@@ -1367,6 +1367,11 @@
 
 FLICKCURL_API
 extern const char* const flickcurl_flickr_service_uri;
+FLICKCURL_API
+extern const char* const flickcurl_flickr_upload_service_uri;
+FLICKCURL_API
+extern const char* const flickcurl_flickr_replace_service_uri;
+
 
 /* library init - call once before creating anything */
 FLICKCURL_API
@@ -1388,6 +1393,10 @@
 FLICKCURL_API
 void flickcurl_set_service_uri(flickcurl *fc, const char *uri);
 FLICKCURL_API
+void flickcurl_set_upload_service_uri(flickcurl *fc, const char *uri);
+FLICKCURL_API
+void flickcurl_set_replace_service_uri(flickcurl *fc, const char *uri);
+FLICKCURL_API
 void flickcurl_set_api_key(flickcurl* fc, const char *api_key);
 FLICKCURL_API
 void flickcurl_set_auth_token(flickcurl *fc, const char* auth_token);
--- trunk/src/flickcurl_internal.h	2009/04/29 18:40:34	952
+++ trunk/src/flickcurl_internal.h	2009/04/29 20:51:31	953
@@ -339,6 +339,12 @@
 
   /* Web Service URI that is called */
   char *service_uri;
+
+  /* Upload Web Service URI that is called */
+  char *upload_service_uri;
+
+  /* Replace Web Service URI that is called */
+  char *replace_service_uri;
 };
 
 struct flickcurl_serializer_s
--- trunk/src/upload-api.c	2009/04/29 18:40:34	952
+++ trunk/src/upload-api.c	2009/04/29 20:51:31	953
@@ -127,9 +127,9 @@
 
 
   if(flickcurl_prepare_upload(fc,
-                            "http://api.flickr.com/services/upload/";,
-                            "photo", params->photo_file,
-                            parameters, count))
+                              fc->upload_service_uri,
+                              "photo", params->photo_file,
+                              parameters, count))
     goto tidy;
 
   doc=flickcurl_invoke(fc);
@@ -250,7 +250,7 @@
   parameters[count][0]  = NULL;
 
   if(flickcurl_prepare_upload(fc,
-                              "http://api.flickr.com/services/replace/";,
+                              fc->replace_service_uri,
                               "photo", photo_file,
                               parameters, count))
     goto tidy;

Reply via email to