picasa 0.4.0 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/README.md CHANGED
@@ -10,6 +10,8 @@ gem install picasa
10
10
 
11
11
  ## Usage
12
12
 
13
+ [Documentation](http://rubydoc.info/github/morgoth/picasa)
14
+
13
15
  ``` ruby
14
16
  client = Picasa::Client.new(user_id: "username@gmail.com")
15
17
  client.album.list
@@ -10,6 +10,7 @@ require "picasa/api/album"
10
10
  require "picasa/presenter/album"
11
11
  require "picasa/presenter/album_list"
12
12
  require "picasa/presenter/author"
13
+ require "picasa/presenter/content"
13
14
  require "picasa/presenter/link"
14
15
  require "picasa/presenter/media"
15
16
  require "picasa/presenter/photo"
@@ -4,8 +4,8 @@ module Picasa
4
4
  attr_reader :user_id, :credentials
5
5
 
6
6
  # @param [Hash] credentials
7
- # @option options [String] :user_id google username/email
8
- # @option options [String] :password password for given username/email
7
+ # @option credentials [String] :user_id google username/email
8
+ # @option credentials [String] :password password for given username/email
9
9
  def initialize(credentials)
10
10
  if MultiXml.parser.to_s == "MultiXml::Parsers::Ox"
11
11
  raise StandardError, "MultiXml parser is set to :ox - picasa gem will not work with it currently, use one of: :libxml, :nokogiri, :rexml"
@@ -16,7 +16,7 @@ module Picasa
16
16
 
17
17
  # Returns album list
18
18
  #
19
- # @param [Hash] additional options included in request
19
+ # @param [Hash] options additional options included in request
20
20
  #
21
21
  # @return [Presenter::AlbumList]
22
22
  def list(options = {})
@@ -28,10 +28,10 @@ module Picasa
28
28
 
29
29
  # Returns photo list for given album
30
30
  #
31
- # @param [String] id of album
32
- # @param [Hash] additional options included in request
33
- # @option options [String, Integer] :max_results max number of returned results
34
- # @option options [String] :tag include photos with given tag only
31
+ # @param [String] album_id album id
32
+ # @param [Hash] options additional options included in request
33
+ # @option options [String, Integer] :max_results max number of returned results
34
+ # @option options [String] :tag include photos with given tag only
35
35
  #
36
36
  # @return [Presenter::Album]
37
37
  def show(album_id, options = {})
@@ -2,11 +2,21 @@ module Picasa
2
2
  class Client
3
3
  attr_reader :credentials
4
4
 
5
+ # @param [Hash] credentials
6
+ # @option credentials [String] :user_id google username/email
7
+ # @option credentials [String] :password password for given username/email
5
8
  def initialize(credentials = {})
6
9
  credentials[:user_id] || raise(ArgumentError, "You must specify user_id")
7
10
  @credentials = credentials
8
11
  end
9
12
 
13
+ # @return [API::Album]
14
+ #
15
+ # @example
16
+ # client = Picasa::Client.new(user_id: "my.email@google.com")
17
+ # album_list = client.album.list
18
+ # album_list.title
19
+ # # => "My album"
10
20
  def album
11
21
  API::Album.new(credentials)
12
22
  end
@@ -3,71 +3,88 @@ require "picasa/presenter/base"
3
3
  module Picasa
4
4
  module Presenter
5
5
  class Album < Base
6
+ # @return [Presenter::Author]
6
7
  def author
7
8
  @author ||= Author.new(safe_retrieve(parsed_body, "author"))
8
9
  end
9
10
 
11
+ # @return [Array<Presenter::Photo>]
10
12
  def entries
11
13
  @entries ||= array_wrap(safe_retrieve(parsed_body, "entry")).map { |photo| Photo.new(photo) }
12
14
  end
13
15
  alias :photos :entries
14
16
 
17
+ # @return [Array<Presenter::Link>]
15
18
  def links
16
19
  @links ||= safe_retrieve(parsed_body, "link").map { |link| Link.new(link) }
17
20
  end
18
21
 
22
+ # @return [Presenter::Media]
19
23
  def media
20
24
  @media ||= Media.new(safe_retrieve(parsed_body, "group"))
21
25
  end
22
26
 
27
+ # @return [DateTime]
23
28
  def published
24
29
  @published ||= map_to_date(safe_retrieve(parsed_body, "published"))
25
30
  end
26
31
 
32
+ # @return [DateTime]
27
33
  def updated
28
34
  @updated ||= map_to_date(safe_retrieve(parsed_body, "updated"))
29
35
  end
30
36
 
37
+ # @return [String]
31
38
  def title
32
39
  @title ||= safe_retrieve(parsed_body, "title")
33
40
  end
34
41
 
42
+ # @return [String]
35
43
  def summary
36
44
  @summary ||= safe_retrieve(parsed_body, "summary")
37
45
  end
38
46
 
47
+ # @return [String]
39
48
  def rights
40
49
  @rights ||= safe_retrieve(parsed_body, "rights")
41
50
  end
42
51
 
52
+ # @return [String]
43
53
  def id
44
54
  @id ||= array_wrap(safe_retrieve(parsed_body, "id"))[1]
45
55
  end
46
56
 
57
+ # @return [String]
47
58
  def name
48
59
  @name ||= safe_retrieve(parsed_body, "name")
49
60
  end
50
61
 
62
+ # @return [String]
51
63
  def location
52
64
  @location ||= safe_retrieve(parsed_body, "location")
53
65
  end
54
66
 
67
+ # @return [String]
55
68
  def access
56
69
  @access ||= safe_retrieve(parsed_body, "access")
57
70
  end
58
71
 
72
+ # @return [String]
59
73
  def timestamp
60
74
  @timestamp ||= safe_retrieve(parsed_body, "timestamp")
61
75
  end
62
76
 
77
+ # @return [String]
63
78
  def numphotos
64
79
  @numphotos ||= map_to_integer(safe_retrieve(parsed_body, "numphotos"))
65
80
  end
66
81
 
82
+ # @return [String]
67
83
  def user
68
84
  @user ||= safe_retrieve(parsed_body, "user")
69
85
  end
70
86
 
87
+ # @return [String]
71
88
  def nickname
72
89
  @nickname ||= safe_retrieve(parsed_body, "nickname")
73
90
  end
@@ -3,55 +3,68 @@ require "picasa/presenter/base"
3
3
  module Picasa
4
4
  module Presenter
5
5
  class AlbumList < Base
6
+ # @return [Presenter::Author]
6
7
  def author
7
8
  @author ||= Author.new(safe_retrieve(parsed_body, "author"))
8
9
  end
9
10
 
11
+ # @return [Array<Presenter::Album>]
10
12
  def entries
11
13
  @entries ||= array_wrap(safe_retrieve(parsed_body, "entry")).map { |entry| Album.new(entry) }
12
14
  end
13
15
  alias :albums :entries
14
16
 
17
+ # @return [Array<Presenter::Link>]
15
18
  def links
16
19
  @links ||= safe_retrieve(parsed_body, "link").map { |link| Link.new(link) }
17
20
  end
18
21
 
22
+ # @return [String]
19
23
  def title
20
24
  @title ||= safe_retrieve(parsed_body, "title")
21
25
  end
22
26
 
27
+ # @return [DateTime]
23
28
  def updated
24
29
  @updated ||= map_to_date(safe_retrieve(parsed_body, "updated"))
25
30
  end
26
31
 
32
+ # @return [String]
27
33
  def icon
28
34
  @icon ||= safe_retrieve(parsed_body, "icon")
29
35
  end
30
36
 
37
+ # @return [String]
31
38
  def generator
32
39
  @generator ||= safe_retrieve(parsed_body, "generator", "__content__")
33
40
  end
34
41
 
42
+ # @return [Integer]
35
43
  def total_results
36
44
  @total_results ||= map_to_integer(safe_retrieve(parsed_body, "totalResults"))
37
45
  end
38
46
 
47
+ # @return [Integer]
39
48
  def start_index
40
49
  @start_index ||= map_to_integer(safe_retrieve(parsed_body, "startIndex"))
41
50
  end
42
51
 
52
+ # @return [Integer]
43
53
  def items_per_page
44
54
  @items_per_page ||= map_to_integer(safe_retrieve(parsed_body, "itemsPerPage"))
45
55
  end
46
56
 
57
+ # @return [String]
47
58
  def user
48
59
  @user ||= safe_retrieve(parsed_body, "user")
49
60
  end
50
61
 
62
+ # @return [String]
51
63
  def nickname
52
64
  @nickname ||= safe_retrieve(parsed_body, "nickname")
53
65
  end
54
66
 
67
+ # @return [String]
55
68
  def thumbnail
56
69
  @thumbnail ||= safe_retrieve(parsed_body, "thumbnail")
57
70
  end
@@ -3,10 +3,12 @@ require "picasa/presenter/base"
3
3
  module Picasa
4
4
  module Presenter
5
5
  class Author < Base
6
+ # @return [String]
6
7
  def name
7
8
  @name ||= safe_retrieve(parsed_body, "name")
8
9
  end
9
10
 
11
+ # @return [String]
10
12
  def uri
11
13
  @uri ||= safe_retrieve(parsed_body, "uri")
12
14
  end
@@ -0,0 +1,17 @@
1
+ require "picasa/presenter/base"
2
+
3
+ module Picasa
4
+ module Presenter
5
+ class Content < Base
6
+ # @return [String]
7
+ def type
8
+ @type ||= safe_retrieve(parsed_body, "type")
9
+ end
10
+
11
+ # @return [String]
12
+ def src
13
+ @src ||= safe_retrieve(parsed_body, "src")
14
+ end
15
+ end
16
+ end
17
+ end
@@ -3,14 +3,17 @@ require "picasa/presenter/base"
3
3
  module Picasa
4
4
  module Presenter
5
5
  class Link < Base
6
+ # @return [String]
6
7
  def rel
7
8
  @rel ||= safe_retrieve(parsed_body, "rel")
8
9
  end
9
10
 
11
+ # @return [String]
10
12
  def type
11
13
  @type ||= safe_retrieve(parsed_body, "type")
12
14
  end
13
15
 
16
+ # @return [String]
14
17
  def href
15
18
  @href ||= safe_retrieve(parsed_body, "href")
16
19
  end
@@ -3,22 +3,27 @@ require "picasa/presenter/base"
3
3
  module Picasa
4
4
  module Presenter
5
5
  class Media < Base
6
+ # @return [Array<Presenter::Thumbnail>]
6
7
  def thumbnails
7
8
  @thumbnails ||= array_wrap(safe_retrieve(parsed_body, "thumbnail")).map { |thumbnail| Thumbnail.new(thumbnail) }
8
9
  end
9
10
 
11
+ # @return [String]
10
12
  def credit
11
13
  @credit ||= safe_retrieve(parsed_body, "credit")
12
14
  end
13
15
 
16
+ # @return [String]
14
17
  def description
15
18
  @description ||= safe_retrieve(parsed_body, "description")
16
19
  end
17
20
 
21
+ # @return [String]
18
22
  def keywords
19
23
  @keywords ||= safe_retrieve(parsed_body, "keywords")
20
24
  end
21
25
 
26
+ # @return [String]
22
27
  def title
23
28
  @title ||= safe_retrieve(parsed_body, "title", "__content__")
24
29
  end
@@ -3,74 +3,97 @@ require "picasa/presenter/base"
3
3
  module Picasa
4
4
  module Presenter
5
5
  class Photo < Base
6
+ # @return [Array<Presenter::Link>]
6
7
  def links
7
8
  @links ||= safe_retrieve(parsed_body, "link").map { |link| Link.new(link) }
8
9
  end
9
10
 
11
+ # @return [Presenter::Media]
10
12
  def media
11
13
  @media ||= Media.new(safe_retrieve(parsed_body, "group"))
12
14
  end
13
15
 
16
+ # @return [Presenter::Content]
17
+ def content
18
+ @content ||= Content.new(safe_retrieve(parsed_body, "content"))
19
+ end
20
+
21
+ # @return [String]
14
22
  def id
15
23
  @id ||= array_wrap(safe_retrieve(parsed_body, "id"))[1]
16
24
  end
17
25
 
26
+ # @return [DateTime]
18
27
  def published
19
28
  @published ||= map_to_date(safe_retrieve(parsed_body, "published"))
20
29
  end
21
30
 
31
+ # @return [DateTime]
22
32
  def updated
23
33
  @updated ||= map_to_date(safe_retrieve(parsed_body, "updated"))
24
34
  end
25
35
 
36
+ # @return [String]
26
37
  def title
27
38
  @title ||= safe_retrieve(parsed_body, "title")
28
39
  end
29
40
 
41
+ # @return [String]
30
42
  def summary
31
43
  @summary ||= safe_retrieve(parsed_body, "summary")
32
44
  end
33
45
 
46
+ # @return [String]
34
47
  def album_id
35
48
  @album_id ||= safe_retrieve(parsed_body, "albumid")
36
49
  end
37
50
 
51
+ # @return [String]
38
52
  def access
39
53
  @access ||= safe_retrieve(parsed_body, "access")
40
54
  end
41
55
 
56
+ # @return [Integer]
42
57
  def width
43
58
  @width ||= map_to_integer(safe_retrieve(parsed_body, "width"))
44
59
  end
45
60
 
61
+ # @return [Integer]
46
62
  def height
47
63
  @height ||= map_to_integer(safe_retrieve(parsed_body, "height"))
48
64
  end
49
65
 
66
+ # @return [Integer]
50
67
  def size
51
68
  @size ||= map_to_integer(safe_retrieve(parsed_body, "size"))
52
69
  end
53
70
 
71
+ # @return [String]
54
72
  def checksum
55
73
  @checksum ||= safe_retrieve(parsed_body, "checksum")
56
74
  end
57
75
 
76
+ # @return [String]
58
77
  def timestamp
59
78
  @timestamp ||= safe_retrieve(parsed_body, "timestamp")
60
79
  end
61
80
 
81
+ # @return [Integer]
62
82
  def image_version
63
83
  @image_version ||= map_to_integer(safe_retrieve(parsed_body, "imageVersion"))
64
84
  end
65
85
 
86
+ # @return [true, false, nil]
66
87
  def commenting_enabled
67
88
  @commenting_enabled ||= map_to_boolean(safe_retrieve(parsed_body, "commentingEnabled"))
68
89
  end
69
90
 
91
+ # @return [Integer]
70
92
  def comment_count
71
93
  @comment_count ||= map_to_integer(safe_retrieve(parsed_body, "commentCount"))
72
94
  end
73
95
 
96
+ # @return [String]
74
97
  def license
75
98
  @license ||= safe_retrieve(parsed_body, "license", "__content__")
76
99
  end
@@ -3,14 +3,17 @@ require "picasa/presenter/base"
3
3
  module Picasa
4
4
  module Presenter
5
5
  class Thumbnail < Base
6
+ # @return [String]
6
7
  def url
7
8
  @url ||= safe_retrieve(parsed_body, "url")
8
9
  end
9
10
 
11
+ # @return [String]
10
12
  def width
11
13
  @width ||= map_to_integer(safe_retrieve(parsed_body, "width"))
12
14
  end
13
15
 
16
+ # @return [String]
14
17
  def height
15
18
  @height ||= map_to_integer(safe_retrieve(parsed_body, "height"))
16
19
  end
@@ -1,3 +1,3 @@
1
1
  module Picasa
2
- VERSION = "0.4.0"
2
+ VERSION = "0.4.1"
3
3
  end
@@ -0,0 +1,18 @@
1
+ # -*- encoding: utf-8 -*-
2
+ require "helper"
3
+
4
+ describe Picasa::Presenter::Content do
5
+ before do
6
+ body = MultiXml.parse(fixture("presenters/album_show.xml"))
7
+ @content = Picasa::Presenter::Content.new(body["feed"]["entry"][0]["content"])
8
+ end
9
+
10
+ it "has src" do
11
+ expected = "https://lh4.googleusercontent.com/-O0AOpTAPGBQ/SMU_j4ADl9I/AAAAAAAAAFs/DRnmROPuRVU/Kashmir%252520range.jpg"
12
+ assert_equal expected, @content.src
13
+ end
14
+
15
+ it "has type" do
16
+ assert_equal "image/jpeg", @content.type
17
+ end
18
+ end
@@ -11,6 +11,11 @@ describe Picasa::Presenter::Photo do
11
11
  assert_equal 5, @photo.links.size
12
12
  end
13
13
 
14
+ it "has content src" do
15
+ expected = "https://lh4.googleusercontent.com/-O0AOpTAPGBQ/SMU_j4ADl9I/AAAAAAAAAFs/DRnmROPuRVU/Kashmir%252520range.jpg"
16
+ assert_equal expected, @photo.content.src
17
+ end
18
+
14
19
  it "has media credit" do
15
20
  assert_equal "Wojciech Wnętrzak", @photo.media.credit
16
21
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: picasa
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.4.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-08-22 00:00:00.000000000 Z
12
+ date: 2012-08-23 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: multi_xml
@@ -81,6 +81,7 @@ files:
81
81
  - lib/picasa/presenter/album_list.rb
82
82
  - lib/picasa/presenter/author.rb
83
83
  - lib/picasa/presenter/base.rb
84
+ - lib/picasa/presenter/content.rb
84
85
  - lib/picasa/presenter/link.rb
85
86
  - lib/picasa/presenter/media.rb
86
87
  - lib/picasa/presenter/photo.rb
@@ -114,6 +115,7 @@ files:
114
115
  - test/presenter/album_test.rb
115
116
  - test/presenter/author_test.rb
116
117
  - test/presenter/base_test.rb
118
+ - test/presenter/content_test.rb
117
119
  - test/presenter/link_test.rb
118
120
  - test/presenter/media_test.rb
119
121
  - test/presenter/photo_test.rb