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 +2 -0
- data/lib/picasa.rb +1 -0
- data/lib/picasa/api/album.rb +7 -7
- data/lib/picasa/client.rb +10 -0
- data/lib/picasa/presenter/album.rb +17 -0
- data/lib/picasa/presenter/album_list.rb +13 -0
- data/lib/picasa/presenter/author.rb +2 -0
- data/lib/picasa/presenter/content.rb +17 -0
- data/lib/picasa/presenter/link.rb +3 -0
- data/lib/picasa/presenter/media.rb +5 -0
- data/lib/picasa/presenter/photo.rb +23 -0
- data/lib/picasa/presenter/thumbnail.rb +3 -0
- data/lib/picasa/version.rb +1 -1
- data/test/presenter/content_test.rb +18 -0
- data/test/presenter/photo_test.rb +5 -0
- metadata +4 -2
data/README.md
CHANGED
data/lib/picasa.rb
CHANGED
@@ -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"
|
data/lib/picasa/api/album.rb
CHANGED
@@ -4,8 +4,8 @@ module Picasa
|
|
4
4
|
attr_reader :user_id, :credentials
|
5
5
|
|
6
6
|
# @param [Hash] credentials
|
7
|
-
#
|
8
|
-
#
|
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]
|
32
|
-
# @param [Hash] additional options included in request
|
33
|
-
#
|
34
|
-
#
|
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 = {})
|
data/lib/picasa/client.rb
CHANGED
@@ -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
|
data/lib/picasa/version.rb
CHANGED
@@ -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.
|
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-
|
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
|