~ubuntu-branches/debian/sid/flickcurl/sid

« back to all changes in this revision

Viewing changes to src/places-api.c

  • Committer: Package Import Robot
  • Author(s): Kumar Appaiah
  • Date: 2013-05-20 21:15:09 UTC
  • mfrom: (1.4.1) (15.1.1 experimental)
  • Revision ID: package-import@ubuntu.com-20130520211509-e701o5dlwa04aqiw
Tags: 1.24-1
New upstream release

Show diffs side-by-side

added added

removed removed

Lines of Context:
5
5
 * Places API announced 2008-01-11
6
6
 * http://tech.groups.yahoo.com/group/yws-flickr/message/3688
7
7
 *
8
 
 * Copyright (C) 2008-2009, David Beckett http://www.dajobe.org/
 
8
 * Copyright (C) 2008-2012, David Beckett http://www.dajobe.org/
9
9
 * 
10
10
 * This file is licensed under the following three licenses as alternatives:
11
11
 *   1. GNU Lesser General Public License (LGPL) V2.1 or any newer version
67
67
flickcurl_place**
68
68
flickcurl_places_find(flickcurl* fc, const char* query)
69
69
{
70
 
  const char* parameters[8][2];
71
 
  int count = 0;
72
70
  xmlDocPtr doc = NULL;
73
71
  xmlXPathContextPtr xpathCtx = NULL; 
74
72
  flickcurl_place** places = NULL;
75
73
  
 
74
  flickcurl_init_params(fc);
 
75
 
76
76
  if(!query)
77
77
    return NULL;
78
78
 
79
 
  parameters[count][0]  = "query";
80
 
  parameters[count++][1]= query;
81
 
 
82
 
  parameters[count][0]  = NULL;
83
 
 
84
 
  if(flickcurl_prepare(fc, "flickr.places.find", parameters, count))
 
79
  flickcurl_add_param(fc, "query", query);
 
80
 
 
81
  flickcurl_end_params(fc);
 
82
 
 
83
  if(flickcurl_prepare(fc, "flickr.places.find"))
85
84
    goto tidy;
86
85
 
87
86
  doc = flickcurl_invoke(fc);
134
133
flickcurl_places_findByLatLon(flickcurl* fc, double lat, double lon,
135
134
                              int accuracy)
136
135
{
137
 
  const char* parameters[10][2];
138
 
  int count = 0;
139
136
  xmlDocPtr doc = NULL;
140
137
  xmlXPathContextPtr xpathCtx = NULL; 
141
138
  flickcurl_place* place = NULL;
143
140
  char lon_str[20];
144
141
  char accuracy_str[4];
145
142
  
 
143
  flickcurl_init_params(fc);
 
144
 
146
145
  if(accuracy < 0 || accuracy > 16)
147
146
    accuracy = 16;
148
147
  
149
148
  sprintf(lat_str, "%f", lat);
150
 
  parameters[count][0]  = "lat";
151
 
  parameters[count++][1]= lat_str;
 
149
  flickcurl_add_param(fc, "lat", lat_str);
152
150
  sprintf(lon_str, "%f", lon);
153
 
  parameters[count][0]  = "lon";
154
 
  parameters[count++][1]= lon_str;
 
151
  flickcurl_add_param(fc, "lon", lon_str);
155
152
  sprintf(accuracy_str, "%d", accuracy);
156
 
  parameters[count][0]  = "accuracy";
157
 
  parameters[count++][1]= accuracy_str;
158
 
 
159
 
  parameters[count][0]  = NULL;
160
 
 
161
 
  if(flickcurl_prepare(fc, "flickr.places.findByLatLon", parameters, count))
 
153
  flickcurl_add_param(fc, "accuracy", accuracy_str);
 
154
 
 
155
  flickcurl_end_params(fc);
 
156
 
 
157
  if(flickcurl_prepare(fc, "flickr.places.findByLatLon"))
162
158
    goto tidy;
163
159
 
164
160
  doc = flickcurl_invoke(fc);
232
228
flickcurl_places_getChildrenWithPhotosPublic2(flickcurl* fc,
233
229
                                              const char* place_id, int woe_id)
234
230
{
235
 
  const char* parameters[9][2];
236
 
  int count = 0;
237
231
  xmlDocPtr doc = NULL;
238
232
  xmlXPathContextPtr xpathCtx = NULL; 
239
233
  flickcurl_place** places = NULL;
240
234
  char woe_id_str[10];
241
235
 
 
236
  flickcurl_init_params(fc);
 
237
 
242
238
  if(place_id) {
243
 
    parameters[count][0]  = "place_id";
244
 
    parameters[count++][1]= place_id;
 
239
    flickcurl_add_param(fc, "place_id", place_id);
245
240
  } else if(woe_id >= 0) {
246
241
    sprintf(woe_id_str, "%d", woe_id);
247
 
    parameters[count][0]  = "woe_id";
248
 
    parameters[count++][1]= woe_id_str;
 
242
    flickcurl_add_param(fc, "woe_id", woe_id_str);
249
243
  } else
250
244
    return NULL;
251
245
 
252
 
  parameters[count][0]  = NULL;
 
246
  flickcurl_end_params(fc);
253
247
 
254
 
  if(flickcurl_prepare(fc, "flickr.places.getChildrenWithPhotosPublic",
255
 
                       parameters, count))
 
248
  if(flickcurl_prepare(fc, "flickr.places.getChildrenWithPhotosPublic"))
256
249
    goto tidy;
257
250
 
258
251
  doc = flickcurl_invoke(fc);
330
323
flickcurl_place*
331
324
flickcurl_places_getInfo2(flickcurl* fc, const char* place_id, int woe_id)
332
325
{
333
 
  const char* parameters[9][2];
334
 
  int count = 0;
335
326
  xmlDocPtr doc = NULL;
336
327
  xmlXPathContextPtr xpathCtx = NULL; 
337
328
  flickcurl_place* place = NULL;
338
329
  char woe_id_str[10];
339
330
 
 
331
  flickcurl_init_params(fc);
 
332
 
340
333
  if(place_id) {
341
 
    parameters[count][0]  = "place_id";
342
 
    parameters[count++][1]= place_id;
 
334
    flickcurl_add_param(fc, "place_id", place_id);
343
335
  } else if(woe_id >= 0) {
344
336
    sprintf(woe_id_str, "%d", woe_id);
345
 
    parameters[count][0]  = "woe_id";
346
 
    parameters[count++][1]= woe_id_str;
 
337
    flickcurl_add_param(fc, "woe_id", woe_id_str);
347
338
  } else
348
339
    return NULL;
349
340
 
350
 
  parameters[count][0]  = NULL;
 
341
  flickcurl_end_params(fc);
351
342
 
352
 
  if(flickcurl_prepare_noauth(fc, "flickr.places.getInfo", parameters, count))
 
343
  if(flickcurl_prepare_noauth(fc, "flickr.places.getInfo"))
353
344
    goto tidy;
354
345
 
355
346
  doc = flickcurl_invoke(fc);
396
387
flickcurl_place*
397
388
flickcurl_places_getInfoByUrl(flickcurl* fc, const char* url)
398
389
{
399
 
  const char* parameters[8][2];
400
 
  int count = 0;
401
390
  xmlDocPtr doc = NULL;
402
391
  xmlXPathContextPtr xpathCtx = NULL; 
403
392
  flickcurl_place* place = NULL;
404
393
  
 
394
  flickcurl_init_params(fc);
 
395
 
405
396
  if(!url)
406
397
    return NULL;
407
398
 
408
 
  parameters[count][0]  = "url";
409
 
  parameters[count++][1]= url;
410
 
 
411
 
  parameters[count][0]  = NULL;
412
 
 
413
 
  if(flickcurl_prepare(fc, "flickr.places.getInfoByUrl", parameters, count))
 
399
  flickcurl_add_param(fc, "url", url);
 
400
 
 
401
  flickcurl_end_params(fc);
 
402
 
 
403
  if(flickcurl_prepare(fc, "flickr.places.getInfoByUrl"))
414
404
    goto tidy;
415
405
 
416
406
  doc = flickcurl_invoke(fc);
451
441
flickcurl_place_type_info**
452
442
flickcurl_places_getPlaceTypes(flickcurl* fc)
453
443
{
454
 
  const char* parameters[7][2];
455
 
  int count = 0;
456
444
  xmlDocPtr doc = NULL;
457
445
  xmlXPathContextPtr xpathCtx = NULL; 
458
446
  flickcurl_place_type_info** place_types = NULL;
459
447
  
460
 
  parameters[count][0]  = NULL;
461
 
 
462
 
  if(flickcurl_prepare(fc, "flickr.places.getPlaceTypes", parameters, count))
 
448
  flickcurl_init_params(fc);
 
449
 
 
450
  flickcurl_end_params(fc);
 
451
 
 
452
  if(flickcurl_prepare(fc, "flickr.places.getPlaceTypes"))
463
453
    goto tidy;
464
454
 
465
455
  doc = flickcurl_invoke(fc);
514
504
flickcurl_places_getShapeHistory(flickcurl* fc, const char* place_id,
515
505
                                 int woe_id)
516
506
{
517
 
  const char* parameters[9][2];
518
 
  int count = 0;
519
507
  xmlDocPtr doc = NULL;
520
508
  xmlXPathContextPtr xpathCtx = NULL; 
521
509
  flickcurl_shapedata** shapes = NULL;
522
510
  char woe_id_str[20];
523
511
  
 
512
  flickcurl_init_params(fc);
 
513
 
524
514
  if(!place_id && woe_id < 0)
525
515
    return NULL;
526
516
 
527
517
  if(place_id) {
528
 
    parameters[count][0]  = "place_id";
529
 
    parameters[count++][1]= place_id;
 
518
    flickcurl_add_param(fc, "place_id", place_id);
530
519
  }
531
520
  if(woe_id >= 0) {
532
 
    parameters[count][0]  = "woe_id";
533
521
    sprintf(woe_id_str, "%d", woe_id);
534
 
    parameters[count++][1]= woe_id_str;
 
522
    flickcurl_add_param(fc, "woe_id", woe_id_str);
535
523
  }
536
524
 
537
 
  parameters[count][0]  = NULL;
 
525
  flickcurl_end_params(fc);
538
526
 
539
 
  if(flickcurl_prepare(fc, "flickr.places.getShapeHistory", parameters, count))
 
527
  if(flickcurl_prepare(fc, "flickr.places.getShapeHistory"))
540
528
    goto tidy;
541
529
 
542
530
  doc = flickcurl_invoke(fc);
586
574
                                  const char* date, int woe_id, 
587
575
                                  const char* place_id)
588
576
{
589
 
  const char* parameters[11][2];
590
 
  int count = 0;
591
577
  xmlDocPtr doc = NULL;
592
578
  xmlXPathContextPtr xpathCtx = NULL; 
593
579
  flickcurl_place** places = NULL;
595
581
  int place_type_id;
596
582
  char place_type_id_str[3];
597
583
  
 
584
  flickcurl_init_params(fc);
 
585
 
598
586
  place_type_id = flickcurl_place_type_to_id(place_type);
599
587
  if(place_type_id < 0)
600
588
    return NULL;
601
589
 
602
 
  parameters[count][0]  = "place_type_id";
603
590
  sprintf(place_type_id_str, "%d", place_type_id);
604
 
  parameters[count++][1]= place_type_id_str;
 
591
  flickcurl_add_param(fc, "place_type_id", place_type_id_str);
605
592
 
606
593
  if(date) {
607
 
    parameters[count][0]  = "date";
608
 
    parameters[count++][1]= date;
 
594
    flickcurl_add_param(fc, "date", date);
609
595
  }
610
596
  if(woe_id >= 0) {
611
597
    sprintf(woe_id_str, "%d", woe_id);
612
 
    parameters[count][0]  = "woe_id";
613
 
    parameters[count++][1]= woe_id_str;
 
598
    flickcurl_add_param(fc, "woe_id", woe_id_str);
614
599
  } else if(place_id) {
615
 
    parameters[count][0]  = "place_id";
616
 
    parameters[count++][1]= place_id;
 
600
    flickcurl_add_param(fc, "place_id", place_id);
617
601
  }
618
602
  
619
603
 
620
 
  parameters[count][0]  = NULL;
 
604
  flickcurl_end_params(fc);
621
605
 
622
 
  if(flickcurl_prepare(fc, "flickr.places.getTopPlacesList", parameters, count))
 
606
  if(flickcurl_prepare(fc, "flickr.places.getTopPlacesList"))
623
607
    goto tidy;
624
608
 
625
609
  doc = flickcurl_invoke(fc);
676
660
                                      double maximum_longitude,
677
661
                                      double maximum_latitude)
678
662
{
679
 
  const char* parameters[10][2];
680
 
  int count = 0;
681
663
  xmlDocPtr doc = NULL;
682
664
  xmlXPathContextPtr xpathCtx = NULL; 
683
665
  flickcurl_place** places = NULL;
685
667
  int place_type_id = -1;
686
668
  char bbox[255];
687
669
 
 
670
  flickcurl_init_params(fc);
 
671
 
688
672
  place_type_id = flickcurl_place_type_to_id(place_type);
689
673
  if(place_type_id < 0)
690
674
    return NULL;
691
675
 
692
676
  sprintf(bbox, "%f,%f,%f,%f",  minimum_longitude, minimum_latitude,
693
677
          maximum_longitude, maximum_latitude);
694
 
  parameters[count][0]  = "bbox";
695
 
  parameters[count++][1]= bbox;
 
678
  flickcurl_add_param(fc, "bbox", bbox);
696
679
  /* deliberately not using deprecated parameter place_type */
697
680
/*
698
 
  parameters[count][0]  = "place_type";
699
 
  parameters[count++][1]= place_type;
 
681
  flickcurl_add_param(fc, "place_type", place_type);
700
682
*/
701
 
  parameters[count][0]  = "place_type_id";
702
683
  sprintf(place_type_id_str, "%d", place_type_id);
703
 
  parameters[count++][1]= place_type_id_str;
 
684
  flickcurl_add_param(fc, "place_type_id", place_type_id_str);
704
685
  
705
 
  parameters[count][0]  = NULL;
 
686
  flickcurl_end_params(fc);
706
687
 
707
 
  if(flickcurl_prepare(fc, "flickr.places.placesForBoundingBox", parameters,
708
 
                       count))
 
688
  if(flickcurl_prepare(fc, "flickr.places.placesForBoundingBox"))
709
689
    goto tidy;
710
690
 
711
691
  doc = flickcurl_invoke(fc);
768
748
                                   int min_taken_date,
769
749
                                   int max_taken_date)
770
750
{
771
 
  const char* parameters[17][2];
772
 
  int count = 0;
773
751
  xmlDocPtr doc = NULL;
774
752
  xmlXPathContextPtr xpathCtx = NULL; 
775
753
  flickcurl_place** places = NULL;
782
760
  char woe_id_str[10];
783
761
  char threshold_str[10];
784
762
  
 
763
  flickcurl_init_params(fc);
 
764
 
785
765
  if(!woe_id && !place_id)
786
766
    return NULL;
787
767
  
791
771
  
792
772
  /* deliberately not using deprecated parameter place_type */
793
773
/*  
794
 
  parameters[count][0]  = "place_type";
795
 
  parameters[count++][1]= place_type;
 
774
  flickcurl_add_param(fc, "place_type", place_type);
796
775
*/
797
 
  parameters[count][0]  = "place_type_id";
798
776
  sprintf(place_type_id_str, "%d", place_type_id);
799
 
  parameters[count++][1]= place_type_id_str;
 
777
  flickcurl_add_param(fc, "place_type_id", place_type_id_str);
800
778
  if(woe_id >= 0) {
801
 
    parameters[count][0]  = "woe_id";
802
779
    sprintf(woe_id_str, "%d", woe_id);
803
 
    parameters[count++][1]= woe_id_str;
 
780
    flickcurl_add_param(fc, "woe_id", woe_id_str);
804
781
  }
805
782
  if(place_id) {
806
 
    parameters[count][0]  = "place_id";
807
 
    parameters[count++][1]= place_id;
 
783
    flickcurl_add_param(fc, "place_id", place_id);
808
784
  }
809
 
  parameters[count][0]  = "threshold";
810
785
  sprintf(threshold_str, "%d", threshold);
811
 
  parameters[count++][1]= threshold_str;
 
786
  flickcurl_add_param(fc, "threshold", threshold_str);
812
787
 
813
788
  if(contacts) {
814
 
    parameters[count][0]  = "contacts";
815
 
    parameters[count++][1]= contacts;
 
789
    flickcurl_add_param(fc, "contacts", contacts);
816
790
  }
817
791
  if(min_upload_date >= 0) {
818
792
    sprintf(min_upload_date_s, "%d", min_upload_date);
819
 
    parameters[count][0]  = "min_upload_date";
820
 
    parameters[count++][1]= min_upload_date_s;
 
793
    flickcurl_add_param(fc, "min_upload_date", min_upload_date_s);
821
794
  }
822
795
  if(max_upload_date >= 0) {
823
796
    sprintf(max_upload_date_s, "%d", max_upload_date);
824
 
    parameters[count][0]  = "max_upload_date";
825
 
    parameters[count++][1]= max_upload_date_s;
 
797
    flickcurl_add_param(fc, "max_upload_date", max_upload_date_s);
826
798
  }
827
799
  if(min_taken_date >= 0) {
828
800
    sprintf(min_taken_date_s, "%d", min_taken_date);
829
 
    parameters[count][0]  = "min_taken_date";
830
 
    parameters[count++][1]= min_taken_date_s;
 
801
    flickcurl_add_param(fc, "min_taken_date", min_taken_date_s);
831
802
  }
832
803
  if(max_taken_date >= 0) {
833
804
    sprintf(max_taken_date_s, "%d", max_taken_date);
834
 
    parameters[count][0]  = "max_taken_date";
835
 
    parameters[count++][1]= max_taken_date_s;
 
805
    flickcurl_add_param(fc, "max_taken_date", max_taken_date_s);
836
806
  }
837
807
  
838
 
  parameters[count][0]  = NULL;
 
808
  flickcurl_end_params(fc);
839
809
 
840
 
  if(flickcurl_prepare(fc, "flickr.places.placesForContacts", parameters,
841
 
                       count))
 
810
  if(flickcurl_prepare(fc, "flickr.places.placesForContacts"))
842
811
    goto tidy;
843
812
 
844
813
  doc = flickcurl_invoke(fc);
915
884
                               const char* min_upload_date, const char* max_upload_date,
916
885
                               const char* min_taken_date, const char* max_taken_date)
917
886
{
918
 
  const char* parameters[19][2];
919
 
  int count = 0;
920
887
  xmlDocPtr doc = NULL;
921
888
  xmlXPathContextPtr xpathCtx = NULL; 
922
889
  void* result = NULL;
924
891
  int place_type_id;
925
892
  char woe_id_str[10];
926
893
  
 
894
  flickcurl_init_params(fc);
 
895
 
927
896
  place_type_id = flickcurl_place_type_to_id(place_type);
928
897
  if(place_type_id < 0)
929
898
    return 1;
930
899
 
931
 
  parameters[count][0]  = "place_type_id";
932
900
  sprintf(place_type_id_str, "%d", place_type_id);
933
 
  parameters[count++][1]= place_type_id_str;
934
 
  parameters[count][0]  = "woe_id";
 
901
  flickcurl_add_param(fc, "place_type_id", place_type_id_str);
935
902
  sprintf(woe_id_str, "%d", woe_id);
936
 
  parameters[count++][1]= woe_id_str;
937
 
  parameters[count][0]  = "place_id";
938
 
  parameters[count++][1]= place_id;
939
 
  parameters[count][0]  = "threshold";
940
 
  parameters[count++][1]= threshold;
941
 
  parameters[count][0]  = "tags";
942
 
  parameters[count++][1]= tags;
943
 
  parameters[count][0]  = "tag_mode";
944
 
  parameters[count++][1]= tag_mode;
945
 
  parameters[count][0]  = "machine_tags";
946
 
  parameters[count++][1]= machine_tags;
947
 
  parameters[count][0]  = "machine_tag_mode";
948
 
  parameters[count++][1]= machine_tag_mode;
949
 
  parameters[count][0]  = "min_upload_date";
950
 
  parameters[count++][1]= min_upload_date;
951
 
  parameters[count][0]  = "max_upload_date";
952
 
  parameters[count++][1]= max_upload_date;
953
 
  parameters[count][0]  = "min_taken_date";
954
 
  parameters[count++][1]= min_taken_date;
955
 
  parameters[count][0]  = "max_taken_date";
956
 
  parameters[count++][1]= max_taken_date;
957
 
 
958
 
  parameters[count][0]  = NULL;
959
 
 
960
 
  if(flickcurl_prepare(fc, "flickr.places.placesForTags", parameters, count))
 
903
  flickcurl_add_param(fc, "woe_id", woe_id_str);
 
904
  flickcurl_add_param(fc, "place_id", place_id);
 
905
  flickcurl_add_param(fc, "threshold", threshold);
 
906
  flickcurl_add_param(fc, "tags", tags);
 
907
  flickcurl_add_param(fc, "tag_mode", tag_mode);
 
908
  flickcurl_add_param(fc, "machine_tags", machine_tags);
 
909
  flickcurl_add_param(fc, "machine_tag_mode", machine_tag_mode);
 
910
  flickcurl_add_param(fc, "min_upload_date", min_upload_date);
 
911
  flickcurl_add_param(fc, "max_upload_date", max_upload_date);
 
912
  flickcurl_add_param(fc, "min_taken_date", min_taken_date);
 
913
  flickcurl_add_param(fc, "max_taken_date", max_taken_date);
 
914
 
 
915
  flickcurl_end_params(fc);
 
916
 
 
917
  if(flickcurl_prepare(fc, "flickr.places.placesForTags"))
961
918
    goto tidy;
962
919
 
963
920
  doc = flickcurl_invoke(fc);
999
956
flickcurl_place*
1000
957
flickcurl_places_resolvePlaceId(flickcurl* fc, const char* place_id)
1001
958
{
1002
 
  const char* parameters[8][2];
1003
 
  int count = 0;
1004
959
  xmlDocPtr doc = NULL;
1005
960
  xmlXPathContextPtr xpathCtx = NULL; 
1006
961
  flickcurl_place* place = NULL;
1007
962
  
 
963
  flickcurl_init_params(fc);
 
964
 
1008
965
  if(!place_id)
1009
966
    return NULL;
1010
967
 
1011
 
  parameters[count][0]  = "place_id";
1012
 
  parameters[count++][1]= place_id;
1013
 
 
1014
 
  parameters[count][0]  = NULL;
1015
 
 
1016
 
  if(flickcurl_prepare_noauth(fc, "flickr.places.resolvePlaceId",
1017
 
                              parameters, count))
 
968
  flickcurl_add_param(fc, "place_id", place_id);
 
969
 
 
970
  flickcurl_end_params(fc);
 
971
 
 
972
  if(flickcurl_prepare_noauth(fc, "flickr.places.resolvePlaceId"))
1018
973
    goto tidy;
1019
974
 
1020
975
  doc = flickcurl_invoke(fc);
1057
1012
flickcurl_place*
1058
1013
flickcurl_places_resolvePlaceURL(flickcurl* fc, const char* url)
1059
1014
{
1060
 
  const char* parameters[8][2];
1061
 
  int count = 0;
1062
1015
  xmlDocPtr doc = NULL;
1063
1016
  xmlXPathContextPtr xpathCtx = NULL; 
1064
1017
  flickcurl_place* place = NULL;
1065
1018
  
 
1019
  flickcurl_init_params(fc);
 
1020
 
1066
1021
  if(!url)
1067
1022
    return NULL;
1068
1023
 
1069
 
  parameters[count][0]  = "url";
1070
 
  parameters[count++][1]= url;
1071
 
 
1072
 
  parameters[count][0]  = NULL;
1073
 
 
1074
 
  if(flickcurl_prepare_noauth(fc, "flickr.places.resolvePlaceURL",
1075
 
                              parameters, count))
 
1024
  flickcurl_add_param(fc, "url", url);
 
1025
 
 
1026
  flickcurl_end_params(fc);
 
1027
 
 
1028
  if(flickcurl_prepare_noauth(fc, "flickr.places.resolvePlaceURL"))
1076
1029
    goto tidy;
1077
1030
 
1078
1031
  doc = flickcurl_invoke(fc);
1123
1076
                               int woe_id, const char* place_id,
1124
1077
                               int threshold)
1125
1078
{
1126
 
  const char* parameters[10][2];
1127
 
  int count = 0;
1128
1079
  xmlDocPtr doc = NULL;
1129
1080
  xmlXPathContextPtr xpathCtx = NULL; 
1130
1081
  flickcurl_place** places = NULL;
1132
1083
  char woe_id_str[20];
1133
1084
  char threshold_str[4];
1134
1085
 
 
1086
  flickcurl_init_params(fc);
 
1087
 
1135
1088
  place_type_str = flickcurl_get_place_type_label(place_type);
1136
1089
  if(!place_type_str) {
1137
1090
    flickcurl_error(fc, "Invalid place type %d", place_type);
1147
1100
    return NULL;
1148
1101
  }
1149
1102
 
1150
 
  parameters[count][0]  = "place_type";
1151
 
  parameters[count++][1]= place_type_str;
 
1103
  flickcurl_add_param(fc, "place_type", place_type_str);
1152
1104
 
1153
1105
  if(woe_id >= 0) {
1154
1106
    sprintf(woe_id_str, "%d", woe_id);
1155
 
    parameters[count][0]  = "woe_id";
1156
 
    parameters[count++][1]= woe_id_str;
 
1107
    flickcurl_add_param(fc, "woe_id", woe_id_str);
1157
1108
  }
1158
1109
 
1159
1110
  if(place_id) {
1160
 
    parameters[count][0]  = "place_id";
1161
 
    parameters[count++][1]= place_id;
 
1111
    flickcurl_add_param(fc, "place_id", place_id);
1162
1112
  }
1163
1113
 
1164
1114
  if(threshold >= 0) {
1165
1115
    sprintf(threshold_str, "%d", threshold);
1166
 
    parameters[count][0]  = "threshold";
1167
 
    parameters[count++][1]= threshold_str;
 
1116
    flickcurl_add_param(fc, "threshold", threshold_str);
1168
1117
  }
1169
1118
 
1170
 
  parameters[count][0]  = NULL;
 
1119
  flickcurl_end_params(fc);
1171
1120
 
1172
 
  if(flickcurl_prepare(fc, "flickr.places.placesForUser", parameters, count))
 
1121
  if(flickcurl_prepare(fc, "flickr.places.placesForUser"))
1173
1122
    goto tidy;
1174
1123
 
1175
1124
  doc = flickcurl_invoke(fc);
1244
1193
                              int min_upload_date, int max_upload_date,
1245
1194
                              int min_taken_date, int max_taken_date)
1246
1195
{
1247
 
  const char* parameters[13][2];
1248
 
  int count = 0;
1249
1196
  xmlDocPtr doc = NULL;
1250
1197
  xmlXPathContextPtr xpathCtx = NULL; 
1251
1198
  char woe_id_str[20];
1255
1202
  char max_taken_date_str[20];
1256
1203
  flickcurl_tag** tags = NULL;
1257
1204
  
 
1205
  flickcurl_init_params(fc);
 
1206
 
1258
1207
  if(woe_id < 0 && !place_id)
1259
1208
    return NULL;
1260
1209
 
1261
1210
  if(woe_id >= 0) {
1262
 
    parameters[count][0]  = "woe_id";
1263
1211
    sprintf(woe_id_str, "%d", woe_id);
1264
 
    parameters[count++][1]= woe_id_str;
 
1212
    flickcurl_add_param(fc, "woe_id", woe_id_str);
1265
1213
  }
1266
1214
  if(place_id) {
1267
 
    parameters[count][0]  = "place_id";
1268
 
    parameters[count++][1]= place_id;
 
1215
    flickcurl_add_param(fc, "place_id", place_id);
1269
1216
  }
1270
1217
  if(min_upload_date) {
1271
 
    parameters[count][0]  = "min_upload_date";
1272
1218
    sprintf(min_upload_date_str, "%d", min_upload_date);
1273
 
    parameters[count++][1]= min_upload_date_str;
 
1219
    flickcurl_add_param(fc, "min_upload_date", min_upload_date_str);
1274
1220
  }
1275
1221
  if(min_upload_date) {
1276
 
    parameters[count][0]  = "max_upload_date";
1277
1222
    sprintf(min_upload_date_str, "%d", min_upload_date);    
1278
 
    parameters[count++][1]= max_upload_date_str;
 
1223
    flickcurl_add_param(fc, "max_upload_date", max_upload_date_str);
1279
1224
  }
1280
1225
  if(max_upload_date) {
1281
 
    parameters[count][0]  = "min_taken_date";
1282
1226
    sprintf(max_upload_date_str, "%d", max_upload_date);    
1283
 
    parameters[count++][1]= min_taken_date_str;
 
1227
    flickcurl_add_param(fc, "min_taken_date", min_taken_date_str);
1284
1228
  }
1285
1229
  if(min_taken_date) {
1286
 
    parameters[count][0]  = "max_taken_date";
1287
1230
    sprintf(min_taken_date_str, "%d", min_taken_date);    
1288
 
    parameters[count++][1]= max_taken_date_str;
 
1231
    flickcurl_add_param(fc, "max_taken_date", max_taken_date_str);
1289
1232
  }
1290
1233
 
1291
 
  parameters[count][0]  = NULL;
 
1234
  flickcurl_end_params(fc);
1292
1235
 
1293
 
  if(flickcurl_prepare(fc, "flickr.places.tagsForPlace", parameters, count))
 
1236
  if(flickcurl_prepare(fc, "flickr.places.tagsForPlace"))
1294
1237
    goto tidy;
1295
1238
 
1296
1239
  doc = flickcurl_invoke(fc);