flickrie 1.0.2 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (83) hide show
  1. data/.gitignore +1 -0
  2. data/CHANGELOG.md +13 -0
  3. data/Gemfile +0 -4
  4. data/flickrie.gemspec +2 -2
  5. data/lib/flickrie/api_methods.rb +4 -1
  6. data/lib/flickrie/license.rb +6 -1
  7. data/lib/flickrie/location.rb +29 -12
  8. data/lib/flickrie/media/exif.rb +3 -1
  9. data/lib/flickrie/media/note.rb +24 -13
  10. data/lib/flickrie/media/tag.rb +9 -6
  11. data/lib/flickrie/media/visibility.rb +8 -5
  12. data/lib/flickrie/media.rb +54 -55
  13. data/lib/flickrie/media_count.rb +8 -6
  14. data/lib/flickrie/photo.rb +48 -7
  15. data/lib/flickrie/set.rb +47 -31
  16. data/lib/flickrie/ticket.rb +8 -5
  17. data/lib/flickrie/user.rb +67 -25
  18. data/lib/flickrie/version.rb +1 -1
  19. data/lib/flickrie/video.rb +19 -11
  20. data/spec/custom_matchers.rb +51 -0
  21. data/spec/flickrie/api_methods_spec.rb +112 -31
  22. data/spec/flickrie/error_spec.rb +2 -4
  23. data/spec/flickrie/instance_spec.rb +11 -11
  24. data/spec/flickrie/media_spec.rb +74 -53
  25. data/spec/flickrie/photo_spec.rb +4 -5
  26. data/spec/flickrie/set_spec.rb +23 -12
  27. data/spec/flickrie/upload_client_spec.rb +3 -0
  28. data/spec/flickrie/user_spec.rb +31 -5
  29. data/spec/flickrie/video_spec.rb +13 -13
  30. data/spec/flickrie_spec.rb +15 -0
  31. data/spec/spec_helper.rb +13 -50
  32. data/spec/vcr_cassettes/api_methods/people/get_media_from_user.yml +108 -0
  33. data/spec/vcr_cassettes/api_methods/people/get_public_media_from_user.yml +108 -0
  34. data/spec/vcr_cassettes/api_methods/photos/add_and_remove_tags.yml +528 -0
  35. data/spec/vcr_cassettes/api_methods/photos/get_context.yml +108 -0
  36. data/spec/vcr_cassettes/api_methods/photos/get_counts.yml +108 -0
  37. data/spec/vcr_cassettes/api_methods/photos/get_exif.yml +73 -0
  38. data/spec/vcr_cassettes/api_methods/photos/get_favorites.yml +73 -0
  39. data/spec/vcr_cassettes/api_methods/photos/get_from_contacts.yml +73 -0
  40. data/spec/vcr_cassettes/api_methods/photos/get_info.yml +108 -0
  41. data/spec/vcr_cassettes/api_methods/photos/get_public_from_user_contacts.yml +73 -0
  42. data/spec/vcr_cassettes/api_methods/photos/get_sizes.yml +73 -0
  43. data/spec/vcr_cassettes/api_methods/photos/search.yml +108 -0
  44. data/spec/vcr_cassettes/api_methods/photosets/get_media.yml +108 -0
  45. data/spec/vcr_cassettes/api_methods/{replace.yml → upload/replace.yml} +16 -16
  46. data/spec/vcr_cassettes/api_methods/upload/upload.yml +82 -0
  47. data/spec/vcr_cassettes/api_methods/upload/upload_asynchronously.yml +117 -0
  48. data/spec/vcr_cassettes/error/{a_request_was_made_and_failed.yml → a_request_was_made_and_failed/be_raised.yml} +9 -9
  49. data/spec/vcr_cassettes/error/a_request_was_made_and_failed/have_code_attribute_present.yml +84 -0
  50. data/spec/vcr_cassettes/{api_methods/upload_and_delete.yml → flickrie/a_new_credential_is_filled_in/reset_the_client.yml} +113 -32
  51. data/spec/vcr_cassettes/instance/client_is_already_initialized/be_able_to_call_API_methods.yml +152 -0
  52. data/spec/vcr_cassettes/license/{get.yml → get/have_all_attributes_correctly_set.yml} +4 -4
  53. data/spec/vcr_cassettes/media/{from_contacts.yml → from_contacts/have_all_attributes_correctly_set.yml} +8 -8
  54. data/spec/vcr_cassettes/media/{from_set.yml → from_set/have_all_attributes_correctly_set.yml} +6 -6
  55. data/spec/vcr_cassettes/media/{from_user.yml → from_user/have_all_attributes_correctly_set.yml} +6 -6
  56. data/spec/vcr_cassettes/media/{get_context.yml → get_context/have_all_attributes_correctly_set.yml} +6 -6
  57. data/spec/vcr_cassettes/media/{get_exif.yml → get_exif/get_exif_correctly.yml} +8 -8
  58. data/spec/vcr_cassettes/media/get_info/have_all_attributes_correctly_set.yml +108 -0
  59. data/spec/vcr_cassettes/media/{public_from_user.yml → public_from_user/have_all_attributes_correctly_set.yml} +6 -6
  60. data/spec/vcr_cassettes/media/{search.yml → search/have_all_attributes_correctly_set.yml} +6 -6
  61. data/spec/vcr_cassettes/media_count/{get.yml → get/have_correctly_set_all_attributes.yml} +9 -9
  62. data/spec/vcr_cassettes/o_auth/{incorrect_credentials.yml → incorrect_credentials/raise_exceptions.yml} +42 -42
  63. data/spec/vcr_cassettes/photo/get_info/have_all_attributes_correctly_set.yml +38 -0
  64. data/spec/vcr_cassettes/photo/{get_sizes.yml → get_sizes/have_attributes_correctly_set.yml} +12 -12
  65. data/spec/vcr_cassettes/photo/{search.yml → search/have_all_sizes_available.yml} +6 -6
  66. data/spec/vcr_cassettes/set/{from_user.yml → from_user/have_all_attributes_correctly_set.yml} +18 -18
  67. data/spec/vcr_cassettes/set/{get_info.yml → get_info/have_all_attributes_correctly_set.yml} +36 -36
  68. data/spec/vcr_cassettes/upload_client/content_type/pass_the_content_type.yml +117 -0
  69. data/spec/vcr_cassettes/upload_client/invalid_credentials/raise_errors.yml +276 -0
  70. data/spec/vcr_cassettes/user/{find_by_username_or_email.yml → find_by_username_or_email/have_all_attributes_correctly_set.yml} +9 -9
  71. data/spec/vcr_cassettes/user/get_info/have_all_attributes_correctly_set.yml +73 -0
  72. data/spec/vcr_cassettes/video/get_info/have_all_attributes_correctly_set.yml +38 -0
  73. data/spec/vcr_cassettes/video/{get_sizes.yml → get_sizes/have_all_attributes_correctly_set.yml} +12 -12
  74. metadata +111 -74
  75. data/spec/vcr_cassettes/api_methods/asynchronous_upload.yml +0 -362
  76. data/spec/vcr_cassettes/api_methods/tag_manipulation.yml +0 -178
  77. data/spec/vcr_cassettes/instance/calling_api_methods.yml +0 -231
  78. data/spec/vcr_cassettes/media/get_info.yml +0 -108
  79. data/spec/vcr_cassettes/photo/get_info.yml +0 -38
  80. data/spec/vcr_cassettes/upload_client/content_type.yml +0 -117
  81. data/spec/vcr_cassettes/upload_client/invalid_credentials.yml +0 -208
  82. data/spec/vcr_cassettes/user/get_info.yml +0 -73
  83. data/spec/vcr_cassettes/video/get_info.yml +0 -38
