flickrie 1.6.0 → 1.6.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -27,8 +27,7 @@ module Flickrie
27
27
 
28
28
  # You can think of this as a richer Array. It defines some pagination attributes
29
29
  # (you can even use it with [will_paginate](https://github.com/mislav/will_paginate),
30
- # see {Flickrie.pagination}). It also has the method {#find} which finds by ID
31
- # (just like ActiveRecord).
30
+ # see {Flickrie.pagination}), and some other useful methods.
32
31
  class Collection
33
32
  # @!parse attr_reader :current_page, :per_page, :total_entries, :total_pages
34
33
 
@@ -0,0 +1,10 @@
1
+ module Flickrie
2
+ module Deprecatable
3
+ def deprecated_alias(name, replacement)
4
+ define_method(name) do |*args, &block|
5
+ warn "Flickrie: ##{name} is deprecated, please use ##{replacement} instead"
6
+ send(replacement, *args, &block)
7
+ end
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,246 @@
1
+ module Flickrie
2
+ NOT_IMPLEMENTED = "Not implemented yet"
3
+
4
+ FLICKR_API_METHODS = {
5
+ "flickr.activity.userComments" => NOT_IMPLEMENTED,
6
+ "flickr.activity.userPhotos" => NOT_IMPLEMENTED,
7
+
8
+ "flickr.auth.checkToken" => NOT_IMPLEMENTED,
9
+ "flickr.auth.getFrob" => NOT_IMPLEMENTED,
10
+ "flickr.auth.getFullToken" => NOT_IMPLEMENTED,
11
+ "flickr.auth.getToken" => NOT_IMPLEMENTED,
12
+
13
+ "flickr.auth.oauth.checkToken" => NOT_IMPLEMENTED,
14
+ "flickr.auth.oauth.getAccessToken" => NOT_IMPLEMENTED,
15
+
16
+ "flickr.blogs.getList" => NOT_IMPLEMENTED,
17
+ "flickr.blogs.getServices" => NOT_IMPLEMENTED,
18
+ "flickr.blogs.postPhoto" => NOT_IMPLEMENTED,
19
+
20
+ "flickr.collections.getInfo" => NOT_IMPLEMENTED,
21
+ "flickr.collections.getTree" => NOT_IMPLEMENTED,
22
+
23
+ "flickr.commons.getInstitutions" => NOT_IMPLEMENTED,
24
+
25
+ "flickr.contacts.getList" => NOT_IMPLEMENTED,
26
+ "flickr.contacts.getListRecentlyUploaded" => NOT_IMPLEMENTED,
27
+ "flickr.contacts.getPublicList" => NOT_IMPLEMENTED,
28
+ "flickr.contacts.getTaggingSuggestions" => NOT_IMPLEMENTED,
29
+
30
+ "flickr.favorites.add" => NOT_IMPLEMENTED,
31
+ "flickr.favorites.getContext" => NOT_IMPLEMENTED,
32
+ "flickr.favorites.getList" => NOT_IMPLEMENTED,
33
+ "flickr.favorites.getPublicList" => NOT_IMPLEMENTED,
34
+ "flickr.favorites.remove" => NOT_IMPLEMENTED,
35
+
36
+ "flickr.galleries.addPhoto" => NOT_IMPLEMENTED,
37
+ "flickr.galleries.create" => NOT_IMPLEMENTED,
38
+ "flickr.galleries.editMeta" => NOT_IMPLEMENTED,
39
+ "flickr.galleries.editPhoto" => NOT_IMPLEMENTED,
40
+ "flickr.galleries.editPhotos" => NOT_IMPLEMENTED,
41
+ "flickr.galleries.getInfo" => NOT_IMPLEMENTED,
42
+ "flickr.galleries.getList" => NOT_IMPLEMENTED,
43
+ "flickr.galleries.getListForPhoto" => NOT_IMPLEMENTED,
44
+ "flickr.galleries.getPhotos" => NOT_IMPLEMENTED,
45
+
46
+ "flickr.groups.browse" => NOT_IMPLEMENTED,
47
+ "flickr.groups.getInfo" => NOT_IMPLEMENTED,
48
+ "flickr.groups.join" => NOT_IMPLEMENTED,
49
+ "flickr.groups.joinRequest" => NOT_IMPLEMENTED,
50
+ "flickr.groups.leave" => NOT_IMPLEMENTED,
51
+ "flickr.groups.search" => NOT_IMPLEMENTED,
52
+
53
+ "flickr.groups.discuss.replies.add" => NOT_IMPLEMENTED,
54
+ "flickr.groups.discuss.replies.delete" => NOT_IMPLEMENTED,
55
+ "flickr.groups.discuss.replies.edit" => NOT_IMPLEMENTED,
56
+ "flickr.groups.discuss.replies.getInfo" => NOT_IMPLEMENTED,
57
+ "flickr.groups.discuss.replies.getList" => NOT_IMPLEMENTED,
58
+
59
+ "flickr.groups.discuss.topics.add" => NOT_IMPLEMENTED,
60
+ "flickr.groups.discuss.topics.getInfo" => NOT_IMPLEMENTED,
61
+ "flickr.groups.discuss.topics.getList" => NOT_IMPLEMENTED,
62
+
63
+ "flickr.groups.members.getList" => NOT_IMPLEMENTED,
64
+
65
+ "flickr.groups.pools.add" => NOT_IMPLEMENTED,
66
+ "flickr.groups.pools.getContext" => NOT_IMPLEMENTED,
67
+ "flickr.groups.pools.getGroups" => NOT_IMPLEMENTED,
68
+ "flickr.groups.pools.getPhotos" => NOT_IMPLEMENTED,
69
+ "flickr.groups.pools.remove" => NOT_IMPLEMENTED,
70
+
71
+ "flickr.interestingness.getList" => NOT_IMPLEMENTED,
72
+
73
+ "flickr.machinetags.getNamespaces" => NOT_IMPLEMENTED,
74
+ "flickr.machinetags.getPairs" => NOT_IMPLEMENTED,
75
+ "flickr.machinetags.getPredicates" => NOT_IMPLEMENTED,
76
+ "flickr.machinetags.getRecentValues" => NOT_IMPLEMENTED,
77
+ "flickr.machinetags.getValues" => NOT_IMPLEMENTED,
78
+
79
+ "flickr.panda.getList" => NOT_IMPLEMENTED,
80
+ "flickr.panda.getPhotos" => NOT_IMPLEMENTED,
81
+
82
+ "flickr.people.findByEmail" => "find_user_by_email",
83
+ "flickr.people.findByUsername" => "find_user_by_username",
84
+ "flickr.people.getGroups" => NOT_IMPLEMENTED,
85
+ "flickr.people.getInfo" => "get_user_info",
86
+ "flickr.people.getLimits" => NOT_IMPLEMENTED,
87
+ "flickr.people.getPhotos" => "get_(photos|videos|media)_from_user",
88
+ "flickr.people.getPhotosOf" => "get_(photos|videos|media)_of_user",
89
+ "flickr.people.getPublicGroups" => NOT_IMPLEMENTED,
90
+ "flickr.people.getPublicPhotos" => "get_public_(photos|videos|media)_from_user",
91
+ "flickr.people.getUploadStatus" => "get_upload_status",
92
+
93
+ "flickr.photos.addTags" => "tag_(photo|video|media)",
94
+ "flickr.photos.delete" => "delete_(photo|video|media)",
95
+ "flickr.photos.getAllContexts" => NOT_IMPLEMENTED,
96
+ "flickr.photos.getContactsPhotos" => "get_(photos|videos|media)_from_contacts",
97
+ "flickr.photos.getContactsPublicPhotos" => "get_public_(photos|videos|media)_from_contacts",
98
+ "flickr.photos.getContext" => "get_(photo|video|media)_context",
99
+ "flickr.photos.getCounts" => "get_(photo|video|media)_counts",
100
+ "flickr.photos.getExif" => "get_(photo|video)_exif",
101
+ "flickr.photos.getFavorites" => "get_(photo|video)_favorites",
102
+ "flickr.photos.getInfo" => "get_(photo|video|media)_info",
103
+ "flickr.photos.getNotInSet" => "get_(photos|videos|media)_not_in_set",
104
+ "flickr.photos.getPerms" => "get_(photo|video)_permissions",
105
+ "flickr.photos.getRecent" => "get_recent_(photos|videos|media)",
106
+ "flickr.photos.getSizes" => "get_(photo|video)_sizes",
107
+ "flickr.photos.getUntagged" => "get_untagged_(photos|videos|media)",
108
+ "flickr.photos.getWithGeoData" => "get_(photos|videos|media)_with_geo_data",
109
+ "flickr.photos.getWithoutGeoData" => "get_(photos|videos|media)_without_geo_data",
110
+ "flickr.photos.recentlyUpdated" => "get_recently_updated_(photos|videos|media)",
111
+ "flickr.photos.removeTag" => "untag_(photo|video|media)",
112
+ "flickr.photos.search" => "search_(photos|videos|media)",
113
+ "flickr.photos.setContentType" => "set_(photo|video|media)_content_type",
114
+ "flickr.photos.setDates" => "set_(photo|video|media)_dates",
115
+ "flickr.photos.setMeta" => "set_(photo|video|media)_meta",
116
+ "flickr.photos.setPerms" => "set_(photo|video|media)_permissions",
117
+ "flickr.photos.setSafetyLevel" => "set_(photo|video|media)_safety_level",
118
+ "flickr.photos.setTags" => "set_(photo|video|media)_tags",
119
+
120
+ "flickr.photos.comments.addComment" => "comment_(photo|video|media)",
121
+ "flickr.photos.comments.deleteComment" => "delete_(photo|video|media)_comment",
122
+ "flickr.photos.comments.editComment" => "edit_(photo|video|media)_comment",
123
+ "flickr.photos.comments.getList" => "get_(photo|video|media)_comments",
124
+ "flickr.photos.comments.getRecentForContacts" => "get_recently_commented_(photos|videos|media)_from_contacts",
125
+
126
+ "flickr.photos.geo.batchCorrectLocation" => NOT_IMPLEMENTED,
127
+ "flickr.photos.geo.correctLocation" => NOT_IMPLEMENTED,
128
+ "flickr.photos.geo.getLocation" => NOT_IMPLEMENTED,
129
+ "flickr.photos.geo.getPerms" => NOT_IMPLEMENTED,
130
+ "flickr.photos.geo.photosForLocation" => NOT_IMPLEMENTED,
131
+ "flickr.photos.geo.removeLocation" => NOT_IMPLEMENTED,
132
+ "flickr.photos.geo.setContext" => NOT_IMPLEMENTED,
133
+ "flickr.photos.geo.setLocation" => NOT_IMPLEMENTED,
134
+ "flickr.photos.geo.setPerms" => NOT_IMPLEMENTED,
135
+
136
+ "flickr.photos.licenses.getInfo" => "get_licenses",
137
+ "flickr.photos.licenses.setLicense" => "set_(photo|video|media)_license",
138
+
139
+ "flickr.photos.notes.add" => NOT_IMPLEMENTED,
140
+ "flickr.photos.notes.delete" => NOT_IMPLEMENTED,
141
+ "flickr.photos.notes.edit" => NOT_IMPLEMENTED,
142
+
143
+ "flickr.photos.people.add" => NOT_IMPLEMENTED,
144
+ "flickr.photos.people.delete" => NOT_IMPLEMENTED,
145
+ "flickr.photos.people.deleteCoords" => NOT_IMPLEMENTED,
146
+ "flickr.photos.people.editCoords" => NOT_IMPLEMENTED,
147
+ "flickr.photos.people.getList" => NOT_IMPLEMENTED,
148
+
149
+ "flickr.photos.suggestions.approveSuggestion" => NOT_IMPLEMENTED,
150
+ "flickr.photos.suggestions.getList" => NOT_IMPLEMENTED,
151
+ "flickr.photos.suggestions.rejectSuggestion" => NOT_IMPLEMENTED,
152
+ "flickr.photos.suggestions.removeSuggestion" => NOT_IMPLEMENTED,
153
+ "flickr.photos.suggestions.suggestLocation" => NOT_IMPLEMENTED,
154
+
155
+ "flickr.photos.transform.rotate" => "rotate_(photo|video|media)",
156
+
157
+ "flickr.photos.upload.checkTickets" => "check_upload_tickets",
158
+
159
+ "flickr.photosets.addPhoto" => "add_(photos|videos|media)_to_set",
160
+ "flickr.photosets.create" => "create_set",
161
+ "flickr.photosets.delete" => "delete_set",
162
+ "flickr.photosets.editMeta" => "edit_set_metadata",
163
+ "flickr.photosets.editPhotos" => "edit_set_(photos|videos|media)",
164
+ "flickr.photosets.getContext" => "get_set_context",
165
+ "flickr.photosets.getInfo" => "get_set_info",
166
+ "flickr.photosets.getList" => "get_sets_from_user",
167
+ "flickr.photosets.getPhotos" => "get_(photos|videos|media)_from_set",
168
+ "flickr.photosets.orderSets" => "order_sets",
169
+ "flickr.photosets.removePhoto" => "remove_(photos|videos|media)_from_set",
170
+ "flickr.photosets.removePhotos" => "remove_(photos|videos|media)_from_set",
171
+ "flickr.photosets.reorderPhotos" => "reorder_(photos|videos|media)_in_set",
172
+ "flickr.photosets.setPrimaryPhoto" => "set_set_primary_(photo|video|media)",
173
+
174
+ "flickr.photosets.comments.addComment" => NOT_IMPLEMENTED,
175
+ "flickr.photosets.comments.deleteComment" => NOT_IMPLEMENTED,
176
+ "flickr.photosets.comments.editComment" => NOT_IMPLEMENTED,
177
+ "flickr.photosets.comments.getList" => NOT_IMPLEMENTED,
178
+
179
+ "flickr.places.find" => NOT_IMPLEMENTED,
180
+ "flickr.places.findByLatLon" => NOT_IMPLEMENTED,
181
+ "flickr.places.getChildrenWithPhotosPublic" => NOT_IMPLEMENTED,
182
+ "flickr.places.getInfo" => NOT_IMPLEMENTED,
183
+ "flickr.places.getInfoByUrl" => NOT_IMPLEMENTED,
184
+ "flickr.places.getPlaceTypes" => NOT_IMPLEMENTED,
185
+ "flickr.places.getShapeHistory" => NOT_IMPLEMENTED,
186
+ "flickr.places.getTopPlacesList" => NOT_IMPLEMENTED,
187
+ "flickr.places.placesForBoundingBox" => NOT_IMPLEMENTED,
188
+ "flickr.places.placesForContacts" => NOT_IMPLEMENTED,
189
+ "flickr.places.placesForTags" => NOT_IMPLEMENTED,
190
+ "flickr.places.placesForUser" => NOT_IMPLEMENTED,
191
+ "flickr.places.resolvePlaceId" => NOT_IMPLEMENTED,
192
+ "flickr.places.resolvePlaceURL" => NOT_IMPLEMENTED,
193
+ "flickr.places.tagsForPlace" => NOT_IMPLEMENTED,
194
+
195
+ "flickr.prefs.getContentType" => NOT_IMPLEMENTED,
196
+ "flickr.prefs.getGeoPerms" => NOT_IMPLEMENTED,
197
+ "flickr.prefs.getHidden" => NOT_IMPLEMENTED,
198
+ "flickr.prefs.getPrivacy" => NOT_IMPLEMENTED,
199
+ "flickr.prefs.getSafetyLevel" => NOT_IMPLEMENTED,
200
+
201
+ "flickr.push.getSubscriptions" => NOT_IMPLEMENTED,
202
+ "flickr.push.getTopics" => NOT_IMPLEMENTED,
203
+ "flickr.push.subscribe" => NOT_IMPLEMENTED,
204
+ "flickr.push.unsubscribe" => NOT_IMPLEMENTED,
205
+
206
+ "flickr.reflection.getMethodInfo" => NOT_IMPLEMENTED,
207
+ "flickr.reflection.getMethods" => "get_methods",
208
+
209
+ "flickr.stats.getCollectionDomains" => NOT_IMPLEMENTED,
210
+ "flickr.stats.getCollectionReferrers" => NOT_IMPLEMENTED,
211
+ "flickr.stats.getCollectionStats" => NOT_IMPLEMENTED,
212
+ "flickr.stats.getCSVFiles" => NOT_IMPLEMENTED,
213
+ "flickr.stats.getPhotoDomains" => NOT_IMPLEMENTED,
214
+ "flickr.stats.getPhotoReferrers" => NOT_IMPLEMENTED,
215
+ "flickr.stats.getPhotoStats" => NOT_IMPLEMENTED,
216
+ "flickr.stats.getPhotosetDomains" => NOT_IMPLEMENTED,
217
+ "flickr.stats.getPhotosetReferrers" => NOT_IMPLEMENTED,
218
+ "flickr.stats.getPhotosetStats" => NOT_IMPLEMENTED,
219
+ "flickr.stats.getPhotostreamDomains" => NOT_IMPLEMENTED,
220
+ "flickr.stats.getPhotostreamReferrers" => NOT_IMPLEMENTED,
221
+ "flickr.stats.getPhotostreamStats" => NOT_IMPLEMENTED,
222
+ "flickr.stats.getPopularPhotos" => NOT_IMPLEMENTED,
223
+ "flickr.stats.getTotalViews" => NOT_IMPLEMENTED,
224
+
225
+ "flickr.tags.getClusterPhotos" => NOT_IMPLEMENTED,
226
+ "flickr.tags.getClusters" => NOT_IMPLEMENTED,
227
+ "flickr.tags.getHotList" => NOT_IMPLEMENTED,
228
+ "flickr.tags.getListPhoto" => NOT_IMPLEMENTED,
229
+ "flickr.tags.getListUser" => NOT_IMPLEMENTED,
230
+ "flickr.tags.getListUserPopular" => NOT_IMPLEMENTED,
231
+ "flickr.tags.getListUserRaw" => NOT_IMPLEMENTED,
232
+ "flickr.tags.getMostFrequentlyUsed" => NOT_IMPLEMENTED,
233
+ "flickr.tags.getRelated" => NOT_IMPLEMENTED,
234
+
235
+ "flickr.test.echo" => NOT_IMPLEMENTED,
236
+ "flickr.test.login" => "test_login",
237
+ "flickr.test.null" => NOT_IMPLEMENTED,
238
+
239
+ "flickr.urls.getGroup" => NOT_IMPLEMENTED,
240
+ "flickr.urls.getUserPhotos" => NOT_IMPLEMENTED,
241
+ "flickr.urls.getUserProfile" => NOT_IMPLEMENTED,
242
+ "flickr.urls.lookupGallery" => NOT_IMPLEMENTED,
243
+ "flickr.urls.lookupGroup" => NOT_IMPLEMENTED,
244
+ "flickr.urls.lookupUser" => NOT_IMPLEMENTED
245
+ }
246
+ end
@@ -19,7 +19,6 @@ module Flickrie
19
19
  @access_token, @access_secret = access_token, access_secret
