flickr-objects 0.2.0 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/README.md +49 -63
- data/lib/flickr/api/abstract/params_processor.rb +68 -0
- data/lib/flickr/api/abstract.rb +113 -0
- data/lib/flickr/api/general.rb +75 -0
- data/lib/flickr/api/person.rb +91 -39
- data/lib/flickr/api/photo.rb +213 -108
- data/lib/flickr/api/set.rb +114 -55
- data/lib/flickr/api/upload_ticket.rb +17 -6
- data/lib/flickr/api.rb +90 -35
- data/lib/flickr/attributes.rb +200 -0
- data/lib/flickr/base_converter.rb +29 -0
- data/lib/flickr/client/data.rb +47 -0
- data/lib/flickr/client/oauth.rb +44 -0
- data/lib/flickr/client/upload.rb +55 -0
- data/lib/flickr/client.rb +77 -33
- data/lib/flickr/configuration.rb +85 -14
- data/lib/flickr/error.rb +58 -0
- data/lib/flickr/middleware.rb +52 -28
- data/lib/flickr/oauth.rb +89 -74
- data/lib/flickr/object/attribute_locations/list.rb +25 -0
- data/lib/flickr/object/attribute_locations/location.rb +29 -0
- data/lib/flickr/object/attribute_locations/permissions.rb +31 -0
- data/lib/flickr/object/attribute_locations/person/upload_status.rb +32 -0
- data/lib/flickr/object/attribute_locations/person.rb +78 -0
- data/lib/flickr/object/attribute_locations/photo/exif.rb +29 -0
- data/lib/flickr/object/attribute_locations/photo/note.rb +36 -0
- data/lib/flickr/object/attribute_locations/photo/tag.rb +23 -0
- data/lib/flickr/object/attribute_locations/photo.rb +164 -0
- data/lib/flickr/object/attribute_locations/set.rb +53 -0
- data/lib/flickr/object/attribute_locations/upload_ticket.rb +30 -0
- data/lib/flickr/object/attribute_locations/visibility.rb +24 -0
- data/lib/flickr/object/list/kaminari.rb +30 -0
- data/lib/flickr/object/list/normal.rb +27 -0
- data/lib/flickr/object/list/will_paginate.rb +31 -0
- data/lib/flickr/object/list.rb +87 -0
- data/lib/flickr/object/location.rb +35 -0
- data/lib/flickr/object/permissions.rb +18 -0
- data/lib/flickr/object/person/upload_status.rb +22 -0
- data/lib/flickr/object/person.rb +93 -0
- data/lib/flickr/object/photo/exif.rb +35 -0
- data/lib/flickr/object/photo/note.rb +20 -0
- data/lib/flickr/object/photo/size.rb +67 -0
- data/lib/flickr/object/photo/tag.rb +23 -0
- data/lib/flickr/object/photo.rb +349 -0
- data/lib/flickr/object/set.rb +114 -0
- data/lib/flickr/object/upload_ticket.rb +31 -0
- data/lib/flickr/object/visibility.rb +16 -0
- data/lib/flickr/object.rb +118 -27
- data/lib/flickr/sanitized_file.rb +70 -0
- data/lib/flickr/version.rb +4 -2
- data/lib/flickr.rb +69 -15
- metadata +89 -103
- data/lib/flickr/api/api_methods/flickr.rb +0 -5
- data/lib/flickr/api/api_methods/person.rb +0 -14
- data/lib/flickr/api/api_methods/photo.rb +0 -26
- data/lib/flickr/api/api_methods/set.rb +0 -18
- data/lib/flickr/api/api_methods/upload_ticket.rb +0 -5
- data/lib/flickr/api/flickr.rb +0 -35
- data/lib/flickr/api_caller.rb +0 -98
- data/lib/flickr/client/methods_client.rb +0 -22
- data/lib/flickr/client/upload_client.rb +0 -62
- data/lib/flickr/errors.rb +0 -19
- data/lib/flickr/helpers/base_58.rb +0 -15
- data/lib/flickr/helpers/boolean.rb +0 -4
- data/lib/flickr/helpers/core_ext.rb +0 -5
- data/lib/flickr/object/attribute/converter.rb +0 -49
- data/lib/flickr/object/attribute/finder.rb +0 -32
- data/lib/flickr/object/attribute.rb +0 -45
- data/lib/flickr/objects/attribute_values/list.rb +0 -10
- data/lib/flickr/objects/attribute_values/location.rb +0 -14
- data/lib/flickr/objects/attribute_values/note.rb +0 -11
- data/lib/flickr/objects/attribute_values/permissions.rb +0 -12
- data/lib/flickr/objects/attribute_values/person/upload_status.rb +0 -16
- data/lib/flickr/objects/attribute_values/person.rb +0 -24
- data/lib/flickr/objects/attribute_values/photo.rb +0 -84
- data/lib/flickr/objects/attribute_values/set.rb +0 -17
- data/lib/flickr/objects/attribute_values/tag.rb +0 -9
- data/lib/flickr/objects/attribute_values/upload_ticket.rb +0 -9
- data/lib/flickr/objects/attribute_values/visibility.rb +0 -10
- data/lib/flickr/objects/list.rb +0 -86
- data/lib/flickr/objects/location.rb +0 -26
- data/lib/flickr/objects/note.rb +0 -14
- data/lib/flickr/objects/permissions.rb +0 -14
- data/lib/flickr/objects/person/upload_status.rb +0 -14
- data/lib/flickr/objects/person.rb +0 -43
- data/lib/flickr/objects/photo.rb +0 -113
- data/lib/flickr/objects/set.rb +0 -29
- data/lib/flickr/objects/tag.rb +0 -17
- data/lib/flickr/objects/upload_ticket.rb +0 -18
- data/lib/flickr/objects/visibility.rb +0 -12
- data/lib/flickr/objects.rb +0 -25
@@ -0,0 +1,67 @@
|
|
1
|
+
module Flickr
|
2
|
+
class Object
|
3
|
+
class Photo
|
4
|
+
|
5
|
+
##
|
6
|
+
# Encapsulates the logic of managing sizes, including comparison,
|
7
|
+
# to make it easier to add dynamic size-changing methods to
|
8
|
+
# Flickr::Object::Photo.
|
9
|
+
#
|
10
|
+
# @private
|
11
|
+
#
|
12
|
+
class Size
|
13
|
+
|
14
|
+
include Comparable
|
15
|
+
|
16
|
+
NAMES = Photo::SIZES
|
17
|
+
|
18
|
+
##
|
19
|
+
# Used by Flickr for hash key names.
|
20
|
+
#
|
21
|
+
ABBREVIATIONS = %w[sq t q s n m z c l h k o]
|
22
|
+
|
23
|
+
##
|
24
|
+
# Used by Flickr in response from "flickr.photos.getSizes".
|
25
|
+
#
|
26
|
+
LABELS = [
|
27
|
+
"Square", "Thumbnail", "Large Square",
|
28
|
+
"Small", "Small 320",
|
29
|
+
"Medium", "Medium 640", "Medium 800",
|
30
|
+
"Large", "Large 1600", "Large 2048",
|
31
|
+
"Original",
|
32
|
+
]
|
33
|
+
|
34
|
+
def self.all
|
35
|
+
NAMES.map { |name| new(name) }
|
36
|
+
end
|
37
|
+
|
38
|
+
def self.types
|
39
|
+
all.map(&:type).uniq
|
40
|
+
end
|
41
|
+
|
42
|
+
def self.exists?(name)
|
43
|
+
all.include? new(name)
|
44
|
+
end
|
45
|
+
|
46
|
+
attr_reader :name, :type, :number, :abbreviation, :label
|
47
|
+
|
48
|
+
def initialize(name)
|
49
|
+
@name = name
|
50
|
+
@type, @number = name.split
|
51
|
+
@abbreviation = ABBREVIATIONS[NAMES.index(name)]
|
52
|
+
@label = LABELS[NAMES.index(name)]
|
53
|
+
end
|
54
|
+
|
55
|
+
##
|
56
|
+
# {NAMES} orders the sizes from smallest to largest, so we're
|
57
|
+
# using that here.
|
58
|
+
#
|
59
|
+
def <=>(other)
|
60
|
+
NAMES.index(self.name) <=> NAMES.index(other.name)
|
61
|
+
end
|
62
|
+
|
63
|
+
end
|
64
|
+
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module Flickr
|
2
|
+
class Object
|
3
|
+
class Photo
|
4
|
+
|
5
|
+
class Tag < Flickr::Object
|
6
|
+
|
7
|
+
attribute :id, String
|
8
|
+
attribute :author, Person
|
9
|
+
attribute :raw, String
|
10
|
+
attribute :content, String
|
11
|
+
attribute :machine_tag, Boolean
|
12
|
+
|
13
|
+
def to_s
|
14
|
+
content
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
require_relative "../attribute_locations/photo/tag"
|
@@ -0,0 +1,349 @@
|
|
1
|
+
module Flickr
|
2
|
+
class Object
|
3
|
+
|
4
|
+
##
|
5
|
+
# Probably the most important class in this library.
|
6
|
+
#
|
7
|
+
# ## Sizes
|
8
|
+
#
|
9
|
+
# It has an interface for assigning the photo's size. Current Flickr's photo sizes
|
10
|
+
# are:
|
11
|
+
#
|
12
|
+
# - Square 75/150
|
13
|
+
# - Thumbnail
|
14
|
+
# - Medium 500/640/800
|
15
|
+
# - Large 1024/1600/2048
|
16
|
+
# - Original
|
17
|
+
#
|
18
|
+
# **Important**: When fetching photos, the information about the sizes (URL, width, height)
|
19
|
+
# isn't automatically available. If you're fetching multiple photos (e.g. using
|
20
|
+
# `Flickr.photos.search`), you need to pass `:sizes => true`. For individual photos,
|
21
|
+
# use #get_sizes.
|
22
|
+
#
|
23
|
+
# Any of the following ways will change the photo's size to "Medium 500":
|
24
|
+
#
|
25
|
+
# photo.medium500!
|
26
|
+
# photo.medium!(500)
|
27
|
+
# photo.medium!("500")
|
28
|
+
#
|
29
|
+
# A change to photo's size affects the following attributes: {#source_url}, {#width} and
|
30
|
+
# {#height}.
|
31
|
+
#
|
32
|
+
# You may often just want to assign the largest possible size to the photo:
|
33
|
+
#
|
34
|
+
# photo.largest!
|
35
|
+
#
|
36
|
+
# You may also want to assign the largest size to the photo, but that it's not
|
37
|
+
# larger/smaller than "Medium 500":
|
38
|
+
#
|
39
|
+
# photo.medium500_or_smaller!
|
40
|
+
# photo.medium500_at_least!
|
41
|
+
#
|
42
|
+
# Note: The corresponding non-bang versions of the methods are also available:
|
43
|
+
#
|
44
|
+
# photo.medium500
|
45
|
+
# photo.medium(500)
|
46
|
+
# photo.medium("500")
|
47
|
+
# photo.largest
|
48
|
+
# photo.medium500_or_smaller
|
49
|
+
# photo.medium500_at_least
|
50
|
+
#
|
51
|
+
# However, these are not recommended, since they duplicate the photo, taking up
|
52
|
+
# twice as much memory. Use them only if you really have to.
|
53
|
+
#
|
54
|
+
class Photo < Flickr::Object
|
55
|
+
|
56
|
+
autoload_names :Note, :Tag, :Exif, :Size
|
57
|
+
|
58
|
+
attribute :id, String
|
59
|
+
attribute :secret, String
|
60
|
+
attribute :server, String
|
61
|
+
attribute :farm, Integer
|
62
|
+
attribute :title, String
|
63
|
+
attribute :description, String
|
64
|
+
attribute :license, Integer
|
65
|
+
attribute :visibility, Visibility
|
66
|
+
|
67
|
+
attribute :safety_level, Integer
|
68
|
+
attribute :safe, Boolean
|
69
|
+
attribute :moderate, Boolean
|
70
|
+
attribute :restricted, Boolean
|
71
|
+
|
72
|
+
attribute :url, String
|
73
|
+
attribute :short_url, String
|
74
|
+
|
75
|
+
attribute :owner, Person
|
76
|
+
|
77
|
+
attribute :uploaded_at, Time
|
78
|
+
attribute :posted_at, Time
|
79
|
+
attribute :taken_at, Time
|
80
|
+
attribute :taken_at_granularity, Integer
|
81
|
+
attribute :updated_at, Time
|
82
|
+
|
83
|
+
attribute :views_count, Integer
|
84
|
+
attribute :comments_count, Integer
|
85
|
+
|
86
|
+
attribute :editability, Permissions
|
87
|
+
attribute :public_editability, Permissions
|
88
|
+
attribute :usage, Permissions
|
89
|
+
|
90
|
+
attribute :notes, List[Note]
|
91
|
+
attribute :tags, List[Tag]
|
92
|
+
|
93
|
+
attribute :camera, String
|
94
|
+
attribute :exif, Exif
|
95
|
+
|
96
|
+
attribute :has_people, Boolean
|
97
|
+
attribute :favorite, Boolean
|
98
|
+
|
99
|
+
attribute :path_alias, String
|
100
|
+
|
101
|
+
attribute :location, Location
|
102
|
+
attribute :location_visibility, Visibility
|
103
|
+
|
104
|
+
attribute :rotation, Integer
|
105
|
+
|
106
|
+
attribute :available_sizes, Array[String]
|
107
|
+
attribute :largest_size, String
|
108
|
+
|
109
|
+
attribute :source_url, String
|
110
|
+
attribute :height, Integer
|
111
|
+
attribute :width, Integer
|
112
|
+
|
113
|
+
SIZES = [
|
114
|
+
"Square 75", "Thumbnail", "Square 150",
|
115
|
+
"Small 240", "Small 320",
|
116
|
+
"Medium 500", "Medium 640", "Medium 800",
|
117
|
+
"Large 1024", "Large 1600", "Large 2048",
|
118
|
+
"Original",
|
119
|
+
]
|
120
|
+
|
121
|
+
##
|
122
|
+
# The size of the photo, can be changed with modifer methods (see the
|
123
|
+
# definition of this class for details).
|
124
|
+
#
|
125
|
+
# @return [String]
|
126
|
+
#
|
127
|
+
def size
|
128
|
+
@size.name if @size
|
129
|
+
end
|
130
|
+
|
131
|
+
Size.all.each do |size|
|
132
|
+
type, number = size.type, size.number
|
133
|
+
|
134
|
+
##
|
135
|
+
# medium500!
|
136
|
+
# medium500
|
137
|
+
#
|
138
|
+
class_eval <<-RUBY, __FILE__, __LINE__ + 1
|
139
|
+
def #{type.downcase}#{number}!
|
140
|
+
size! "#{size.name}"
|
141
|
+
end
|
142
|
+
|
143
|
+
def #{type.downcase}#{number}
|
144
|
+
dup.#{type.downcase}#{number}!
|
145
|
+
end
|
146
|
+
RUBY
|
147
|
+
end
|
148
|
+
|
149
|
+
Size.types.each do |type|
|
150
|
+
##
|
151
|
+
# medium!(500)
|
152
|
+
# medium(500)
|
153
|
+
#
|
154
|
+
class_eval <<-RUBY, __FILE__, __LINE__ + 1
|
155
|
+
def #{type.downcase}!(number = nil)
|
156
|
+
size! (number ? "#{type} \#{number}" : "#{type}")
|
157
|
+
end
|
158
|
+
|
159
|
+
def #{type.downcase}(number = nil)
|
160
|
+
dup.#{type.downcase}!(number)
|
161
|
+
end
|
162
|
+
RUBY
|
163
|
+
end
|
164
|
+
|
165
|
+
Size.all.each do |size|
|
166
|
+
type, number = size.type, size.number
|
167
|
+
|
168
|
+
##
|
169
|
+
# medium500_or_smaller
|
170
|
+
# medium500_or_smaller!
|
171
|
+
#
|
172
|
+
# medium500_at_least
|
173
|
+
# medium500_at_least!
|
174
|
+
#
|
175
|
+
class_eval <<-RUBY, __FILE__, __LINE__ + 1
|
176
|
+
def #{type.downcase}#{number}_or_smaller!
|
177
|
+
upper_bound = "#{size.name}"
|
178
|
+
new_size = available_sizes.reverse.find do |name|
|
179
|
+
Size.new(name) <= Size.new(upper_bound)
|
180
|
+
end
|
181
|
+
size! new_size
|
182
|
+
end
|
183
|
+
|
184
|
+
def #{type.downcase}#{number}_or_smaller
|
185
|
+
dup.#{type.downcase}#{number}_or_smaller!
|
186
|
+
end
|
187
|
+
|
188
|
+
def #{type.downcase}#{number}_at_least!
|
189
|
+
lower_bound = "#{size.name}"
|
190
|
+
new_size = available_sizes.reverse.find do |name|
|
191
|
+
Size.new(name) >= Size.new(lower_bound)
|
192
|
+
end
|
193
|
+
size! new_size
|
194
|
+
end
|
195
|
+
|
196
|
+
def #{type.downcase}#{number}_at_least
|
197
|
+
dup.#{type.downcase}#{number}_at_least!
|
198
|
+
end
|
199
|
+
RUBY
|
200
|
+
end
|
201
|
+
|
202
|
+
##
|
203
|
+
# @return [self]
|
204
|
+
#
|
205
|
+
def largest!
|
206
|
+
size! largest_size
|
207
|
+
end
|
208
|
+
|
209
|
+
##
|
210
|
+
# @return [self]
|
211
|
+
#
|
212
|
+
def largest
|
213
|
+
dup.largest!
|
214
|
+
end
|
215
|
+
|
216
|
+
##
|
217
|
+
# @return [self]
|
218
|
+
# @see Flickr::Api::Photo#get_info
|
219
|
+
#
|
220
|
+
def get_info!(params = {})
|
221
|
+
photo = api.get_info(id, params)
|
222
|
+
update(photo.attributes)
|
223
|
+
end
|
224
|
+
|
225
|
+
##
|
226
|
+
# @return [self]
|
227
|
+
# @see Flickr::Api::Photo#get_sizes
|
228
|
+
#
|
229
|
+
def get_sizes!(params = {})
|
230
|
+
photo = api.get_sizes(id, params)
|
231
|
+
update(photo.attributes)
|
232
|
+
end
|
233
|
+
|
234
|
+
##
|
235
|
+
# @return [self]
|
236
|
+
# @see Flickr::Api::Photo#get_exif
|
237
|
+
#
|
238
|
+
def get_exif!(params = {})
|
239
|
+
photo = api.get_exif(id, params)
|
240
|
+
update(photo.attributes)
|
241
|
+
end
|
242
|
+
|
243
|
+
##
|
244
|
+
# @return [Flickr::Object::List<Flickr::Object::Person>]
|
245
|
+
# @see Flickr::Api::Photo#get_favorites
|
246
|
+
#
|
247
|
+
def get_favorites(params = {})
|
248
|
+
api.get_favorites(id, params)
|
249
|
+
end
|
250
|
+
|
251
|
+
##
|
252
|
+
# @return [response]
|
253
|
+
# @see Flickr::Api::Photo#delete
|
254
|
+
#
|
255
|
+
def delete(params = {})
|
256
|
+
api.delete(id, params)
|
257
|
+
end
|
258
|
+
|
259
|
+
##
|
260
|
+
# @return [response]
|
261
|
+
# @see Flickr::Api::Photo#set_content_type
|
262
|
+
#
|
263
|
+
def set_content_type(content_type, params = {})
|
264
|
+
api.set_content_type(id, content_type, params)
|
265
|
+
end
|
266
|
+
alias content_type= set_content_type
|
267
|
+
|
268
|
+
##
|
269
|
+
# @return [response]
|
270
|
+
# @see Flickr::Api::Photo#set_tags
|
271
|
+
#
|
272
|
+
def set_tags(tags, params = {})
|
273
|
+
api.set_tags(id, tags, params)
|
274
|
+
end
|
275
|
+
alias tags= set_tags
|
276
|
+
|
277
|
+
##
|
278
|
+
# @return [response]
|
279
|
+
# @see Flickr::Api::Photo#add_tags
|
280
|
+
#
|
281
|
+
def add_tags(tags, params = {})
|
282
|
+
api.add_tags(id, tags, params)
|
283
|
+
end
|
284
|
+
|
285
|
+
##
|
286
|
+
# @return [response]
|
287
|
+
# @see Flickr::Api::Photo#remove_tag
|
288
|
+
#
|
289
|
+
def remove_tag(tag_or_id, params = {})
|
290
|
+
api.remove_tag(id, tag_or_id, params)
|
291
|
+
end
|
292
|
+
|
293
|
+
##
|
294
|
+
# @return [response]
|
295
|
+
# @see Flickr::Api::Photo#set_dates
|
296
|
+
#
|
297
|
+
def set_dates(params = {})
|
298
|
+
api.set_dates(id, params)
|
299
|
+
end
|
300
|
+
|
301
|
+
##
|
302
|
+
# @return [response]
|
303
|
+
# @see Flickr::Api::Photo#set_meta
|
304
|
+
#
|
305
|
+
def set_meta(params = {})
|
306
|
+
api.set_meta(id, params)
|
307
|
+
end
|
308
|
+
|
309
|
+
##
|
310
|
+
# @return [response]
|
311
|
+
# @see Flickr::Api::Photo#set_permissions
|
312
|
+
#
|
313
|
+
def set_permissions(params = {})
|
314
|
+
api.set_permissions(id, params)
|
315
|
+
end
|
316
|
+
|
317
|
+
##
|
318
|
+
# @return [response]
|
319
|
+
# @see Flickr::Api::Photo#set_safety_level
|
320
|
+
#
|
321
|
+
def set_safety_level(params = {})
|
322
|
+
api.set_safety_level(id, params)
|
323
|
+
end
|
324
|
+
|
325
|
+
private
|
326
|
+
|
327
|
+
##
|
328
|
+
# Changes the size of the photo.
|
329
|
+
#
|
330
|
+
def size!(name)
|
331
|
+
if name != nil and not Size.exists?(name)
|
332
|
+
raise ArgumentError, "\"#{name}\" isn't a valid photo size"
|
333
|
+
end
|
334
|
+
|
335
|
+
if available_sizes.include? name
|
336
|
+
@size = Size.new(name)
|
337
|
+
else
|
338
|
+
@size = nil
|
339
|
+
end
|
340
|
+
|
341
|
+
self
|
342
|
+
end
|
343
|
+
|
344
|
+
end
|
345
|
+
|
346
|
+
end
|
347
|
+
end
|
348
|
+
|
349
|
+
require_relative "attribute_locations/photo"
|
@@ -0,0 +1,114 @@
|
|
1
|
+
module Flickr
|
2
|
+
class Object
|
3
|
+
|
4
|
+
class Set < Flickr::Object
|
5
|
+
|
6
|
+
attribute :id, String
|
7
|
+
attribute :secret, String
|
8
|
+
attribute :server, String
|
9
|
+
attribute :farm, Integer
|
10
|
+
attribute :url, String
|
11
|
+
attribute :title, String
|
12
|
+
attribute :description, String
|
13
|
+
|
14
|
+
attribute :owner, Person
|
15
|
+
|
16
|
+
attribute :photos_count, Integer
|
17
|
+
attribute :views_count, Integer
|
18
|
+
attribute :comments_count, Integer
|
19
|
+
|
20
|
+
attribute :permissions, Permissions
|
21
|
+
|
22
|
+
attribute :created_at, Time
|
23
|
+
attribute :updated_at, Time
|
24
|
+
|
25
|
+
attribute :primary_photo, Photo
|
26
|
+
|
27
|
+
##
|
28
|
+
# @return [response]
|
29
|
+
# @see Flickr::Api::Set#delete
|
30
|
+
#
|
31
|
+
def delete(params = {})
|
32
|
+
api.delete(id, params)
|
33
|
+
end
|
34
|
+
|
35
|
+
##
|
36
|
+
# @return [response]
|
37
|
+
# @see Flickr::Api::Set#edit_photos
|
38
|
+
#
|
39
|
+
def edit_photos(params = {})
|
40
|
+
api.edit_photos(id, params)
|
41
|
+
end
|
42
|
+
|
43
|
+
##
|
44
|
+
# @return [self]
|
45
|
+
# @see Flickr::Api::Set#get_info
|
46
|
+
#
|
47
|
+
def get_info!(params = {})
|
48
|
+
set = api.get_info(id, params)
|
49
|
+
update(set.attributes)
|
50
|
+
end
|
51
|
+
|
52
|
+
##
|
53
|
+
# @return [Flickr::Object::List<Flickr::Object::Photo>]
|
54
|
+
# @see Flickr::Api::Set#get_photos
|
55
|
+
#
|
56
|
+
def get_photos(params = {})
|
57
|
+
api.get_photos(id, params)
|
58
|
+
end
|
59
|
+
|
60
|
+
##
|
61
|
+
# @return [response]
|
62
|
+
# @see Flickr::Api::Set#add_photo
|
63
|
+
#
|
64
|
+
def add_photo(photo_or_id, params = {})
|
65
|
+
api.add_photo(id, photo_or_id, params)
|
66
|
+
end
|
67
|
+
|
68
|
+
##
|
69
|
+
# @return [response]
|
70
|
+
# @see Flickr::Api::Set#remove_photos
|
71
|
+
#
|
72
|
+
def remove_photos(photo_ids, params = {})
|
73
|
+
api.remove_photos(id, photo_ids, params)
|
74
|
+
end
|
75
|
+
|
76
|
+
##
|
77
|
+
# @return [response]
|
78
|
+
# @see Flickr::Api::Set#remove_photo
|
79
|
+
#
|
80
|
+
def remove_photo(photo_or_id, params = {})
|
81
|
+
api.remove_photo(id, photo_or_id, params)
|
82
|
+
end
|
83
|
+
|
84
|
+
##
|
85
|
+
# @return [response]
|
86
|
+
# @see Flickr::Api::Set#edit_meta
|
87
|
+
#
|
88
|
+
def edit_meta(params = {})
|
89
|
+
api.edit_meta(id, params)
|
90
|
+
end
|
91
|
+
|
92
|
+
##
|
93
|
+
# @return [response]
|
94
|
+
# @see Flickr::Api::Set#reorder_photos
|
95
|
+
#
|
96
|
+
def reorder_photos(photo_ids, params = {})
|
97
|
+
api.reorder_photos(id, photo_ids, params)
|
98
|
+
end
|
99
|
+
|
100
|
+
##
|
101
|
+
# @return [response]
|
102
|
+
# @see Flickr::Api::Set#set_primary_photo
|
103
|
+
#
|
104
|
+
def set_primary_photo(photo_or_id, params = {})
|
105
|
+
api.set_primary_photo(id, photo_or_id, params)
|
106
|
+
end
|
107
|
+
alias primary_photo= set_primary_photo
|
108
|
+
|
109
|
+
end
|
110
|
+
|
111
|
+
end
|
112
|
+
end
|
113
|
+
|
114
|
+
require_relative "attribute_locations/set"
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module Flickr
|
2
|
+
class Object
|
3
|
+
|
4
|
+
class UploadTicket < Flickr::Object
|
5
|
+
|
6
|
+
attribute :id, String
|
7
|
+
|
8
|
+
attribute :status, Integer
|
9
|
+
attribute :complete, Boolean
|
10
|
+
attribute :failed, Boolean
|
11
|
+
|
12
|
+
attribute :valid, Boolean
|
13
|
+
attribute :invalid, Boolean
|
14
|
+
|
15
|
+
attribute :photo, Photo
|
16
|
+
|
17
|
+
##
|
18
|
+
# @return [self]
|
19
|
+
# @see Flickr::Api::UploadTicket#check
|
20
|
+
#
|
21
|
+
def get_info!(params = {})
|
22
|
+
ticket = api.check(id, params).first
|
23
|
+
update(ticket.attributes)
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
require_relative "attribute_locations/upload_ticket"
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module Flickr
|
2
|
+
class Object
|
3
|
+
|
4
|
+
class Visibility < Flickr::Object
|
5
|
+
|
6
|
+
attribute :public, Boolean
|
7
|
+
attribute :friends, Boolean
|
8
|
+
attribute :family, Boolean
|
9
|
+
attribute :contacts, Boolean
|
10
|
+
|
11
|
+
end
|
12
|
+
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
require_relative "attribute_locations/visibility"
|