data/.gitignore CHANGED
@@ -2,6 +2,7 @@ TODO.md
2
2
  Gemfile.lock
3
3
  pkg/
4
4
  wiki/
5
+ doc/
5
6
  .DS_Store
6
7
  api_methods.md
7
8
  .bundle/
data/CHANGELOG.md CHANGED
@@ -1,5 +1,18 @@
1
1
  # Flickrie changelog
2
2
 
3
+ ## Version 1.0.3
4
+
5
+ - Before `Flickrie::User` had only the `#public_photos` method, now, I
6
+ just added the missing `#public_videos`, `#public_media`, `#photos`,
7
+ `#videos` and `#media`.
8
+
9
+ - Fixed Flickr's bug with mixing up the width and the height of a photo
10
+ (not only in the API, but also on their website).
11
+
12
+ ## Version 1.0.2
13
+
14
+ - Fix some mistakes in the documentation
15
+
3
16
  ## Version 1.0.1
4
17
 
5
18
  - Transfered the documentation to YARD. [Documentation](http://rubydoc.info/gems/flickrie/)
data/Gemfile CHANGED
@@ -2,10 +2,6 @@ source :rubygems
2
2
 
3
3
  gemspec
4
4
 
5
- group :test do
6
- gem "faraday", '0.7.6'
7
- end
8
-
9
5
  # You can run `bundle [install] --without extras` if you don't want to install them
10
6
  group :extras do
11
7
  gem "debugger"
data/flickrie.gemspec CHANGED
@@ -8,7 +8,7 @@ Gem::Specification.new do |gem|
8
8
  gem.author = "Janko Marohnić"
9
9
  gem.email = "janko.marohnic@gmail.com"
10
10
  gem.description = %q{This gem wraps the Flickr API with a nice object-oriented interface.}
11
- gem.summary = %q{This gem wraps the Flickr API with a nice object-oriented interface.}
11
+ gem.summary = gem.description
12
12
  gem.homepage = "https://github.com/janko-m/flickrie"
13
13
 
14
14
  gem.files = `git ls-files`.split($\)
@@ -25,6 +25,6 @@ Gem::Specification.new do |gem|
25
25
  gem.add_dependency "multi_xml", '~> 0.4'
26
26
 
27
27
  gem.add_development_dependency "rake", '~> 0.9'
28
- gem.add_development_dependency "rspec", '>= 2'
28
+ gem.add_development_dependency "rspec", '>= 2.10', '< 3'
29
29
  gem.add_development_dependency "vcr", '~> 2.1'
30
30
  end
@@ -156,6 +156,7 @@ module Flickrie
156
156
  #
157
157
  # @param media_id [String, Fixnum]
158
158
  # @param tags [String] A space delimited string with tags
159
+ # @return [nil]
159
160
  # @api_method [flickr.photos.addTags](http://www.flickr.com/services/api/flickr.photos.addTags.html)
160
161
  #
161
162
  # @note This method requires authentication with "write" permissions.
@@ -169,6 +170,7 @@ module Flickrie
169
170
  # Deletes the photo/video with the given ID.
170
171
  #
171
172
  # @param media_id [String, Fixnum]
173
+ # @return [nil]
172
174
  # @api_method [flickr.photos.delete](http://www.flickr.com/services/api/flickr.photos.delete.html)
173
175
  #
174
176
  # @note This method requires authentication with "delete" permissions.
@@ -385,6 +387,7 @@ module Flickrie
385
387
  # Remove the tag with the given ID
386
388
  #
387
389
  # @param tag_id [String]
390
+ # @return [nil]
388
391
  # @api_method [flickr.photos.removeTag](http://www.flickr.com/services/api/flickr.photos.removeTag.html)
389
392
  #
390
393
  # @note This method requires authentication with "write" permissions.
@@ -436,7 +439,7 @@ module Flickrie
436
439
  # ticket_id = Flickrie.upload(photo)
437
440
  # sleep(10)
438
441
  #
439
- # ticket = Flickrie.check_upload_tickects(ticket_id)
442
+ # ticket = Flickrie.check_upload_tickets(ticket_id)
440
443
  # if ticket.complete?
441
444
  # puts "Photo was uploaded, and its ID is #{ticket.photo_id}"
442
445
  # end
@@ -1,6 +1,11 @@
1
1
  module Flickrie
2
2
  class License
3
- attr_reader :id, :name, :url
3
+ # @return [String]
4
+ attr_reader :id
5
+ # @return [String]
6
+ attr_reader :name
7
+ # @return [String]
8
+ attr_reader :url
4
9
 
5
10
  private
6
11
 
@@ -1,32 +1,49 @@
1
1
  module Flickrie
2
2
  class Location
3
- # @!parse attr_reader :latitude
3
+ # @!parse attr_reader \
4
+ # :latitude, :longitude, :accuracy, :context,
5
+ # :neighbourhood, :locality, :county, :region,
6
+ # :country, :place_id, :woeid, :hash
7
+
8
+ # @return [Fixnum]
4
9
  def latitude() @info['latitude'] end
5
- # @!parse attr_reader :longitude
10
+ # @return [Fixnum]
6
11
  def longitude() @info['longitude'] end
7
- # @!parse attr_reader :accuracy
12
+ # @return [String]
8
13
  def accuracy() @info['accuracy'] end
9
- # @!parse attr_reader :context
14
+ # @return [Fixnum]
10
15
  def context() Integer(@info['context']) rescue nil end
11
16
 
12
- # @!parse attr_reader :neighbourhood
17
+ # Returns a struct with attributes `#name`, `#place_id` and `#woeid`
18
+ #
19
+ # @return [Struct]
13
20
  def neighbourhood() new_area('neighbourhood') end
14
- # @!parse attr_reader :locality
21
+ # Returns a struct with attributes `#name`, `#place_id` and `#woeid`
22
+ #
23
+ # @return [Struct]
15
24
  def locality() new_area('locality') end
16
- # @!parse attr_reader :county
25
+ # Returns a struct with attributes `#name`, `#place_id` and `#woeid`
26
+ #
27
+ # @return [Struct]
17
28
  def county() new_area('county') end
18
- # @!parse attr_reader :region
29
+ # Returns a struct with attributes `#name`, `#place_id` and `#woeid`
30
+ #
31
+ # @return [Struct]
19
32
  def region() new_area('region') end
20
- # @!parse attr_reader :country
33
+ # Returns a struct with attributes `#name`, `#place_id` and `#woeid`
34
+ #
35
+ # @return [Struct]
21
36
  def country() new_area('country') end
22
37
 
23
- # @!parse attr_reader :place_id
38
+ # @return [String]
24
39
  def place_id() @info['place_id'] end
25
- # @!parse attr_reader :woeid
40
+ # @return [String]
26
41
  def woeid() @info['woeid'] end
27
42
 
28
43
  def [](key) @info[key] end
29
- # @!parse attr_reader :hash
44
+ # Returns the raw hash from the response. Useful if something isn't available by methods.
45
+ #
46
+ # @return [Hash]
30
47
  def hash() @info end
31
48
 
32
49
  private
@@ -1,6 +1,8 @@
1
1
  module Flickrie
2
2
  module Media
3
3
  class Exif
4
+ # @!parse attr_reader :hash
5
+
4
6
  # Gets exif. Example:
5
7
  #
6
8
  # photo.exif.get('Model') # => 'Canon PowerShot G12'
@@ -20,7 +22,7 @@ module Flickrie
20
22
  end
21
23
 
22
24
  def [](key) @info[key] end
23
- # @!parse attr_reader :hash
25
+ # @return [Hash]
24
26
  def hash() @info end
25
27
 
26
28
  private
@@ -1,28 +1,39 @@
1
1
  module Flickrie
2
2
  module Media
3
3
  class Note
4
- attr_reader :id, :author, :coordinates, :content,
5
- :width, :height
4
+ # @!parse attr_reader \
5
+ # :id, :author, :content, :coordinates, :width,
6
+ # :height, :hash
7
+
8
+ # @return [String]
9
+ def id() @info['id'] end
10
+ # @return [Flickrie::User]
11
+ def author() User.new('nsid' => @info['author'], 'username' => @info['authorname']) end
12
+ # @return [String]
13
+ def content() @info['_content'] end
14
+ # Returns a 2-element array, representing a point.
15
+ #
16
+ # @return [Array<Fixnum>]
17
+ def coordinates() [@info['x'].to_i, @info['y'].to_i] end
18
+ # @return [Fixnum]
19
+ def width() @info['w'].to_i end
20
+ # @return [Fixnum]
21
+ def height() @info['h'].to_i end
6
22
 
7
23
  def to_s
8
- @content
24
+ content
9
25
  end
10
26
 
11
27
  def [](key) @info[key] end
12
- # @!parse attr_reader :hash
28
+ # @return [Fixnum]
13
29
  def hash() @info end
14
30
 
15
31
  private
16
32
 
17
- def initialize(hash)
18
- @id = hash['id']
19
- @author = User.new \
20
- 'nsid' => hash['author'],
21
- 'username' => hash['authorname']
22
- @content = hash['_content']
23
- @coordinates = [hash['x'].to_i, hash['y'].to_i]
24
- @width = hash['w'].to_i
25
- @height = hash['h'].to_i
33
+ def initialize(info)
34
+ raise ArgumentError if info.nil?
35
+
36
+ @info = info
26
37
  end
27
38
  end
28
39
  end
@@ -1,25 +1,28 @@
1
1
  module Flickrie
2
2
  module Media
3
3
  class Tag
4
- # @!parse attr_reader :id
4
+ # @!parse attr_reader \
5
+ # :id, :raw, :content, :machine_tag?, :author, :hash
6
+
7
+ # @return [String]
5
8
  def id() @info['id'] end
6
- # @!parse attr_reader :raw
9
+ # @return [String]
7
10
  def raw() @info['raw'] end
8
- # @!parse attr_reader :content
11
+ # @return [String]
9
12
  def content() @info['_content'] end
10
13
 
11
- # @!parse attr_reader :machine_tag?
14
+ # @return [Boolean]
12
15
  def machine_tag?
13
16
  @info['machine_tag'].to_i == 1 if @info['machine_tag']
14
17
  end
15
18
 
16
- # @!parse attr_reader :author
19
+ # @return [Flickrie::User]
17
20
  def author
18
21
  User.new('nsid' => @info['author']) if @info['author']
19
22
  end
20
23
 
21
24
  def [](key) @info[key] end
22
- # @!parse attr_reader :hash
25
+ # @return [Hash]
23
26
  def hash() @info end
24
27
 
25
28
  private
@@ -1,17 +1,20 @@
1
1
  module Flickrie
2
2
  module Media
3
3
  class Visibility
4
- # @!parse attr_reader :public?
4
+ # @!parse attr_reader \
5
+ # :public?, :friends?, :family?, :contacts?, :hash
6
+
7
+ # @return [Boolean]
5
8
  def public?() @info['ispublic'].to_i == 1 if @info['ispublic'] end
6
- # @!parse attr_reader :friends?
9
+ # @return [Boolean]
7
10
  def friends?() @info['isfriend'].to_i == 1 if @info['isfriend'] end
8
- # @!parse attr_reader :family?
11
+ # @return [Boolean]
9
12
  def family?() @info['isfamily'].to_i == 1 if @info['isfamily'] end
10
- # @!parse attr_reader :contacts?
13
+ # @return [Boolean]
11
14
  def contacts?() @info['iscontact'].to_i == 1 if @info['iscontact'] end
12
15
 
13
16
  def [](key) @info[key] end
14
- # @!parse attr_reader :hash
17
+ # @return [Hash]
15
18
  def hash() @info end
16
19
 
17
20
  private
@@ -7,24 +7,36 @@ require 'date'
7
7
 
8
8
  module Flickrie
9
9
  module Media
10
- # @!parse attr_reader :id
10
+ # @!parse attr_reader \
11
+ # :id, :secret, :server, :farm, :title, :description,
12
+ # :media_status, :path_alias, :camera, :exif, :views_count,
13
+ # :comments_count, :location, :geo_permissions, :tags,
14
+ # :machine_tags, :license, :posted_at, :uploaded_at,
15
+ # :updated_at, :taken_at, :taken_at_granularity, :owner,
16
+ # :safety_level, :safe?, :moderate?, :restricted?,
17
+ # :url, :visibility, :primary?, :favorite?, :can_comment?,
18
+ # :can_add_meta?, :can_everyone_comment?, :can_everyone_add_meta?,
19
+ # :can_download?, :can_blog?, :can_print?, :can_share?,
20
+ # :has_people?, :faved?, :notes, :favorites, :hash
21
+
22
+ # @return [String]
11
23
  def id() @info['id'] end
12
- # @!parse attr_reader :secret
24
+ # @return [String]
13
25
  def secret() @info['secret'] end
14
- # @!parse attr_reader :server
26
+ # @return [String]
15
27
  def server() @info['server'] end
16
- # @!parse attr_reader :farm
28
+ # @return [Fixnum]
17
29
  def farm() @info['farm'] end
18
- # @!parse attr_reader :title
30
+ # @return [String]
19
31
  def title() @info['title'] end
20
- # @!parse attr_reader :description
32
+ # @return [String]
21
33
  def description() @info['description'] end
22
- # @!parse attr_reader :media_status
34
+ # @return [String]
23
35
  def media_status() @info['media_status'] end
24
- # @!parse attr_reader :path_alias
36
+ # @return [String]
25
37
  def path_alias() @info['pathalias'] end
26
38
 
27
- # @!parse attr_reader :camera
39
+ # @return [String]
28
40
  def camera() @info['camera'] end
29
41
  # Returns exif of the photo/video. Example:
30
42
  #
@@ -35,66 +47,51 @@ module Flickrie
35
47
  # photo.exif.get('X-Resolution') # => '180 dpi'
36
48
  #
37
49
  # @return [Flickrie::Media::Exif]
38
- #
39
- # @!parse attr_reader :exif
40
50
  def exif() Exif.new(@info['exif']) rescue nil end
41
51
 
42
- # @!parse attr_reader :views_count
52
+ # @return [Fixnum]
43
53
  def views_count() Integer(@info['views']) rescue nil end
44
- # @!parse attr_reader :comments_count
54
+ # @return [Fixnum]
45
55
  def comments_count() Integer(@info['comments_count']) rescue nil end
46
56
 
47
57
  # @return [Flickrie::Location]
48
- #
49
- # @!parse attr_reader :location
50
58
  def location() Location.new(@info['location']) rescue nil end
51
59
  # @return [Flickrie::Media::Visibility]
52
- #
53
- # @!parse attr_reader :geo_permissions
54
60
  def geo_permissions() Visibility.new(@info['geoperms']) rescue nil end
55
61
 
56
62
  # @return [Array<Flickrie::Media::Tag>]
57
- #
58
- # @!parse attr_reader :tags
59
63
  def tags() @info['tags'].map { |info| Tag.new(info) } rescue nil end
60
64
  # @return [Array<Flickrie::Media::Tag>]
61
- #
62
- # @!parse attr_reader :machine_tags
63
65
  def machine_tags() tags.select { |tag| tag.machine_tag? } rescue nil end
64
66
 
65
67
  # @return [Flickrie::License]
66
- # @!parse attr_reader :license
67
68
  def license() License.new(@info['license']) rescue nil end
68
69
 
69
- # @!parse attr_reader :posted_at
70
+ # @return [Time]
70
71
  def posted_at() Time.at(Integer(@info['dates']['posted'])) rescue nil end
71
- # @!parse attr_reader :uploaded_at
72
+ # @return [Time]
72
73
  def uploaded_at() Time.at(Integer(@info['dates']['uploaded'])) rescue nil end
73
- # @!parse attr_reader :updated_at
74
+ # @return [Time]
74
75
  def updated_at() Time.at(Integer(@info['dates']['lastupdate'])) rescue nil end
75
- # @!parse attr_reader :taken_at
76
+ # @return [Time]
76
77
  def taken_at() DateTime.parse(@info['dates']['taken']).to_time rescue nil end
77
- # @!parse attr_reader :taken_at_granularity
78
+ # @return [Fixnum]
78
79
  def taken_at_granularity() Integer(@info['dates']['takengranularity']) rescue nil end
79
80
 
80
81
  # @return [Flickrie::User]
81
- #
82
- # @!parse attr_reader :owner
83
82
  def owner() User.new(@info['owner']) rescue nil end
84
83
 
85
- # @!parse attr_reader :safety_level
84
+ # @return [Fixnum]
86
85
  def safety_level() Integer(@info['safety_level']) rescue nil end
87
86
 
88
- # @!parse attr_reader :safe?
87
+ # @return [Boolean]
89
88
  def safe?() safety_level <= 1 if safety_level end
90
- # @!parse attr_reader :moderate?
89
+ # @return [Boolean]
91
90
  def moderate?() safety_level == 2 if safety_level end
92
- # @!parse attr_reader :restricted?
91
+ # @return [Boolean]
93
92
  def restricted?() safety_level == 3 if safety_level end
94
93
 
95
- # @comment TODO: Take care about the url from #get_info
96
- #
97
- # @!parse attr_reader :url
94
+ # @return [String]
98
95
  def url
99
96
  if owner and id
100
97
  "http://www.flickr.com/photos/#{owner.nsid}/#{id}"
@@ -104,56 +101,54 @@ module Flickrie
104
101
  end
105
102
 
106
103
  # @return [Flickrie::Media::Visibility]
107
- #
108
- # @!parse attr_reader :visibility
109
104
  def visibility() Visibility.new(@info['visibility']) rescue nil end
110
105
 
111
- # @!parse attr_reader :primary?
106
+ # @return [Boolean]
112
107
  def primary?() Integer(@info['isprimary']) == 1 rescue nil end
113
108
 
114
- # @!parse attr_reader :favorite?
109
+ # @return [Boolean]
115
110
  def favorite?() Integer(@info['isfavorite']) == 1 rescue nil end
116
111
 
117
- # @!parse attr_reader :can_comment?
112
+ # @return [Boolean]
118
113
  def can_comment?() Integer(@info['editability']['cancomment']) == 1 rescue nil end
119
- # @!parse attr_reader :can_add_meta?
114
+ # @return [Boolean]
120
115
  def can_add_meta?() Integer(@info['editability']['canaddmeta']) == 1 rescue nil end
121
116
 
122
- # @!parse attr_reader :can_everyone_comment?
117
+ # @return [Boolean]
123
118
  def can_everyone_comment?() Integer(@info['publiceditability']['cancomment']) == 1 rescue nil end
124
- # @!parse attr_reader :can_everyone_add_meta?
119
+ # @return [Boolean]
125
120
  def can_everyone_add_meta?() Integer(@info['publiceditability']['canaddmeta']) == 1 rescue nil end
126
121
 
127
- # @!parse attr_reader :can_download?
122
+ # @return [Boolean]
128
123
  def can_download?() Integer(@info['usage']['candownload']) == 1 rescue nil end
129
- # @!parse attr_reader :can_blog?
124
+ # @return [Boolean]
130
125
  def can_blog?() Integer(@info['usage']['canblog']) == 1 rescue nil end
131
- # @!parse attr_reader :can_print?
126
+ # @return [Boolean]
132
127
  def can_print?() Integer(@info['usage']['canprint']) == 1 rescue nil end
133
- # @!parse attr_reader :can_share?
128
+ # @return [Boolean]
134
129
  def can_share?() Integer(@info['usage']['canshare']) == 1 rescue nil end
135
130
 
136
- # @!parse attr_reader :has_people?
131
+ # @return [Boolean]
137
132
  def has_people?() Integer(@info['people']['haspeople']) == 1 rescue nil end
138
133
 
139
- # @!parse attr_reader :faved?
134
+ # @return [Boolean]
140
135
  def faved?() Integer(@info['is_faved']) == 1 rescue nil end
141
136
 
142
137
  # @return [Array<Flickrie::Media::Note>]
143
- #
144
- # @!parse attr_reader :notes
145
138
  def notes() @info['notes']['note'].map { |hash| Note.new(hash) } rescue nil end
146
139
 
147
140
  # @return [Array<Flickrie::User>]
148
- #
149
- # @!parse attr_reader :favorites
150
141
  def favorites() @info['person'].map { |info| User.new(info) } rescue nil end
151
142
 
152
143
  def [](key) @info[key] end
153
- # @!parse attr_reader :hash
144
+ # Returns the raw hash from the response. Useful if something isn't available by methods.
145
+ #
146
+ # @return [Hash]
154
147
  def hash() @info end
155
148
 
156
149
  # Same as calling `Flickrie.get_(photo|video)_info(id)`.
150
+ #
151
+ # @return [self]
157
152
  def get_info(params = {}, info = nil)
158
153
  info ||= Flickrie.client.get_media_info(id, params).body['photo']
159
154
  @info.update(info)
@@ -169,6 +164,8 @@ module Flickrie
169
164
  end
170
165
 
171
166
  # Same as calling `Flickrie.get_(photo|video)_info(id)`.
167
+ #
168
+ # @return [self]
172
169
  def get_exif(params = {}, info = nil)
173
170
  info ||= Flickrie.client.get_media_exif(id, params).body['photo']
174
171
  @info.update(info)
@@ -177,6 +174,8 @@ module Flickrie
177
174
  end
178
175
 
179
176
  # Same as calling `Flickrie.get_(photo|video)_info(id)`.
177
+ #
178
+ # @return [self]
180
179
  def get_favorites(params = {}, info = nil)
181
180
  info ||= Flickrie.client.get_media_favorites(id, params).body['photo']
182
181
  @info.update(info)
@@ -2,12 +2,12 @@ require 'date'
2
2
 
3
3
  module Flickrie
4
4
  class MediaCount
5
- # @!parse attr_reader :value
5
+ # @!parse attr_reader \
6
+ # :value, :date_range, :from, :to, :hash
7
+
6
8
  def value() Integer(@info['count']) rescue nil end
7
9
 
8
10
  # @return [Range]
9
- #
10
- # @!parse attr_reader :date_range
11
11
  def date_range
12
12
  dates =
13
13
  case @dates_kind
@@ -23,13 +23,15 @@ module Flickrie
23
23
  end
24
24
  alias time_interval date_range
25
25
 
26
- # @!parse attr_reader :from
26
+ # @return [Time]
27
27
  def from() date_range.begin end
28
- # @!parse attr_reader :to
28
+ # @return [Time]
29
29
  def to() date_range.end end
30
30
 
31
31
  def [](key) @info[key] end
32
- # @!parse attr_reader :hash
32
+ # Returns the raw hash from the response. Useful if something isn't available by methods.
33
+ #
34
+ # @return [Hash]
33
35
  def hash() @info end
34
36
 
35
37
  private
@@ -1,6 +1,8 @@
1
1
  module Flickrie
2
2
  class Photo
3
3
  include Media
4
+ # @!parse attr_reader \
5
+ # :size, :width, :height, :source_url, :rotation
4
6
 
5
7
  SIZES = {
6
8
  'Square 75' => 'sq',
@@ -15,59 +17,94 @@ module Flickrie
15
17
  'Original' => 'o'
16
18
  }
17
19
 
18
- # @!parse attr_reader :size
20
+ # Returns the current Flickr size of the photo ("Medium 500", for example).
21
+ #
22
+ # @return [String]
19
23
  def size() @size end
20
24
 
25
+ # @return [self]
21
26
  def square!(number) @size = "Square #{number}"; self end
27
+ # @return [self]
22
28
  def thumbnail!() @size = "Thumbnail"; self end
29
+ # @return [self]
23
30
  def small!(number) @size = "Small #{number}"; self end
31
+ # @return [self]
24
32
  def medium!(number) @size = "Medium #{number}"; self end
33
+ # @return [self]
25
34
  def large!(number) @size = "Large #{number}"; self end
35
+ # @return [self]
26
36
  def original!() @size = "Original"; self end
27
37
 
38
+ # @return [self]
28
39
  def square(number) dup.square!(number) end
40
+ # @return [self]
29
41
  def thumbnail() dup.thumbnail! end
42
+ # @return [self]
30
43
  def small(number) dup.small!(number) end
44
+ # @return [self]
31
45
  def medium(number) dup.medium!(number) end
46
+ # @return [self]
32
47
  def large(number) dup.large!(number) end
48
+ # @return [self]
33
49
  def original() dup.original! end
34
50
 
35
51
  # @comment Alternate size methods
52
+ # @return [self]
36
53
  def square75() square(75) end
54
+ # @return [self]
37
55
  def square75!() square!(75) end
56
+ # @return [self]
38
57
  def square150() square(150) end
58
+ # @return [self]
39
59
  def square150!() square!(150) end
60
+ # @return [self]
40
61
  def small240() small(240) end
62
+ # @return [self]
41
63
  def small240!() small!(240) end
64
+ # @return [self]
42
65
  def small320() small(320) end
66
+ # @return [self]
43
67
  def small320!() small!(320) end
68
+ # @return [self]
44
69
  def medium500() medium(500) end
70
+ # @return [self]
45
71
  def medium500!() medium!(500) end
72
+ # @return [self]
46
73
  def medium640() medium(640) end
74
+ # @return [self]
47
75
  def medium640!() medium!(640) end
76
+ # @return [self]
48
77
  def medium800() medium(800) end
78
+ # @return [self]
49
79
  def medium800!() medium!(800) end
80
+ # @return [self]
50
81
  def large1024() large(1024) end
82
+ # @return [self]
51
83
  def large1024!() large!(1024) end
52
84
 
85
+ # @return [self]
53
86
  def largest!() @size = largest_size; self end
87
+ # @return [self]
54
88
  def largest() dup.largest! end
55
89
 
90
+ # @return [Array<String>]
56
91
  def available_sizes
57
92
  SIZES.select { |_,v| @info["url_#{v}"] }.keys
58
93
  end
59
94
 
60
- # @!parse attr_reader :width
61
- def width() Integer(@info["width_#{size_abbr}"]) rescue nil end
62
- # @!parse attr_reader :height
63
- def height() Integer(@info["height_#{size_abbr}"]) rescue nil end
64
- # @!parse attr_reader :source_url
95
+ # @return [Fixnum]
96
+ def width() flickr_size.min rescue nil end
97
+ # @return [Fixnum]
98
+ def height() flickr_size.max rescue nil end
99
+ # @return [String]
65
100
  def source_url() @info["url_#{size_abbr}"] end
66
101
 
67
- # @!parse attr_reader :rotation
102
+ # @return [Fixnum]
68
103
  def rotation() Integer(@info['rotation']) rescue nil end
69
104
 
70
105
  # Same as calling `Flickrie.get_photo_sizes(photo.id)`.
106
+ #
107
+ # @return [self]
71
108
  def get_sizes(params = {}, info = nil)
72
109
  info ||= Flickrie.client.get_media_sizes(id, params).body['sizes']
73
110
  @info['usage'] ||= {}
@@ -111,5 +148,9 @@ module Flickrie
111
148
  def size_abbr
112
149
  SIZES[size]
113
150
  end
151
+
152
+ def flickr_size
153
+ [Integer(@info["width_#{size_abbr}"]), Integer(@info["height_#{size_abbr}"])]
154
+ end
114
155
  end
115
156
  end