20
20
  end
21
21
 
22
- include Callable
23
22
  include ApiMethods
24
23
  end
25
24
  end
@@ -11,141 +11,166 @@ module Flickrie
11
11
 
12
12
  # Ugly, just normalizing the data
13
13
  def fix_flickr_data!(response)
14
- data = response.env[:body]
15
14
  query = CGI.parse(response.env[:url].query)
16
15
  flickr_method = query['method'].first
17
16
 
18
17
  case flickr_method
19
- # people
20
- when 'flickr.people.findByUsername'
21
- data['user']['username'] = data['user']['username']['_content'] rescue nil
22
- when 'flickr.people.findByEmail'
23
- data['user']['username'] = data['user']['username']['_content'] rescue nil
24
- when 'flickr.people.getInfo'
25
- %w[username realname location description profileurl mobileurl photosurl].each do |attribute|
26
- data['person'][attribute] = data['person'][attribute]['_content'] rescue nil
27
- end
28
- %w[count firstdatetaken firstdate].each do |photo_attribute|
29
- data['person']['photos'][photo_attribute] = data['person']['photos'][photo_attribute]['_content'] rescue nil
18
+ when "flickr.photos.getSizes"
19
+ response.env[:body]['sizes']['id'] = query['photo_id'].first
20
+ when "flickr.photosets.getList"
21
+ response.env[:body]['photosets']['photoset'].map! do |set_hash|
22
+ set_hash['owner'] = query['user_id'].first
23
+ set_hash
30
24
  end
