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;