picasa 0.4.0 → 0.4.1

Sign up to get free protection for your applications and to get access to all the features.
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