smile 0.1.3 → 0.2.0
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/.yardoc +0 -0
- data/README.rdoc +12 -6
- data/VERSION.yml +2 -2
- data/lib/smile/base.rb +0 -1
- data/lib/smile/param_converter.rb +61 -0
- data/lib/smile/photo.rb +5 -1
- data/lib/smile.rb +87 -66
- data/smile.gemspec +5 -3
- metadata +4 -2
data/.yardoc
ADDED
Binary file
|
data/README.rdoc
CHANGED
@@ -1,10 +1,17 @@
|
|
1
1
|
= smile
|
2
2
|
|
3
3
|
Smile is a simple gem to talk to SmugMug.com.
|
4
|
+
This gem wraps the 1.2.0 interface.
|
4
5
|
|
5
|
-
New
|
6
|
+
== New Features
|
7
|
+
|
8
|
+
=== Search feeds
|
9
|
+
Smile.search( 'blueberries' ) => [Smile::Photo]
|
10
|
+
Smile.search_rss( 'bison' ) => RSS::Parser Feed
|
11
|
+
Smile.search_raw( 'grand' ) => Raw response from the feed
|
12
|
+
|
13
|
+
===New auth accessors
|
6
14
|
smug = Smile.auth_anonymously
|
7
|
-
_and_
|
8
15
|
smug = Smile.auth( 'nick', 'pass' )
|
9
16
|
|
10
17
|
|
@@ -16,8 +23,7 @@ New auth accessors
|
|
16
23
|
|
17
24
|
album.photos # and see the pretty pics
|
18
25
|
|
19
|
-
|
20
|
-
|
26
|
+
==== Old auth accessors ( NOTE: These are still supported )
|
21
27
|
smug = Smile::Smug.new
|
22
28
|
smug.auth( 'my_nick', 'my_pass' )
|
23
29
|
albums = smug.albums # theses are mine
|
@@ -29,8 +35,8 @@ New auth accessors
|
|
29
35
|
|
30
36
|
== TODO
|
31
37
|
* Clean up params so they are not case sensitive
|
32
|
-
*
|
33
|
-
* Update Documentation
|
38
|
+
* Create better exception handlers
|
39
|
+
* Update Documentation ( getting there. it's being published on rdoc.info now )
|
34
40
|
* Plugin in Cucumber
|
35
41
|
|
36
42
|
|
data/VERSION.yml
CHANGED
data/lib/smile/base.rb
CHANGED
@@ -0,0 +1,61 @@
|
|
1
|
+
module Smile::ParamConverter
|
2
|
+
module_function
|
3
|
+
|
4
|
+
def convert( param, value=nil )
|
5
|
+
key = nil
|
6
|
+
case param.to_s.downcase.to_sym
|
7
|
+
when :popular_category
|
8
|
+
key = :popularCategory
|
9
|
+
when :geo_all
|
10
|
+
key = :geoAll
|
11
|
+
when :geo_keyword
|
12
|
+
key = :geoKeyword
|
13
|
+
when :geo_search
|
14
|
+
key = :geoSearch
|
15
|
+
when :geo_community
|
16
|
+
key = :geoCommunity
|
17
|
+
when :open_search_keyword
|
18
|
+
key = :openSearchKeyword
|
19
|
+
when :user_keyword
|
20
|
+
key = :userkeyword
|
21
|
+
when :nickname_recent
|
22
|
+
key = :nicknameRecent
|
23
|
+
when :nickname_popular
|
24
|
+
key = :nicknamePopular
|
25
|
+
when :user_comments
|
26
|
+
key = :userComments
|
27
|
+
when :geo_user
|
28
|
+
key = :geoUser
|
29
|
+
when :geo_album
|
30
|
+
key = :geoAlbum
|
31
|
+
when :size
|
32
|
+
key = :Size
|
33
|
+
value = value.titlecase
|
34
|
+
when :image_count
|
35
|
+
key = :ImageCount
|
36
|
+
when :data
|
37
|
+
key = :Data
|
38
|
+
when :type
|
39
|
+
key = :Type
|
40
|
+
when :image_id
|
41
|
+
key = :ImageID
|
42
|
+
when :image_key
|
43
|
+
key = :ImageKey
|
44
|
+
when :image_count
|
45
|
+
key = :ImageCount
|
46
|
+
else
|
47
|
+
key = param
|
48
|
+
end
|
49
|
+
|
50
|
+
[ key, value ]
|
51
|
+
end
|
52
|
+
|
53
|
+
def clean_hash_keys( hash_to_clean )
|
54
|
+
cleaned_hash ={}
|
55
|
+
hash_to_clean.each_pair do |key,value|
|
56
|
+
cleaned_hash[convert( key ).first] = value
|
57
|
+
end
|
58
|
+
cleaned_hash
|
59
|
+
end
|
60
|
+
|
61
|
+
end
|
data/lib/smile/photo.rb
CHANGED
@@ -26,12 +26,15 @@ class Smile::Photo < Smile::Base
|
|
26
26
|
|
27
27
|
# This will pull a single image from the smugmug
|
28
28
|
#
|
29
|
-
# * int
|
29
|
+
# * int image_id
|
30
30
|
# * String Password optional
|
31
31
|
# * String SitePassword optional
|
32
32
|
# * String ImageKey
|
33
33
|
#
|
34
34
|
def find( options={} )
|
35
|
+
set_session if( session_id.nil? )
|
36
|
+
options = Smile::ParamConverter.clean_hash_keys( options )
|
37
|
+
|
35
38
|
params = default_params.merge(
|
36
39
|
:method => 'smugmug.images.getInfo'
|
37
40
|
)
|
@@ -39,6 +42,7 @@ class Smile::Photo < Smile::Base
|
|
39
42
|
params.merge!( options ) if( options )
|
40
43
|
xml = RestClient.post Smile::Base::BASE, params
|
41
44
|
image = Hash.from_xml( xml )["rsp"]["image"]
|
45
|
+
|
42
46
|
image.merge!( :image_id => image["id"] )
|
43
47
|
image.merge!( :album_key => image["album"]["key"] )
|
44
48
|
image.merge!( :album_id => image["album"]["id"] )
|
data/lib/smile.rb
CHANGED
@@ -5,105 +5,126 @@ require 'lib/smile/base'
|
|
5
5
|
require 'lib/smile/smug'
|
6
6
|
require 'lib/smile/album'
|
7
7
|
require 'lib/smile/photo'
|
8
|
+
require 'lib/smile/param_converter'
|
8
9
|
require 'cgi'
|
9
10
|
require 'rss'
|
10
11
|
|
11
12
|
module Smile
|
13
|
+
module_function
|
14
|
+
|
12
15
|
def auth_anonymously
|
13
16
|
smug = Smile::Smug.new
|
14
17
|
smug.auth_anonymously
|
15
18
|
smug
|
16
19
|
end
|
17
|
-
module_function( :auth_anonymously )
|
18
20
|
|
19
|
-
|
21
|
+
# Login to SmugMug using a specific user account.
|
22
|
+
#
|
23
|
+
# @param [String] username The username ( Nickname ) for the SmugMug account
|
24
|
+
# @param [String] password The password for the SmugMug account
|
25
|
+
#
|
26
|
+
# @return [Smile::SmugMug.new] An Smug object that has been authenticated
|
27
|
+
def auth( username, password )
|
20
28
|
smug = Smile::Smug.new
|
21
|
-
smug.auth(
|
29
|
+
smug.auth( username, password )
|
22
30
|
smug
|
23
31
|
end
|
24
|
-
module_function( :auth )
|
25
32
|
|
26
33
|
def base_feed( options={} )
|
27
34
|
options.merge!( :format => 'rss' )
|
28
35
|
url = "http://api.smugmug.com/hack/feed.mg?"
|
29
36
|
url_params =[]
|
30
37
|
options.each_pair do |k,value|
|
31
|
-
|
32
|
-
when :popular_category
|
33
|
-
key = :popularCategory
|
34
|
-
when :geo_all
|
35
|
-
key = :geoAll
|
36
|
-
when :geo_keyword
|
37
|
-
key = :geoKeyword
|
38
|
-
when :geo_search
|
39
|
-
key = :geoSearch
|
40
|
-
when :geo_community
|
41
|
-
key = :geoCommunity
|
42
|
-
when :open_search_keyword
|
43
|
-
key = :openSearchKeyword
|
44
|
-
when :user_keyword
|
45
|
-
key = :userkeyword
|
46
|
-
when :nickname_recent
|
47
|
-
key = :nicknameRecent
|
48
|
-
when :nickname_popular
|
49
|
-
key = :nicknamePopular
|
50
|
-
when :user_comments
|
51
|
-
key = :userComments
|
52
|
-
when :geo_user
|
53
|
-
key = :geoUser
|
54
|
-
when :geo_album
|
55
|
-
key = :geoAlbum
|
56
|
-
when :size
|
57
|
-
key = :Size
|
58
|
-
value = value.titlecase
|
59
|
-
when :image_count
|
60
|
-
key = :ImageCount
|
61
|
-
else
|
62
|
-
key = k
|
63
|
-
end
|
38
|
+
key, value = Smile::ParamConverter.convert( k, value )
|
64
39
|
|
65
40
|
url_params << "#{key.to_s}=#{ CGI.escape( value ) }"
|
66
41
|
end
|
67
42
|
|
68
|
-
|
69
|
-
RSS::Parser.parse( content, false )
|
43
|
+
RestClient.get( url + url_params.join( "&" ) )
|
70
44
|
end
|
71
|
-
|
45
|
+
private( :base_feed )
|
72
46
|
|
73
|
-
# Search SmugMug for pics.
|
74
|
-
#
|
47
|
+
# Search SmugMug for pics. This search is slower than the others, but returns Smile::Photo objects
|
48
|
+
#
|
49
|
+
# @param [String] data This is the search term that you want to use
|
50
|
+
# @param [optional, Hash] options Hash of options for the search method
|
51
|
+
# @option options [optional, String] :keyword override the keyword search
|
52
|
+
# @option options [optional, String] :popular Use term all or today
|
53
|
+
# @option options [optional, String] :popular_category Use term category ( e.g. cars )
|
54
|
+
# @option options [optional, String] :geo_all Geo Stuff
|
55
|
+
# @option options [optional, String] :geo_community More Geo Stuff
|
56
|
+
# @option options [optional, String] :geo_search Geo Search
|
57
|
+
# @option options [optional, String] :open_search_keyword Key word
|
58
|
+
# @option options [optional, String] :user_keyword Use term nickname
|
59
|
+
# @option options [optional, String] :gallery Use term albumID_albumKey
|
60
|
+
# @option options [optional, String] :nickname Use term nickname
|
61
|
+
# @option options [optional, String] :nickname_recent Use term nickname
|
62
|
+
# @option options [optional, String] :nickname_popular Use term nickname
|
63
|
+
# @option options [optional, String] :user_comments Use term nickname
|
64
|
+
# @option options [optional, String] :geo_user Use term nickname
|
65
|
+
# @option options [optional, String] :geo_album Use term nickname
|
75
66
|
#
|
76
|
-
#
|
77
|
-
#
|
78
|
-
# keyword
|
79
|
-
# popular # Use term all or today
|
80
|
-
# popularCategory # Use term category ( e.g. cars )
|
81
|
-
# geoAll
|
82
|
-
# geoKeyword
|
83
|
-
# geoSearch
|
84
|
-
# geoCommunity
|
85
|
-
# openSearchKeyword
|
86
|
-
# userkeyword # Use term nickname
|
87
|
-
# gallery # Use term albumID_albumKey
|
88
|
-
# nickname # Use term nickname
|
89
|
-
# nicknameRecent # Use term nickname
|
90
|
-
# nicknamePopular # Use term nickname
|
91
|
-
# usercomments # Use term nickname
|
92
|
-
# geoUser # Use term nickname
|
93
|
-
# geoAlbum # Use term albumID_albumKey
|
94
|
-
# ]
|
67
|
+
# @return [Array<Smile::Photo>] Smile::Photo objects will be returned. This take longer due to
|
68
|
+
# pulling more details from every photo.
|
95
69
|
def search( data, options={} )
|
96
|
-
rss =
|
97
|
-
rss.items.map{ |item| item.guid.content }
|
70
|
+
rss = search_rss( data, options )
|
98
71
|
|
72
|
+
rss.items.map do |item|
|
73
|
+
image_id, image_key = item.link.split('/').last.split('#').last.split('_')
|
74
|
+
Smile::Photo.find( :image_id => image_id, :image_key => image_key )
|
75
|
+
end
|
99
76
|
end
|
100
|
-
module_function( :search )
|
101
77
|
|
102
|
-
#
|
78
|
+
# Search SmugMug for pics. This search is slower than the others, but returns Smile::Photo objects
|
79
|
+
#
|
80
|
+
# @param [String] data This is the search term that you want to use
|
81
|
+
# @param [optional, Hash] options Hash of options for the search method
|
82
|
+
# @option options [optional, String] :keyword override the keyword search
|
83
|
+
# @option options [optional, String] :popular Use term all or today
|
84
|
+
# @option options [optional, String] :popular_category Use term category ( e.g. cars )
|
85
|
+
# @option options [optional, String] :geo_all Geo Stuff
|
86
|
+
# @option options [optional, String] :geo_community More Geo Stuff
|
87
|
+
# @option options [optional, String] :geo_search Geo Search
|
88
|
+
# @option options [optional, String] :open_search_keyword Key word
|
89
|
+
# @option options [optional, String] :user_keyword Use term nickname
|
90
|
+
# @option options [optional, String] :gallery Use term albumID_albumKey
|
91
|
+
# @option options [optional, String] :nickname Use term nickname
|
92
|
+
# @option options [optional, String] :nickname_recent Use term nickname
|
93
|
+
# @option options [optional, String] :nickname_popular Use term nickname
|
94
|
+
# @option options [optional, String] :user_comments Use term nickname
|
95
|
+
# @option options [optional, String] :geo_user Use term nickname
|
96
|
+
# @option options [optional, String] :geo_album Use term nickname
|
97
|
+
#
|
98
|
+
# @return [Array<Smile::Photo>] RSS feed from the RSS::Parser.parse method
|
99
|
+
def search_rss( data, options={} )
|
100
|
+
raw = search_raw( data, options )
|
101
|
+
RSS::Parser.parse( raw, false )
|
102
|
+
end
|
103
|
+
|
104
|
+
# Raw feed from the SmugMug data feeds
|
105
|
+
#
|
106
|
+
# @param [String] data This is the search term that you want to use
|
107
|
+
# @param [optional, Hash] options Hash of options for the search method
|
108
|
+
# @option options [optional, String] :keyword override the keyword search
|
109
|
+
# @option options [optional, String] :popular Use term all or today
|
110
|
+
# @option options [optional, String] :popular_category Use term category ( e.g. cars )
|
111
|
+
# @option options [optional, String] :geo_all Geo Stuff
|
112
|
+
# @option options [optional, String] :geo_community More Geo Stuff
|
113
|
+
# @option options [optional, String] :geo_search Geo Search
|
114
|
+
# @option options [optional, String] :open_search_keyword Key word
|
115
|
+
# @option options [optional, String] :user_keyword Use term nickname
|
116
|
+
# @option options [optional, String] :gallery Use term albumID_albumKey
|
117
|
+
# @option options [optional, String] :nickname Use term nickname
|
118
|
+
# @option options [optional, String] :nickname_recent Use term nickname
|
119
|
+
# @option options [optional, String] :nickname_popular Use term nickname
|
120
|
+
# @option options [optional, String] :user_comments Use term nickname
|
121
|
+
# @option options [optional, String] :geo_user Use term nickname
|
122
|
+
# @option options [optional, String] :geo_album Use term nickname
|
123
|
+
#
|
124
|
+
# @return [RestClientResponse] The response from a RestClient.get request
|
103
125
|
def search_raw( data, options={} )
|
104
126
|
options.merge!( :type => 'keyword', :data => data )
|
105
127
|
base_feed( options )
|
106
128
|
end
|
107
|
-
module_function( :search_raw )
|
108
129
|
end
|
109
130
|
|
data/smile.gemspec
CHANGED
@@ -2,24 +2,26 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = %q{smile}
|
5
|
-
s.version = "0.
|
5
|
+
s.version = "0.2.0"
|
6
6
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
8
8
|
s.authors = ["cajun"]
|
9
|
-
s.date = %q{2009-
|
9
|
+
s.date = %q{2009-07-11}
|
10
10
|
s.email = %q{zac@kleinpeter.org}
|
11
11
|
s.extra_rdoc_files = [
|
12
12
|
"LICENSE",
|
13
13
|
"README.rdoc"
|
14
14
|
]
|
15
15
|
s.files = [
|
16
|
-
"
|
16
|
+
".yardoc",
|
17
|
+
"LICENSE",
|
17
18
|
"README.rdoc",
|
18
19
|
"Rakefile",
|
19
20
|
"VERSION.yml",
|
20
21
|
"lib/smile.rb",
|
21
22
|
"lib/smile/album.rb",
|
22
23
|
"lib/smile/base.rb",
|
24
|
+
"lib/smile/param_converter.rb",
|
23
25
|
"lib/smile/photo.rb",
|
24
26
|
"lib/smile/smug.rb",
|
25
27
|
"smile.gemspec",
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: smile
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- cajun
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-
|
12
|
+
date: 2009-07-11 00:00:00 -05:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -42,6 +42,7 @@ extra_rdoc_files:
|
|
42
42
|
- LICENSE
|
43
43
|
- README.rdoc
|
44
44
|
files:
|
45
|
+
- .yardoc
|
45
46
|
- LICENSE
|
46
47
|
- README.rdoc
|
47
48
|
- Rakefile
|
@@ -49,6 +50,7 @@ files:
|
|
49
50
|
- lib/smile.rb
|
50
51
|
- lib/smile/album.rb
|
51
52
|
- lib/smile/base.rb
|
53
|
+
- lib/smile/param_converter.rb
|
52
54
|
- lib/smile/photo.rb
|
53
55
|
- lib/smile/smug.rb
|
54
56
|
- smile.gemspec
|