flickrie 1.6.0 → 1.6.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -8,26 +8,26 @@ module Flickrie
8
8
  # This is for manual use (for example, if I haven't covered something yet, and you really need it).
9
9
  # Here's an example:
10
10
  #
11
- # response = Flickrie.client.get "flickr.photos.getInfo", :photo_id => 8423943
11
+ # response = Flickrie.client.get "flickr.photos.getInfo", photo_id: 8423943
12
12
  # response.body['photo']['id'] # => 8423943
13
13
  # response.body['photo']['description'] # => "..."
14
14
  #
15
- # Flickrie.client.post "flickr.photos.licenses.setLicense", :photo_id => 1241497, :license_id => 2
15
+ # Flickrie.client.post "flickr.photos.licenses.setLicense", photo_id: 1241497, license_id: 2
16
16
  #
17
17
  # For the full list of available API methods, see [this page](http://www.flickr.com/services/api/).
18
18
  #
19
19
  # @return [HTTP response] A Faraday HTTP response
20
20
  def client
21
21
  params = {
22
- :url => 'http://api.flickr.com/services/rest',
23
- :params => {
24
- :format => 'json',
25
- :nojsoncallback => '1',
26
- :api_key => api_key
22
+ url: 'https://api.flickr.com/services/rest',
23
+ params: {
24
+ format: 'json',
25
+ nojsoncallback: '1',
26
+ api_key: api_key
27
27
  },
28
- :request => {
29
- :open_timeout => open_timeout || DEFAULTS[:open_timeout],
30
- :timeout => timeout || DEFAULTS[:timeout]
28
+ request: {
29
+ open_timeout: open_timeout || DEFAULTS[:open_timeout],
30
+ timeout: timeout || DEFAULTS[:timeout]
31
31
  }
32
32
  }
33
33
 
@@ -35,10 +35,10 @@ module Flickrie
35
35
  Client.new(params) do |b|
36
36
  b.use Middleware::Retry
37
37
  b.use FaradayMiddleware::OAuth,
38
- :consumer_key => api_key,
39
- :consumer_secret => shared_secret,
40
- :token => access_token,
41
- :token_secret => access_secret
38
+ consumer_key: api_key,
39
+ consumer_secret: shared_secret,
40
+ token: access_token,
41
+ token_secret: access_secret
42
42
 
43
43
  b.use Middleware::FixFlickrData
44
44
  b.use Middleware::StatusCheck
@@ -51,9 +51,9 @@ module Flickrie
51
51
 
52
52
  def upload_client
53
53
  params = {
54
- :url => 'http://api.flickr.com/services',
55
- :request => {
56
- :open_timeout => open_timeout || DEFAULTS[:open_timeout]
54
+ url: 'https://api.flickr.com/services',
55
+ request: {
56
+ open_timeout: open_timeout || DEFAULTS[:open_timeout]
57
57
  }
58
58
  }
59
59
 
@@ -61,10 +61,10 @@ module Flickrie
61
61
  UploadClient.new(params) do |b|
62
62
  b.use Middleware::Retry
63
63
  b.use FaradayMiddleware::OAuth,
64
- :consumer_key => api_key,
65
- :consumer_secret => shared_secret,
66
- :token => access_token,
67
- :token_secret => access_secret
64
+ consumer_key: api_key,
65
+ consumer_secret: shared_secret,
66
+ token: access_token,
67
+ token_secret: access_secret
68
68
  b.request :multipart
69
69
 
70
70
  b.use Middleware::UploadStatusCheck
@@ -2,11 +2,9 @@ require 'faraday'
2
2
 
3
3
  module Flickrie
4
4
  class Client < Faraday::Connection
5
- # @!method get(method, params = {})
6
- # @!method post(method, params = {})
7
5
  [:get, :post].each do |http_method|
8
6
  define_method(http_method) do |flickr_method, params = {}|
9
- # (:include_sizes => true) --> (:extras => "url_sq,url_q,url_s,...")
7
+ # (include_sizes: true) --> (extras: "url_sq,url_q,url_s,...")
10
8
  if params.delete(:include_sizes)
11
9
  urls = Photo::FLICKR_SIZES.values.map { |s| "url_#{s}" }.join(',')
12
10
  params[:extras] = [params[:extras], urls].compact.join(',')
@@ -19,263 +17,22 @@ module Flickrie
19
17
  end
20
18
  end
21
19
 
22
- # people
23
- def find_user_by_email(email, params = {})
24
- get 'flickr.people.findByEmail',
25
- {:find_email => email}.merge(params)
26
- end
27
-
28
- def find_user_by_username(username, params = {})
29
- get 'flickr.people.findByUsername',
30
- {:username => username}.merge(params)
31
- end
32
-
33
- def get_user_info(nsid, params = {})
34
- get 'flickr.people.getInfo',
35
- {:user_id => nsid}.merge(params)
36
- end
37
-
38
- def media_from_user(nsid, params = {})
39
- get 'flickr.people.getPhotos',
40
- ensure_media({:user_id => nsid}.merge(params))
41
- end
42
-
43
- def media_of_user(nsid, params = {})
44
- get 'flickr.people.getPhotosOf',
45
- ensure_media({:user_id => nsid}.merge(params))
46
- end
47
-
48
- def public_media_from_user(nsid, params = {})
49
- get 'flickr.people.getPublicPhotos',
50
- ensure_media({:user_id => nsid}.merge(params))
51
- end
52
-
53
- def get_upload_status(params = {})
54
- get 'flickr.people.getUploadStatus', params
55
- end
56
-
57
- # photos
58
- def add_media_tags(media_id, tags, params = {})
59
- post 'flickr.photos.addTags',
60
- {:photo_id => media_id, :tags => tags}.merge(params)
61
- end
62
-
63
- def delete_media(media_id, params = {})
64
- post 'flickr.photos.delete',
65
- {:photo_id => media_id}.merge(params)
66
- end
67
-
68
- def media_from_contacts(params = {})
69
- get 'flickr.photos.getContactsPhotos', ensure_media(params)
70
- end
71
-
72
- def public_media_from_user_contacts(nsid, params = {})
73
- get 'flickr.photos.getContactsPublicPhotos',
74
- ensure_media({:user_id => nsid}.merge(params))
75
- end
76
-
77
- def get_media_context(media_id, params = {})
78
- get 'flickr.photos.getContext',
79
- {:photo_id => media_id}.merge(params)
80
- end
81
-
82
- def get_media_counts(params = {})
83
- get 'flickr.photos.getCounts', ensure_utc(params)
84
- end
85
-
86
- def get_media_exif(media_id, params = {})
87
- get 'flickr.photos.getExif',
88
- {:photo_id => media_id}.merge(params)
89
- end
90
-
91
- def get_media_favorites(media_id, params = {})
92
- get 'flickr.photos.getFavorites',
93
- {:photo_id => media_id}.merge(params)
94
- end
95
-
96
- def get_media_info(media_id, params = {})
97
- get 'flickr.photos.getInfo',
98
- {:photo_id => media_id}.merge(params)
99
- end
100
-
101
- def media_not_in_set(params = {})
102
- get 'flickr.photos.getNotInSet', ensure_media(params)
103
- end
104
-
105
- def get_media_permissions(media_id, params = {})
106
- get 'flickr.photos.getPerms',
107
- {:photo_id => media_id}.merge(params)
108
- end
109
-
110
- def get_recent_media(params = {})
111
- get 'flickr.photos.getRecent', ensure_media(params)
112
- end
113
-
114
- def get_media_sizes(media_id, params = {})
115
- get 'flickr.photos.getSizes',
116
- {:photo_id => media_id}.merge(params)
117
- end
118
-
119
- def get_untagged_media(params = {})
120
- get 'flickr.photos.getUntagged', ensure_media(params)
121
- end
122
-
123
- def get_media_with_geo_data(params = {})
124
- get 'flickr.photos.getWithGeoData', ensure_media(params)
125
- end
126
-
127
- def get_media_without_geo_data(params = {})
128
- get 'flickr.photos.getWithoutGeoData', ensure_media(params)
129
- end
130
-
131
- def recently_updated_media(params = {})
132
- get 'flickr.photos.recentlyUpdated', ensure_media(params)
133
- end
134
-
135
- def remove_media_tag(tag_id, params = {})
136
- post 'flickr.photos.removeTag',
137
- {:tag_id => tag_id}.merge(params)
138
- end
139
-
140
- def search_media(params = {})
141
- get 'flickr.photos.search', ensure_media(params)
142
- end
143
-
144
- def set_media_content_type(media_id, content_type, params = {})
145
- post 'flickr.photos.setContentType',
146
- {:photo_id => media_id, :content_type => content_type}.merge(params)
147
- end
148
-
149
- def set_media_dates(media_id, params = {})
150
- post 'flickr.photos.setDates',
151
- {:photo_id => media_id}.merge(params)
152
- end
153
-
154
- def set_media_meta(media_id, params = {})
155
- post 'flickr.photos.setMeta',
156
- {:photo_id => media_id}.merge(params)
157
- end
158
-
159
- def set_media_permissions(media_id, params = {})
160
- post 'flickr.photos.setPerms',
161
- {:photo_id => media_id}.merge(params)
162
- end
163
-
164
- def set_media_safety_level(media_id, params = {})
165
- post 'flickr.photos.setSafetyLevel',
166
- {:photo_id => media_id}.merge(params)
167
- end
168
-
169
- def set_media_tags(media_id, tags, params = {})
170
- post 'flickr.photos.setTags',
171
- {:photo_id => media_id, :tags => tags}.merge(params)
172
- end
173
-
174
- # photos.upload
175
- def check_upload_tickets(tickets, params = {})
176
- get 'flickr.photos.upload.checkTickets',
177
- {:tickets => tickets}.merge(params)
178
- end
179
-
180
- # photos.licenses
181
- def get_licenses(params = {})
182
- get 'flickr.photos.licenses.getInfo', params
183
- end
184
-
185
- def set_media_license(media_id, license_id, params = {})
186
- post 'flickr.photos.licenses.setLicense',
187
- {:photo_id => media_id, :license_id => license_id}.merge(params)
188
- end
189
-
190
- # photos.transform
191
- def rotate_media(media_id, degrees, params = {})
192
- post 'flickr.photos.transform.rotate',
193
- {:photo_id => media_id, :degrees => degrees}.merge(params)
194
- end
195
-
196
- # photosets
197
- def add_media_to_set(set_id, media_id, params = {})
198
- post 'flickr.photosets.addPhoto',
199
- {:photoset_id => set_id, :photo_id => media_id}.merge(params)
200
- end
201
-
202
- def create_set(params = {})
203
- post 'flickr.photosets.create', params
204
- end
205
-
206
- def delete_set(set_id, params = {})
207
- post 'flickr.photosets.delete', {:photoset_id => set_id}.merge(params)
208
- end
209
-
210
- def edit_set_metadata(set_id, params = {})
211
- post 'flickr.photosets.editMeta', {:photoset_id => set_id}.merge(params)
212
- end
213
-
214
- def edit_set_photos(set_id, params = {})
215
- post 'flickr.photosets.editPhotos',
216
- {:photoset_id => set_id}.merge(params)
217
- end
218
-
219
- def get_set_context(set_id, media_id, params = {})
220
- get 'flickr.photosets.getContext',
221
- {:photoset_id => set_id, :photo_id => media_id}.merge(params)
222
- end
223
-
224
- def get_set_info(set_id, params = {})
225
- get 'flickr.photosets.getInfo',
226
- {:photoset_id => set_id}.merge(params)
227
- end
228
-
229
- def sets_from_user(nsid, params = {})
230
- get 'flickr.photosets.getList',
231
- {:user_id => nsid}.merge(params)
232
- end
233
-
234
- def media_from_set(set_id, params = {})
235
- get 'flickr.photosets.getPhotos',
236
- ensure_media({:photoset_id => set_id}.merge(params))
237
- end
238
-
239
- def order_sets(set_ids, params = {})
240
- post 'flickr.photosets.orderSets', {:photoset_ids => set_ids}.merge(params)
241
- end
242
-
243
- def remove_media_from_set(set_id, media_ids, params = {})
244
- post 'flickr.photosets.removePhotos',
245
- {:photoset_id => set_id, :photo_ids => media_ids}.merge(params)
246
- end
247
-
248
- def reorder_media_in_set(set_id, media_ids, params = {})
249
- post 'flickr.photosets.reorderPhotos',
250
- {:photoset_id => set_id, :photo_ids => media_ids}.merge(params)
251
- end
252
-
253
- def set_primary_media_to_set(set_id, media_id, params = {})
254
- post 'flickr.photosets.setPrimaryPhoto',
255
- {:photoset_id => set_id, :photo_id => media_id}.merge(params)
256
- end
257
-
258
- # test
259
- def test_login(params = {})
260
- get 'flickr.test.login', params
261
- end
262
-
263
- private
264
-
265
- def ensure_media(params)
266
- params.dup.tap do |dup_params|
267
- dup_params[:extras] = [dup_params[:extras], 'media'].compact.join(',')
268
- end
269
- end
270
-
271
- def ensure_utc(params)
272
- params.dup.tap do |hash|
273
- if hash[:taken_dates].is_a?(String)
274
- hash[:taken_dates] = hash[:taken_dates].split(',').
275
- map { |date| DateTime.parse(date) }.
276
- map(&:to_time).map(&:getutc).join(',')
20
+ def method_missing(name, *args, &block)
21
+ [
22
+ name.to_s.sub(/media|photos?|videos?/, "(photos|videos|media)"),
23
+ name.to_s.sub(/media|photos?|videos?/, "(photo|video|media)"),
24
+ name.to_s.sub(/media|photos?|videos?/, "(photo|video)")
25
+ ].
26
+ each do |method_name|
27
+ if flickr_method = FLICKR_API_METHODS.invert[method_name]
28
+ http_method, params = methods[flickr_method]
29
+ return send(http_method, flickr_method, params.call(*args))
30
+ end
277
31
  end
278
- end
32
+
33
+ super
279
34
  end
280
35
  end
281
36
  end
37
+
38
+ require "flickrie/client/methods"
@@ -0,0 +1,89 @@
1
+ module Flickrie
2
+ class Client
3
+ def methods
4
+ @methods ||= {
5
+ "flickr.people.findByEmail" => [:get, ->(email, params = {}) { {find_email: email}.merge(params) }],
6
+ "flickr.people.findByUsername" => [:get, ->(username, params = {}) { {username: username}.merge(params) }],
7
+ "flickr.people.getInfo" => [:get, ->(nsid, params = {}) { {user_id: nsid}.merge(params) }],
8
+ "flickr.people.getPhotos" => [:get, ->(nsid, params = {}) { ensure_media({user_id: nsid}.merge(params)) }],
9
+ "flickr.people.getPhotosOf" => [:get, ->(nsid, params = {}) { ensure_media({user_id: nsid}.merge(params)) }],
10
+ "flickr.people.getPublicPhotos" => [:get, ->(nsid, params = {}) { ensure_media({user_id: nsid}.merge(params)) }],
11
+ "flickr.people.getUploadStatus" => [:get, ->(params = {}) { params }],
12
+
13
+ "flickr.photos.addTags" => [:post, ->(media_id, tags, params = {}) { {photo_id: media_id, tags: tags}.merge(params) }],
14
+ "flickr.photos.delete" => [:post, ->(media_id, params = {}) { {photo_id: media_id}.merge(params) }],
15
+ "flickr.photos.getContactsPhotos" => [:get, ->(params = {}) { ensure_media(params) }],
16
+ "flickr.photos.getContactsPublicPhotos" => [:get, ->(nsid, params = {}) { ensure_media({user_id: nsid}.merge(params)) }],
17
+ "flickr.photos.getContext" => [:get, ->(media_id, params = {}) { {photo_id: media_id}.merge(params) }],
18
+ "flickr.photos.getCounts" => [:get, ->(params = {}) { ensure_utc(params) }],
19
+ "flickr.photos.getExif" => [:get, ->(media_id, params = {}) { {photo_id: media_id}.merge(params) }],
20
+ "flickr.photos.getFavorites" => [:get, ->(media_id, params = {}) { {photo_id: media_id}.merge(params) }],
21
+ "flickr.photos.getInfo" => [:get, ->(media_id, params = {}) { {photo_id: media_id}.merge(params) }],
22
+ "flickr.photos.getNotInSet" => [:get, ->(params = {}) { ensure_media(params) }],
23
+ "flickr.photos.getPerms" => [:get, ->(media_id, params = {}) { {photo_id: media_id}.merge(params) }],
24
+ "flickr.photos.getRecent" => [:get, ->(params = {}) { ensure_media(params) }],
25
+ "flickr.photos.getSizes" => [:get, ->(media_id, params = {}) { {photo_id: media_id}.merge(params) }],
26
+ "flickr.photos.getUntagged" => [:get, ->(params = {}) { ensure_media(params) }],
27
+ "flickr.photos.getWithGeoData" => [:get, ->(params = {}) { ensure_media(params) }],
28
+ "flickr.photos.getWithoutGeoData" => [:get, ->(params = {}) { ensure_media(params) }],
29
+ "flickr.photos.recentlyUpdated" => [:get, ->(params = {}) { ensure_media(params) }],
30
+ "flickr.photos.removeTag" => [:post, ->(tag_id, params = {}) { {tag_id: tag_id}.merge(params) }],
31
+ "flickr.photos.search" => [:get, ->(params = {}) { ensure_media(params) }],
32
+ "flickr.photos.setContentType" => [:post, ->(media_id, content_type, params = {}) { {photo_id: media_id, content_type: content_type}.merge(params) }],
33
+ "flickr.photos.setDates" => [:post, ->(media_id, params = {}) { {photo_id: media_id}.merge(params) }],
34
+ "flickr.photos.setMeta" => [:post, ->(media_id, params = {}) { {photo_id: media_id}.merge(params) }],
35
+ "flickr.photos.setPerms" => [:post, ->(media_id, params = {}) { {photo_id: media_id}.merge(params) }],
36
+ "flickr.photos.setSafetyLevel" => [:post, ->(media_id, params = {}) { {photo_id: media_id}.merge(params) }],
37
+ "flickr.photos.setTags" => [:post, ->(media_id, tags, params = {}) { {photo_id: media_id, tags: tags}.merge(params) }],
38
+
39
+ "flickr.photos.comments.addComment" => [:post, ->(media_id, comment, params = {}) { {photo_id: media_id, comment_text: comment}.merge(params) }],
40
+ "flickr.photos.comments.deleteComment" => [:post, ->(comment_id, params = {}) { {comment_id: comment_id}.merge(params) }],
41
+ "flickr.photos.comments.editComment" => [:post, ->(comment_id, comment, params = {}) { {comment_id: comment_id, comment_text: comment}.merge(params) }],
42
+ "flickr.photos.comments.getList" => [:get, ->(media_id, params = {}) { {photo_id: media_id}.merge(params) }],
43
+ "flickr.photos.comments.getRecentForContacts" => [:get, ->(params = {}) { ensure_media(params) }],
44
+
45
+ "flickr.photos.upload.checkTickets" => [:get, ->(tickets, params = {}) { {tickets: tickets}.merge(params) }],
46
+
47
+ "flickr.photos.licenses.getInfo" => [:get, ->(params = {}) { params }],
48
+ "flickr.photos.licenses.setLicense" => [:post, ->(media_id, license_id, params = {}) { {photo_id: media_id, license_id: license_id}.merge(params) }],
49
+
50
+ "flickr.photos.transform.rotate" => [:post, ->(media_id, degrees, params = {}) { {photo_id: media_id, degrees: degrees}.merge(params) }],
51
+
52
+ "flickr.photosets.addPhoto" => [:post, ->(set_id, media_id, params = {}) { {photoset_id: set_id, photo_id: media_id}.merge(params) }],
53
+ "flickr.photosets.create" => [:post, ->(params = {}) { params }],
54
+ "flickr.photosets.delete" => [:post, ->(set_id, params = {}) { {photoset_id: set_id}.merge(params) }],
55
+ "flickr.photosets.editMeta" => [:post, ->(set_id, params = {}) { {photoset_id: set_id}.merge(params) }],
56
+ "flickr.photosets.editPhotos" => [:post, ->(set_id, params = {}) { {photoset_id: set_id}.merge(params) }],
57
+ "flickr.photosets.getContext" => [:get, ->(set_id, media_id, params = {}) { {photoset_id: set_id, photo_id: media_id}.merge(params) }],
58
+ "flickr.photosets.getInfo" => [:get, ->(set_id, params = {}) { {photoset_id: set_id}.merge(params) }],
59
+ "flickr.photosets.getList" => [:get, ->(nsid, params = {}) { {user_id: nsid}.merge(params) }],
60
+ "flickr.photosets.getPhotos" => [:get, ->(set_id, params = {}) { ensure_media({photoset_id: set_id}.merge(params)) }],
61
+ "flickr.photosets.orderSets" => [:post, ->(set_ids, params = {}) { {photoset_ids: set_ids}.merge(params) }],
62
+ "flickr.photosets.removePhotos" => [:post, ->(set_id, media_ids, params = {}) { {photoset_id: set_id, photo_ids: media_ids}.merge(params) }],
63
+ "flickr.photosets.reorderPhotos" => [:post, ->(set_id, media_ids, params = {}) { {photoset_id: set_id, photo_ids: media_ids}.merge(params) }],
64
+ "flickr.photosets.setPrimaryPhoto" => [:post, ->(set_id, media_id, params = {}) { {photoset_id: set_id, photo_id: media_id}.merge(params) }],
65
+ "flickr.reflection.getMethods" => [:get, ->(params = {}) { params }],
66
+
67
+ "flickr.test.login" => [:get, ->(params = {}) { params }],
68
+ }
69
+ end
70
+
71
+ private
72
+
73
+ def ensure_media(params)
74
+ params.dup.tap do |dup_params|
75
+ dup_params[:extras] = [dup_params[:extras], 'media'].compact.join(',')
76
+ end
77
+ end
78
+
79
+ def ensure_utc(params)
80
+ params.dup.tap do |hash|
81
+ if hash[:taken_dates].is_a?(String)
82
+ hash[:taken_dates] = hash[:taken_dates].split(',').
83
+ map { |date| DateTime.parse(date) }.
84
+ map(&:to_time).map(&:getutc).join(',')
85
+ end
86
+ end
87
+ end
88
+ end
89
+ end