31
- when 'flickr.test.login'
32
- data['user']['username'] = data['user']['username']['_content'] rescue nil
33
- when 'flickr.people.getUploadStatus'
34
- data['user']['username'] = data['user']['username']['_content'] rescue nil
35
- data['user']['upload_status'] = {
36
- 'bandwidth' => data['user'].delete('bandwidth'),
37
- 'filesize' => data['user'].delete('filesize'),
38
- 'sets' => data['user'].delete('sets'),
39
- 'videosize' => data['user'].delete('videosize'),
40
- 'videos' => data['user'].delete('videos')
41
- }
25
+ end
26
+
27
+ response.env[:body] = cleanup_content(response.env[:body])
28
+ action = actions[flickr_method]
29
+ action.call(response.env[:body]) if action
30
+ end
42
31
 
43
- # photos
44
- when 'flickr.people.getPhotos'
45
- fix_common!(data)
46
- when 'flickr.people.getPublicPhotos'
47
- fix_common!(data)
48
- when 'flickr.photos.getInfo'
49
- data['photo']['title'] = data['photo']['title']['_content'] rescue nil
50
- data['photo']['description'] = data['photo']['description']['_content'] rescue nil
51
- data['photo']['comments_count'] = data['photo'].delete('comments')['_content'] rescue nil
52
- data['photo']['dates']['uploaded'] = data['photo'].delete('dateuploaded') rescue nil
53
- data['photo']['tags'] = data['photo']['tags']['tag']
54
- when 'flickr.photosets.getPhotos'
55
- data['photoset']['photo'].map! do |media_hash|
56
- media_hash['owner'] = {
57
- 'id' => data['photoset']['owner'],
58
- 'nsid' => data['photoset']['owner'],
59
- 'username' => data['photoset']['ownername'],
32
+ def actions
33
+ @actions ||= {
34
+ "flickr.people.findByUsername" => lambda { |data| },
35
+ "flickr.people.findByEmail" => lambda { |data| },
36
+ "flickr.people.getInfo" => lambda { |data| },
37
+ "flickr.people.getUploadStatus" => lambda { |data|
38
+ data['user']['upload_status'] = {
39
+ 'bandwidth' => data['user'].delete('bandwidth'),
40
+ 'filesize' => data['user'].delete('filesize'),
41
+ 'sets' => data['user'].delete('sets'),
42
+ 'videosize' => data['user'].delete('videosize'),
43
+ 'videos' => data['user'].delete('videos')
60
44
  }
61
- fix_extras!(media_hash)
62
- media_hash
63
- end
64
- when 'flickr.photos.getSizes'
65
- data['sizes']['usage'] = {
66
- 'canblog' => data['sizes']['canblog'],
67
- 'canprint' => data['sizes']['canprint'],
68
- 'candownload' => data['sizes']['candownload']
69
- }
70
- data['sizes']['id'] = query['photo_id'].first
71
- if data['sizes']['size'].find { |hash| hash['label'] == 'Video Player' }
72
- # Video
73
- data['sizes']['video'] ||= {}
74
- data['sizes']['size'].each do |info|
75
- case info['label']
76
- when 'Video Player' then data['sizes']['video']['source_url'] = info['source']
77
- when 'Site MP4' then data['sizes']['video']['download_url'] = info['source']
78
- when 'Mobile MP4' then data['sizes']['video']['mobile_download_url'] = info['source']
45
+ },
46
+ "flickr.people.getPhotos" => lambda { |data| fix_common!(data) },
47
+ "flickr.people.getPhotosOf" => lambda { |data| fix_common!(data) },
48
+ "flickr.people.getPublicPhotos" => lambda { |data| fix_common!(data) },
49
+
50
+ "flickr.photos.getInfo" => lambda { |data|
51
+ data['photo']['comments_count'] = data['photo'].delete('comments')
52
+ data['photo']['dates']['uploaded'] = data['photo'].delete('dateuploaded') rescue nil
53
+ data['photo']['tags'] = data['photo']['tags']['tag'] rescue nil
54
+ },
55
+
56
+ "flickr.photos.getSizes" => lambda { |data|
57
+ data['sizes']['usage'] = {
58
+ 'canblog' => data['sizes']['canblog'],
59
+ 'canprint' => data['sizes']['canprint'],
60
+ 'candownload' => data['sizes']['candownload']
61
+ }
62
+ if data['sizes']['size'].find { |hash| hash['label'] == 'Video Player' }
63
+ # Video
64
+ data['sizes']['video'] ||= {}
65
+ data['sizes']['size'].each do |info|
66
+ case info['label']
67
+ when 'Video Player' then data['sizes']['video']['source_url'] = info['source']
68
+ when 'Site MP4' then data['sizes']['video']['download_url'] = info['source']
69
+ when 'Mobile MP4' then data['sizes']['video']['mobile_download_url'] = info['source']
70
+ end
79
71
  end
72
+ else
73
+ flickr_sizes = {
74
+ 'Square' => Photo::FLICKR_SIZES['Square 75'],
75
+ 'Large Square' => Photo::FLICKR_SIZES['Square 150'],
76
+ 'Thumbnail' => Photo::FLICKR_SIZES['Thumbnail'],
77
+ 'Small' => Photo::FLICKR_SIZES['Small 240'],
78
+ 'Small 320' => Photo::FLICKR_SIZES['Small 320'],
79
+ 'Medium' => Photo::FLICKR_SIZES['Medium 500'],
80
+ 'Medium 640' => Photo::FLICKR_SIZES['Medium 640'],
81
+ 'Medium 800' => Photo::FLICKR_SIZES['Medium 800'],
82
+ 'Large' => Photo::FLICKR_SIZES['Large 1024'],
83
+ 'Large 1600' => Photo::FLICKR_SIZES['Large 1600'],
84
+ 'Large 2048' => Photo::FLICKR_SIZES['Large 2048'],
85
+ 'Original' => Photo::FLICKR_SIZES['Original']
86
+ }
87
+ data['sizes']['size'].each do |size_info|
88
+ size_abbr = flickr_sizes[size_info['label']]
89
+ data['sizes']["width_#{size_abbr}"] = size_info['width']
90
+ data['sizes']["height_#{size_abbr}"] = size_info['height']
91
+ data['sizes']["url_#{size_abbr}"] = size_info['source']
92
+ end
93
+ end
94
+ },
95
+ "flickr.photos.search" => lambda { |data| fix_common!(data) },
96
+ "flickr.photos.getContactsPhotos" => lambda { |data|
97
+ data['photos']['photo'].each do |media_hash|
98
+ media_hash['ownername'] = media_hash.delete('username')
99
+ end
100
+ fix_common!(data)
101
+ },
102
+ "flickr.photos.getContactsPublicPhotos" => lambda { |data|
103
+ data['photos']['photo'].each do |media_hash|
104
+ media_hash['ownername'] = media_hash.delete('username')
80
105
  end
81
- else
82
- flickr_sizes = {
83
- 'Square' => Photo::FLICKR_SIZES['Square 75'],
84
- 'Large Square' => Photo::FLICKR_SIZES['Square 150'],
85
- 'Thumbnail' => Photo::FLICKR_SIZES['Thumbnail'],
86
- 'Small' => Photo::FLICKR_SIZES['Small 240'],
87
- 'Small 320' => Photo::FLICKR_SIZES['Small 320'],
88
- 'Medium' => Photo::FLICKR_SIZES['Medium 500'],
89
- 'Medium 640' => Photo::FLICKR_SIZES['Medium 640'],
90
- 'Medium 800' => Photo::FLICKR_SIZES['Medium 800'],
91
- 'Large' => Photo::FLICKR_SIZES['Large 1024'],
92
- 'Large 1600' => Photo::FLICKR_SIZES['Large 1600'],
93
- 'Large 2048' => Photo::FLICKR_SIZES['Large 2048'],
94
- 'Original' => Photo::FLICKR_SIZES['Original']
106
+ fix_common!(data)
107
+ },
108
+ "flickr.photos.getNotInSet" => lambda { |data| fix_common!(data) },
109
+ "flickr.photos.getPerms" => lambda { |data|
110
+ fix_visibility!(data['perms'])
111
+ data['perms']['permissions'] = {
112
+ 'permcomment' => data['perms'].delete('permcomment'),
113
+ 'permaddmeta' => data['perms'].delete('permaddmeta')
95
114
  }
96
- data['sizes']['size'].each do |size_info|
97
- size_abbr = flickr_sizes[size_info['label']]
98
- data['sizes']["width_#{size_abbr}"] = size_info['width']
99
- data['sizes']["height_#{size_abbr}"] = size_info['height']
100
- data['sizes']["url_#{size_abbr}"] = size_info['source']
115
+ },
116
+ "flickr.photos.getRecent" => lambda { |data| fix_common!(data) },
117
+ "flickr.photos.getUntagged" => lambda { |data| fix_common!(data) },
118
+ "flickr.photos.getWithGeoData" => lambda { |data| fix_common!(data) },
119
+ "flickr.photos.getWithoutGeoData" => lambda { |data| fix_common!(data) },
120
+ "flickr.photos.recentlyUpdated" => lambda { |data| fix_common!(data) },
121
+
122
+ "flickr.photos.comments.getList" => lambda { |data|
123
+ data["comments"]["comment"].map! do |comment_hash|
124
+ comment_hash["photo_id"] = data["comments"]["photo_id"]
125
+ comment_hash["author"] = {
126
+ "id" => comment_hash["author"],
127
+ "nsid" => comment_hash.delete("author"),
128
+ "username" => comment_hash.delete("authorname"),
129
+ "iconserver" => comment_hash.delete("iconserver"),
130
+ "iconfarm" => comment_hash.delete("iconfarm")
131
+ }
132
+ comment_hash
101
133
  end
102
- end
103
- when 'flickr.photos.search'
104
- fix_common!(data)
105
- when 'flickr.photos.getContactsPhotos'
106
- data['photos']['photo'].each do |media_hash|
107
- media_hash['ownername'] = media_hash.delete('username')
108
- end
109
- fix_common!(data)
110
- when 'flickr.photos.getContactsPublicPhotos'
111
- data['photos']['photo'].each do |media_hash|
112
- media_hash['ownername'] = media_hash.delete('username')
113
- end
114
- fix_common!(data)
115
- when 'flickr.photos.getNotInSet'
116
- fix_common!(data)
117
- when 'flickr.people.getPhotosOf'
118
- fix_common!(data)
119
- when 'flickr.photos.getPerms'
120
- fix_visibility!(data['perms'])
121
- data['perms']['permissions'] = {
122
- 'permcomment' => data['perms'].delete('permcomment'),
123
- 'permaddmeta' => data['perms'].delete('permaddmeta')
124
- }
125
- when 'flickr.photos.getRecent'
126
- fix_common!(data)
127
- when 'flickr.photos.getUntagged'
128
- fix_common!(data)
129
- when 'flickr.photos.getWithGeoData'
130
- fix_common!(data)
131
- when 'flickr.photos.getWithoutGeoData'
132
- fix_common!(data)
133
- when 'flickr.photos.recentlyUpdated'
134
- fix_common!(data)
135
-
136
- # photosets
137
- when 'flickr.photosets.getInfo'
138
- data['photoset']['title'] = data['photoset']['title']['_content'] rescue nil
139
- data['photoset']['description'] = data['photoset']['description']['_content'] rescue nil
140
- when 'flickr.photosets.getList'
141
- data['photosets']['photoset'].map! do |set_hash|
142
- set_hash['count_photos'] = set_hash.delete('photos')
143
- set_hash['count_videos'] = set_hash.delete('videos')
144
- set_hash['title'] = set_hash['title']['_content'] rescue nil
145
- set_hash['description'] = set_hash['description']['_content'] rescue nil
146
- set_hash['owner'] = query['user_id'].first
147
- set_hash
148
- end
134
+ },
135
+ "flickr.photos.comments.getRecentForContacts" => lambda { |data| fix_common!(data) },
136
+
137
+ "flickr.photosets.getPhotos" => lambda { |data|
138
+ data['photoset']['photo'].map! do |media_hash|
139
+ media_hash['owner'] = {
140
+ 'id' => data['photoset']['owner'],
141
+ 'nsid' => data['photoset']['owner'],
142
+ 'username' => data['photoset']['ownername'],
143
+ }
144
+ fix_extras!(media_hash)
145
+ media_hash
146
+ end
147
+ },
148
+ "flickr.photosets.getInfo" => lambda { |data| },
149
+ "flickr.photosets.getList" => lambda { |data|
150
+ data['photosets']['photoset'].map! do |set_hash|
151
+ set_hash['count_photos'] = set_hash.delete('photos')
152
+ set_hash['count_videos'] = set_hash.delete('videos')
153
+ set_hash['title'] = set_hash['title']['_content'] rescue nil
154
+ set_hash['description'] = set_hash['description']['_content'] rescue nil
155
+ set_hash
156
+ end
157
+ },
158
+ "flickr.reflection.getMethods" => lambda { |data|
159
+ data['methods']['method'].map! { |hash| hash["_content"] }
160
+ },
161
+ "flickr.test.login" => lambda { |data| }
162
+ }
163
+ end
164
+
165
+ def cleanup_content(data)
166
+ data.inject({}) do |hash, (key, value)|
167
+ hash[key] =
168
+ if value.is_a?(Hash)
169
+ value.count == 1 ? (value["_content"] || cleanup_content(value)) : cleanup_content(value)
170
+ else
171
+ value
172
+ end
173
+ hash
149
174
  end
150
175
  end
151
176