3
3
* favorites-api.c - Flickr flickr.favorites.* API calls
5
* Copyright (C) 2008, David Beckett http://www.dajobe.org/
5
* Copyright (C) 2008-2012, David Beckett http://www.dajobe.org/
7
7
* This file is licensed under the following three licenses as alternatives:
8
8
* 1. GNU Lesser General Public License (LGPL) V2.1 or any newer version
57
57
flickcurl_favorites_add(flickcurl* fc, const char* photo_id)
59
const char* parameters[8][2];
61
59
xmlDocPtr doc = NULL;
62
60
xmlXPathContextPtr xpathCtx = NULL;
62
flickcurl_init_params(fc);
67
parameters[count][0] = "photo_id";
68
parameters[count++][1]= photo_id;
70
parameters[count][0] = NULL;
72
if(flickcurl_prepare(fc, "flickr.favorites.add", parameters, count))
67
flickcurl_add_param(fc, "photo_id", photo_id);
69
flickcurl_end_params(fc);
71
if(flickcurl_prepare(fc, "flickr.favorites.add"))
75
74
flickcurl_set_write(fc, 1);
126
123
char num_next_str[10];
126
flickcurl_init_params(fc);
129
128
if(!photo_id || !user_id)
132
parameters[count][0] = "photo_id";
133
parameters[count++][1]= photo_id;
134
parameters[count][0] = "user_id";
135
parameters[count++][1]= user_id;
131
flickcurl_add_param(fc, "photo_id", photo_id);
132
flickcurl_add_param(fc, "user_id", user_id);
136
133
if(num_prev >= 0) {
137
134
sprintf(num_prev_str, "%d", num_prev);
138
parameters[count][0] = "num_prev";
139
parameters[count++][1]= num_prev_str;
135
flickcurl_add_param(fc, "num_prev", num_prev_str);
141
137
if(num_next >= 0) {
142
138
sprintf(num_next_str, "%d", num_next);
143
parameters[count][0] = "num_next";
144
parameters[count++][1]= num_next_str;
139
flickcurl_add_param(fc, "num_next", num_next_str);
146
141
/* this is the only standard photos response parameter supported
147
142
* so using flickcurl_append_photos_list_params() is not really needed
150
parameters[count][0] = "extras";
151
parameters[count++][1]= extras;
145
flickcurl_add_param(fc, "extras", extras);
154
parameters[count][0] = NULL;
148
flickcurl_end_params(fc);
156
if(flickcurl_prepare(fc, "flickr.favorites.getContext", parameters, count))
150
if(flickcurl_prepare(fc, "flickr.favorites.getContext"))
159
153
doc = flickcurl_invoke(fc);
171
165
/* 3 lists of photo lists: prev, next and NULL to end the list */
172
photos_lists = calloc(sizeof(flickcurl_photos_list*), 3);
166
photos_lists = (flickcurl_photos_list**)calloc(sizeof(flickcurl_photos_list*), 3);
174
168
/* Decode the prev and next into photo lists */
175
169
for(i = 0; i < 2; i++) {
176
170
const xmlChar* xpathExpr = (i == 0) ? (const xmlChar*)"/rsp/prevphoto" : (const xmlChar*)"/rsp/nextphoto";
177
flickcurl_photos_list* photos_list = photos_lists[i];
171
flickcurl_photos_list* photos_list;
178
172
xmlXPathObjectPtr xpathObj = NULL;
180
174
xpathObj = xmlXPathEvalExpression(xpathExpr, xpathCtx);
245
242
flickcurl_favorites_getList_params(flickcurl* fc, const char* user_id,
246
243
flickcurl_photos_list_params* list_params)
248
const char* parameters[12][2];
250
245
flickcurl_photos_list* photos_list = NULL;
251
246
const char* format = NULL;
248
flickcurl_init_params(fc);
253
250
/* API parameters */
255
parameters[count][0] = "user_id";
256
parameters[count++][1]= user_id;
252
flickcurl_add_param(fc, "user_id", user_id);
258
254
/* Photos List parameters */
259
flickcurl_append_photos_list_params(list_params, parameters, &count, &format);
255
flickcurl_append_photos_list_params(fc, list_params, &format);
261
parameters[count][0] = NULL;
257
flickcurl_end_params(fc);
263
if(flickcurl_prepare(fc, "flickr.favorites.getList", parameters, count))
259
if(flickcurl_prepare(fc, "flickr.favorites.getList"))
266
262
photos_list = flickcurl_invoke_photos_list(fc,
338
334
flickcurl_favorites_getPublicList_params(flickcurl* fc, const char* user_id,
339
335
flickcurl_photos_list_params* list_params)
341
const char* parameters[13][2];
343
337
flickcurl_photos_list* photos_list = NULL;
344
338
const char* format = NULL;
340
flickcurl_init_params(fc);
349
345
/* API parameters */
350
parameters[count][0] = "user_id";
351
parameters[count++][1]= user_id;
346
flickcurl_add_param(fc, "user_id", user_id);
353
348
/* Photos List parameters */
354
flickcurl_append_photos_list_params(list_params, parameters, &count, &format);
356
parameters[count][0] = NULL;
358
if(flickcurl_prepare(fc, "flickr.favorites.getPublicList", parameters, count))
349
flickcurl_append_photos_list_params(fc, list_params, &format);
351
flickcurl_end_params(fc);
353
if(flickcurl_prepare(fc, "flickr.favorites.getPublicList"))
361
356
photos_list = flickcurl_invoke_photos_list(fc,
433
428
flickcurl_favorites_remove(flickcurl* fc, const char* photo_id)
435
const char* parameters[8][2];
437
430
xmlDocPtr doc = NULL;
438
431
xmlXPathContextPtr xpathCtx = NULL;
433
flickcurl_init_params(fc);
443
parameters[count][0] = "photo_id";
444
parameters[count++][1]= photo_id;
446
parameters[count][0] = NULL;
448
if(flickcurl_prepare(fc, "flickr.favorites.remove", parameters, count))
438
flickcurl_add_param(fc, "photo_id", photo_id);
440
flickcurl_end_params(fc);
442
if(flickcurl_prepare(fc, "flickr.favorites.remove"))
451
445
flickcurl_set_write(fc, 1);