flickrie 1.6.0 → 1.6.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/README.md +41 -140
- data/lib/flickrie.rb +10 -5
- data/lib/flickrie/api_methods.rb +274 -167
- data/lib/flickrie/callable.rb +21 -21
- data/lib/flickrie/client.rb +16 -259
- data/lib/flickrie/client/methods.rb +89 -0
- data/lib/flickrie/collection.rb +1 -2
- data/lib/flickrie/deprecatable.rb +10 -0
- data/lib/flickrie/flickr_api_methods.rb +246 -0
- data/lib/flickrie/instance.rb +0 -1
- data/lib/flickrie/middleware/fix_flickr_data.rb +149 -124
- data/lib/flickrie/oauth.rb +9 -9
- data/lib/flickrie/objects/comment.rb +35 -0
- data/lib/flickrie/objects/media.rb +8 -8
- data/lib/flickrie/objects/media/exif.rb +2 -2
- data/lib/flickrie/objects/media_context.rb +1 -1
- data/lib/flickrie/objects/user.rb +2 -1
- data/lib/flickrie/upload_client.rb +3 -10
- data/lib/flickrie/version.rb +1 -1
- metadata +40 -54
data/lib/flickrie/collection.rb
CHANGED
@@ -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})
|
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,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
|
data/lib/flickrie/instance.rb
CHANGED
@@ -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
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
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
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
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
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
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
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
'
|
68
|
-
'
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
data['sizes']['
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
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
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
'
|
88
|
-
'
|
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
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
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
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
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
|
|