smile 0.3.0 → 0.3.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/.gitignore +14 -0
- data/Rakefile +2 -0
- data/VERSION.yml +1 -1
- data/bin/smile +21 -0
- data/config/metric_fu_config.rb +31 -0
- data/lib/smile/album.rb +316 -103
- data/lib/smile/param_converter.rb +79 -25
- data/lib/smile/photo.rb +38 -40
- data/lib/smile/smug.rb +7 -6
- data/lib/smile.rb +2 -2
- data/smile.gemspec +10 -4
- data/test/smile_test.rb +7 -7
- metadata +29 -17
- data/.yardoc +0 -0
data/.gitignore
ADDED
data/Rakefile
CHANGED
data/VERSION.yml
CHANGED
data/bin/smile
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# -*- mode: ruby -*-
|
3
|
+
|
4
|
+
require 'optparse'
|
5
|
+
require 'rubygems'
|
6
|
+
#require File.join(File.dirname(__FILE__), '../lib/smile' )
|
7
|
+
|
8
|
+
options ={}
|
9
|
+
opts = OptionParser.new do |opts|
|
10
|
+
opts.banner = "Usage smile [command] [options]"
|
11
|
+
end
|
12
|
+
|
13
|
+
unless( Dir.exists?( '~/.smile/' ) )
|
14
|
+
puts 'it is not there'
|
15
|
+
end
|
16
|
+
|
17
|
+
|
18
|
+
if( ARGV.empty? )
|
19
|
+
puts opts
|
20
|
+
exit
|
21
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
MetricFu::Configuration.run do |config|
|
2
|
+
#define which metrics you want to use
|
3
|
+
config.metrics = [:churn, :saikuro, :flog, :flay, :reek, :roodi, :rcov]
|
4
|
+
config.graphs = [:flog, :flay, :reek, :roodi, :rcov]
|
5
|
+
config.flay = { :dirs_to_flay => ['lib'],
|
6
|
+
:minimum_score => 100 }
|
7
|
+
config.flog = { :dirs_to_flog => ['lib'] }
|
8
|
+
config.reek = { :dirs_to_reek => ['lib'] }
|
9
|
+
config.roodi = { :dirs_to_roodi => ['lib'] }
|
10
|
+
config.saikuro = { :output_directory => 'scratch_directory/saikuro',
|
11
|
+
:input_directory => ['lib'],
|
12
|
+
:cyclo => "",
|
13
|
+
:filter_cyclo => "0",
|
14
|
+
:warn_cyclo => "5",
|
15
|
+
:error_cyclo => "7",
|
16
|
+
:formater => "text"} #this needs to be set to "text"
|
17
|
+
config.churn = { :start_date => "1 year ago", :minimum_churn_count => 10}
|
18
|
+
config.rcov = { :environment => 'test',
|
19
|
+
:test_files => ['test/*_test.rb'],
|
20
|
+
:rcov_opts => ["--sort coverage",
|
21
|
+
"--no-html",
|
22
|
+
"--text-coverage",
|
23
|
+
"--profile",
|
24
|
+
"--exclude /gems/,/Library/,spec"]}
|
25
|
+
config.graph_engine = :bluff
|
26
|
+
end
|
27
|
+
|
28
|
+
namespace :metrics do
|
29
|
+
TEST_PATHS_FOR_RCOV = ['test/*_test.rb']
|
30
|
+
end
|
31
|
+
|
data/lib/smile/album.rb
CHANGED
@@ -1,86 +1,95 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
# string Key
|
8
|
-
# string Title
|
9
|
-
# struct Category
|
10
|
-
# string id
|
11
|
-
# string Name
|
12
|
-
# struct SubCategory
|
13
|
-
# string id
|
14
|
-
# string Name
|
15
|
-
#
|
16
|
-
# HEAVY RESPONSE
|
17
|
-
#
|
18
|
-
# array Albums
|
19
|
-
# Album
|
20
|
-
# integer id
|
21
|
-
# string Key
|
22
|
-
# string Title
|
23
|
-
# struct Category
|
24
|
-
# string id
|
25
|
-
# string Name
|
26
|
-
# struct SubCategory
|
27
|
-
# string id
|
28
|
-
# string Name
|
29
|
-
# string Description
|
30
|
-
# string Keywords
|
31
|
-
# boolean Geography (owner)
|
32
|
-
# integer Position
|
33
|
-
# struct Hightlight (owner)
|
34
|
-
# string id
|
35
|
-
# integer ImageCount
|
36
|
-
# string LastUpdated
|
37
|
-
# boolean Header (owner, power & pro only)
|
38
|
-
# boolean Clean (owner)
|
39
|
-
# boolean EXIF (owner)
|
40
|
-
# boolean Filenames (owner)
|
41
|
-
# struct Template (owner)
|
42
|
-
# string id
|
43
|
-
# string SortMethod (owner)
|
44
|
-
# boolean SortDirection (owner)
|
45
|
-
# string Password (owner)
|
46
|
-
# string PasswordHint (owner)
|
47
|
-
# boolean Public (owner)
|
48
|
-
# boolean WorldSearchable (owner)
|
49
|
-
# boolean SmugSearchable (owner)
|
50
|
-
# boolean External (owner)
|
51
|
-
# boolean Protected (owner, power & pro only)
|
52
|
-
# boolean Watermarking (owner, pro only)
|
53
|
-
# struct Watermark (owner, pro only)
|
54
|
-
# string id
|
55
|
-
# boolean HideOwner (owner)
|
56
|
-
# boolean Larges (owner, pro only)
|
57
|
-
# boolean XLarges (owner, pro only)
|
58
|
-
# boolean X2Larges (owner)
|
59
|
-
# boolean X3Larges (owner)
|
60
|
-
# boolean Originals (owner)
|
61
|
-
# boolean CanRank (owner)
|
62
|
-
# boolean FriendEdit (owner)
|
63
|
-
# boolean FamilyEdit (owner)
|
64
|
-
# boolean Comments (owner)
|
65
|
-
# boolean Share (owner)
|
66
|
-
# boolean Printable (owner)
|
67
|
-
# int ColorCorrection (owner)
|
68
|
-
# boolean DefaultColor (owner, pro only) deprecated
|
69
|
-
# integer ProofDays (owner, pro only)
|
70
|
-
# string Backprinting (owner, pro only)
|
71
|
-
# float UnsharpAmount (owner, power & pro only)
|
72
|
-
# float UnsharpRadius (owner, power & pro only)
|
73
|
-
# float UnsharpThreshold (owner, power & pro only)
|
74
|
-
# float UnsharpSigma (owner, power & pro only)
|
75
|
-
# struct Community (owner)
|
76
|
-
# string id
|
77
|
-
#
|
78
|
-
# Created by Zac Kleinpeter on 2009-04-28.
|
79
|
-
# Copyright 2009 Cajun Country. All rights reserved.
|
1
|
+
# The Album class will fetch any public/private album hosted on SmugMug.
|
2
|
+
# The Album Objects will have the following fields on the response
|
3
|
+
#
|
4
|
+
# Result
|
5
|
+
#
|
6
|
+
# STANDARD RESPONSE
|
80
7
|
#
|
8
|
+
# array Albums
|
9
|
+
# Album
|
10
|
+
# integer id
|
11
|
+
# string Key
|
12
|
+
# string Title
|
13
|
+
# struct Category
|
14
|
+
# string id
|
15
|
+
# string Name
|
16
|
+
# string id
|
17
|
+
# string Name
|
18
|
+
# struct SubCategory
|
19
|
+
# string id
|
20
|
+
# string Name
|
21
|
+
# string id
|
22
|
+
# string Name
|
23
|
+
#
|
24
|
+
# HEAVY RESPONSE
|
25
|
+
#
|
26
|
+
# array Albums
|
27
|
+
# Album
|
28
|
+
# integer id
|
29
|
+
# string Key
|
30
|
+
# string Title
|
31
|
+
# struct Category
|
32
|
+
# string id
|
33
|
+
# string Name
|
34
|
+
# struct SubCategory
|
35
|
+
# string id
|
36
|
+
# string Name
|
37
|
+
# string Description
|
38
|
+
# string Keywords
|
39
|
+
# boolean Geography (owner)
|
40
|
+
# integer Position
|
41
|
+
# struct Hightlight (owner)
|
42
|
+
# string id
|
43
|
+
# integer ImageCount
|
44
|
+
# string LastUpdated
|
45
|
+
# boolean Header (owner, power & pro only)
|
46
|
+
# boolean Clean (owner)
|
47
|
+
# boolean EXIF (owner)
|
48
|
+
# boolean Filenames (owner)
|
49
|
+
# struct Template (owner)
|
50
|
+
# string id
|
51
|
+
# string SortMethod (owner)
|
52
|
+
# boolean SortDirection (owner)
|
53
|
+
# string Password (owner)
|
54
|
+
# string PasswordHint (owner)
|
55
|
+
# boolean Public (owner)
|
56
|
+
# boolean WorldSearchable (owner)
|
57
|
+
# boolean SmugSearchable (owner)
|
58
|
+
# boolean External (owner)
|
59
|
+
# boolean Protected (owner, power & pro only)
|
60
|
+
# boolean Watermarking (owner, pro only)
|
61
|
+
# struct Watermark (owner, pro only)
|
62
|
+
# string id
|
63
|
+
# boolean HideOwner (owner)
|
64
|
+
# boolean Larges (owner, pro only)
|
65
|
+
# boolean XLarges (owner, pro only)
|
66
|
+
# boolean X2Larges (owner)
|
67
|
+
# boolean X3Larges (owner)
|
68
|
+
# boolean Originals (owner)
|
69
|
+
# boolean CanRank (owner)
|
70
|
+
# boolean FriendEdit (owner)
|
71
|
+
# boolean FamilyEdit (owner)
|
72
|
+
# boolean Comments (owner)
|
73
|
+
# boolean Share (owner)
|
74
|
+
# boolean Printable (owner)
|
75
|
+
# int ColorCorrection (owner)
|
76
|
+
# boolean DefaultColor (owner, pro only) deprecated
|
77
|
+
# integer ProofDays (owner, pro only)
|
78
|
+
# string Backprinting (owner, pro only)
|
79
|
+
# float UnsharpAmount (owner, power & pro only)
|
80
|
+
# float UnsharpRadius (owner, power & pro only)
|
81
|
+
# float UnsharpThreshold (owner, power & pro only)
|
82
|
+
# float UnsharpSigma (owner, power & pro only)
|
83
|
+
# struct Community (owner)
|
84
|
+
# string id
|
85
|
+
#
|
86
|
+
# @author Zac Kleinpeter
|
87
|
+
# @date 2009-04-28.
|
81
88
|
class Smile::Album < Smile::Base
|
82
89
|
|
83
90
|
class << self
|
91
|
+
# Converts the json results from the web service into
|
92
|
+
# Album object to use
|
84
93
|
def from_json( json, session_id )
|
85
94
|
result = JSON.parse( json )
|
86
95
|
result["Albums"].map do |album_upcase|
|
@@ -94,22 +103,23 @@ class Smile::Album < Smile::Base
|
|
94
103
|
end
|
95
104
|
end
|
96
105
|
|
97
|
-
# This will pull a single album from the smugmug
|
106
|
+
# This will pull a single album from the smugmug.
|
107
|
+
# The Site ID is auto passed if you are logged in.
|
98
108
|
#
|
99
|
-
#
|
100
|
-
#
|
101
|
-
#
|
102
|
-
#
|
103
|
-
#
|
104
|
-
#
|
109
|
+
# @param [Hash] :options yes this is the has you will put stuff
|
110
|
+
# @param options [String] :album_id This is the ID of the album you want to find
|
111
|
+
# @param options [String] :album_key This is the KEY for the albums
|
112
|
+
# @param options [optional, String] :password password for the albums
|
113
|
+
# @param options [optional, String] :site_password password for the site
|
105
114
|
def find( options={} )
|
106
115
|
params = default_params.merge(
|
107
116
|
:method => 'smugmug.albums.getInfo'
|
108
117
|
)
|
109
118
|
|
119
|
+
options = Smile::ParamConverter.clean_hash_keys( options )
|
110
120
|
params.merge!( options ) if( options )
|
111
121
|
|
112
|
-
json = RestClient.post Smile::Base::BASE, params
|
122
|
+
json = RestClient.post( Smile::Base::BASE, params ).body
|
113
123
|
|
114
124
|
album_upper = JSON.parse(json)
|
115
125
|
|
@@ -120,15 +130,172 @@ class Smile::Album < Smile::Base
|
|
120
130
|
a.session_id = session_id
|
121
131
|
a
|
122
132
|
end
|
133
|
+
|
134
|
+
# Update the album from the following params
|
135
|
+
#
|
136
|
+
# @param [String] title What you want to call it
|
137
|
+
# @param [optional, Hash] options wow it's a hash
|
138
|
+
#
|
139
|
+
# Essentials
|
140
|
+
# @option options [Fixnum] :category_id it is what it is
|
141
|
+
# @option options [optional, Fixnum] :sub_category_id ( 0 ) guess what this is
|
142
|
+
# @option options [optional, String] :description what am i looking at
|
143
|
+
# @option options [optional, String] :keywords space seperated or comman don't know
|
144
|
+
# @option options [optional, Fixnum] :album_template_id ( 1 ) yup
|
145
|
+
# @option options [optional, Boolean] :geography ( 0 ) huh?
|
146
|
+
# @option options [optional, Fixnum] :highlight_id you guess is as good as mine
|
147
|
+
# @option options [optional, Fixnum] :position I'm just the dev
|
148
|
+
#
|
149
|
+
# Look & Feel
|
150
|
+
# @option options [optional, Boolean] :header ( 0 ) yup
|
151
|
+
# @option options [optional, Boolean] :clean ( 0 ) @see http://smugmug.com
|
152
|
+
# @option options [optional, Boolean] :exif ( 1 ) @see http://smugmug.com
|
153
|
+
# @option options [optional, Boolean] :filenames ( 0 ) show file names
|
154
|
+
# @option options [optional, Boolean] :square_thumbs ( 1 ) user square ones
|
155
|
+
# @option options [optional, Fixnum] :template_id ( 0 ) 0:Viewer Choice 3:SmugMug 4:Traditional 7:All Thumbs 8:Slideshow 9:Journal 10:SmugMug Small 11:Filmstrip
|
156
|
+
# @option options [optional, String] :sort_method ( 'Position' ) %w( Position Caption FileName Date DateTime DateTimeOriginal )
|
157
|
+
# @option options [optional, 1 or 0] :sort_direction 0: Ascending (1-99, A-Z, 1980-2004, etc) 1: Descending (99-1, Z-A, 2004-1980, etc)
|
158
|
+
#
|
159
|
+
# Security & Privacy
|
160
|
+
# @option options [optional, String] :password want one?
|
161
|
+
# @option options [optional, String] :password_hint need one?
|
162
|
+
# @option options [optional, Boolean] :public ( 1 ) is it?
|
163
|
+
# @option options [optional, Boolean] :world_searchable ( 1 ) can i?
|
164
|
+
# @option options [optional, Boolean] :smug_searchable ( 1 ) please?
|
165
|
+
# @option options [optional, Boolean] :external ( 1 ) let everyone know
|
166
|
+
# @option options [optional, Boolean] :protected ( 0 ) MINE!!!
|
167
|
+
# @option options [optional, Boolean] :watermarking ( 0 ) kinda cool
|
168
|
+
# @option options [optional, Fixnum] :watermark_id ( 0 ) which one
|
169
|
+
# @option options [optional, Boolean] :hide_owner ( 0 ) you can't see me
|
170
|
+
# @option options [optional, Boolean] :larges ( 1 ) show bigens
|
171
|
+
# @option options [optional, Boolean] :x_larges ( 1 ) show X bigens
|
172
|
+
# @option options [optional, Boolean] :x2_larges ( 1 ) show XX bigens
|
173
|
+
# @option options [optional, Boolean] :x3_larges ( 1 ) show XXX bigens
|
174
|
+
# @option options [optional, Boolean] :originals ( 1 ) show what i uploaded
|
175
|
+
#
|
176
|
+
# Social
|
177
|
+
# @option options [optional, Boolean] :can_rank ( 1 ) well...yesss
|
178
|
+
# @option options [optional, Boolean] :friend_edit ( 0 ) yeah i have friends!!!
|
179
|
+
# @option options [optional, Boolean] :family_edit ( 0 ) go ahead ma
|
180
|
+
# @option options [optional, Boolean] :comments ( 1 ) I just wanted to say....
|
181
|
+
# @option options [optional, Boolean] :share ( 1 ) here you go
|
182
|
+
#
|
183
|
+
# Printing & Sales
|
184
|
+
# @option options [optional, Boolean] :printable ( 1 ) yes
|
185
|
+
# @option options [optional, Fixnum] :color_correction ( 2 ) 0:No 1:Yes 2:Injerit
|
186
|
+
# @option options [optional, Boolean] :default_color ( 0 ) ( pro only deprecated ) 1:Auto 0: True
|
187
|
+
# @option options [optional, Fixnum] :proof_days ( 0 ) yep ( pro only )
|
188
|
+
# @option options [optional, String] :back_printing what you want to see behind you
|
189
|
+
#
|
190
|
+
# Photo Sharpening
|
191
|
+
# @option options [optional, Float] :unsharp_amount ( 0.200 ) numbers
|
192
|
+
# @option options [optional, Float] :unsharp_radius ( 1.000 ) more numbers
|
193
|
+
# @option options [optional, Float] :unsharp_threshold ( 0.050 ) I'm a dev what does this mean?
|
194
|
+
# @option options [optional, Float] :unsharp_sigma ( 1.000 ) and more numbers
|
195
|
+
#
|
196
|
+
# Community
|
197
|
+
# @option options [optional, Fixnum] :community_id ( 0 ) join the group
|
198
|
+
def create( title, options )
|
199
|
+
params = default_params.merge(
|
200
|
+
:method => 'smugmug.albums.create',
|
201
|
+
:AlbumID => album_id
|
202
|
+
)
|
203
|
+
options = Smile::ParamConverter.clean_hash_keys( options )
|
204
|
+
params.merge!( options ) if( options )
|
205
|
+
|
206
|
+
json = RestClient.post( BASE, params ).body
|
207
|
+
json = JSON.parse( json )
|
208
|
+
raise json["message"] if json["stat"] == 'fail'
|
209
|
+
find( :album_id => json["Album"]["id"], :album_key => json["Album"]["key"] )
|
210
|
+
true
|
211
|
+
end
|
123
212
|
end
|
124
213
|
|
214
|
+
# Update the album from the following params
|
215
|
+
#
|
216
|
+
# @param [optional, Hash] options wow it's a hash
|
217
|
+
#
|
218
|
+
# Essentials
|
219
|
+
# @option options [optional, String] :title the title maybe?
|
220
|
+
# @option options [optional, Fixnum] :category_id it is what it is
|
221
|
+
# @option options [optional, Fixnum] :sub_category_id guess what this is
|
222
|
+
# @option options [optional, String] :description what am i looking at
|
223
|
+
# @option options [optional, String] :keywords space seperated or comman don't know
|
224
|
+
# @option options [optional, Fixnum] :album_template_id yup
|
225
|
+
# @option options [optional, Boolean] :geography huh?
|
226
|
+
# @option options [optional, Fixnum] :highlight_id you guess is as good as mine
|
227
|
+
# @option options [optional, Fixnum] :position I'm just the dev
|
228
|
+
#
|
229
|
+
# Look & Feel
|
230
|
+
# @option options [optional, Boolean] :header yup
|
231
|
+
# @option options [optional, Boolean] :clean @see http://smugmug.com
|
232
|
+
# @option options [optional, Boolean] :exif @see http://smugmug.com
|
233
|
+
# @option options [optional, Boolean] :filenames show file names
|
234
|
+
# @option options [optional, Boolean] :square_thumbs user square ones
|
235
|
+
# @option options [optional, Fixnum] :template_id 0:Viewer Choice 3:SmugMug 4:Traditional 7:All Thumbs 8:Slideshow 9:Journal 10:SmugMug Small 11:Filmstrip
|
236
|
+
# @option options [optional, String] :sort_method %w( Position Caption FileName Date DateTime DateTimeOriginal )
|
237
|
+
# @option options [optional, 1 or 0] :sort_direction 0: Ascending (1-99, A-Z, 1980-2004, etc) 1: Descending (99-1, Z-A, 2004-1980, etc)
|
238
|
+
#
|
239
|
+
# Security & Privacy
|
240
|
+
# @option options [optional, String] :password want one?
|
241
|
+
# @option options [optional, String] :password_hint need one?
|
242
|
+
# @option options [optional, Boolean] :public is it?
|
243
|
+
# @option options [optional, Boolean] :world_searchable can i?
|
244
|
+
# @option options [optional, Boolean] :smug_searchable please?
|
245
|
+
# @option options [optional, Boolean] :external let everyone know
|
246
|
+
# @option options [optional, Boolean] :protected MINE!!!
|
247
|
+
# @option options [optional, Boolean] :watermarking kinda cool
|
248
|
+
# @option options [optional, Fixnum] :watermark_id which one
|
249
|
+
# @option options [optional, Boolean] :hide_owner you can't see me
|
250
|
+
# @option options [optional, Boolean] :larges show bigens
|
251
|
+
# @option options [optional, Boolean] :x_larges show X bigens
|
252
|
+
# @option options [optional, Boolean] :x2_larges show XX bigens
|
253
|
+
# @option options [optional, Boolean] :x3_larges show XXX bigens
|
254
|
+
# @option options [optional, Boolean] :originals show what i uploaded
|
255
|
+
#
|
256
|
+
# Social
|
257
|
+
# @option options [optional, Boolean] :can_rank well...yesss
|
258
|
+
# @option options [optional, Boolean] :friend_edit yeah i have friends!!!
|
259
|
+
# @option options [optional, Boolean] :family_edit go ahead ma
|
260
|
+
# @option options [optional, Boolean] :comments I just wanted to say....
|
261
|
+
# @option options [optional, Boolean] :share here you go
|
262
|
+
#
|
263
|
+
# Printing & Sales
|
264
|
+
# @option options [optional, Boolean] :printable yes
|
265
|
+
# @option options [optional, Fixnum] :color_correction 0:No 1:Yes 2:Injerit
|
266
|
+
# @option options [optional, Boolean] :default_color ( pro only deprecated ) 1:Auto 0: True
|
267
|
+
# @option options [optional, Fixnum] :proof_days yep ( pro only )
|
268
|
+
# @option options [optional, String] :back_printing what you want to see behind you
|
269
|
+
#
|
270
|
+
# Photo Sharpening
|
271
|
+
# @option options [optional, Float] :unsharp_amount numbers
|
272
|
+
# @option options [optional, Float] :unsharp_radius more numbers
|
273
|
+
# @option options [optional, Float] :unsharp_threshold I'm a dev what does this mean?
|
274
|
+
# @option options [optional, Float] :unsharp_sigma and more numbers
|
275
|
+
#
|
276
|
+
# Community
|
277
|
+
# @option options [optional, Fixnum] :community_id join the group
|
278
|
+
def update( options )
|
279
|
+
params = default_params.merge(
|
280
|
+
:method => 'smugmug.albums.changeSettings',
|
281
|
+
:AlbumID => album_id
|
282
|
+
)
|
283
|
+
options = Smile::ParamConverter.clean_hash_keys( options )
|
284
|
+
params.merge!( options ) if( options )
|
285
|
+
|
286
|
+
json = RestClient.post( BASE, params ).body
|
287
|
+
json = JSON.parse( json )
|
288
|
+
raise json["message"] if json["stat"] == 'fail'
|
289
|
+
true
|
290
|
+
end
|
291
|
+
|
125
292
|
# This will pull all the photos for a given album
|
126
|
-
#
|
127
|
-
#
|
128
|
-
#
|
129
|
-
#
|
130
|
-
#
|
131
|
-
#
|
293
|
+
#
|
294
|
+
# @param [optional, Hash] options wow it's a hash
|
295
|
+
#
|
296
|
+
# @option options [optional, boolean] :heavy ( true ) default is true
|
297
|
+
# @option options [optional, string] :password password for the pics
|
298
|
+
# @option options [optional, string] :site_password access via site password
|
132
299
|
def photos( options=nil )
|
133
300
|
params = default_params.merge(
|
134
301
|
:method => 'smugmug.images.get',
|
@@ -136,17 +303,20 @@ class Smile::Album < Smile::Base
|
|
136
303
|
:AlbumKey => key,
|
137
304
|
:Heavy => 1
|
138
305
|
)
|
139
|
-
|
306
|
+
options = Smile::ParamConverter.clean_hash_keys( options )
|
140
307
|
params.merge!( options ) if( options )
|
141
308
|
|
142
|
-
json = RestClient.post BASE, params
|
309
|
+
json = RestClient.post( BASE, params ).body
|
310
|
+
|
143
311
|
Smile::Photo.from_json( json, session_id )
|
144
312
|
end
|
145
313
|
|
146
|
-
#
|
147
|
-
#
|
148
|
-
#
|
149
|
-
#
|
314
|
+
# Pull stats for an Album for a given Month and Year
|
315
|
+
#
|
316
|
+
# @param [optional, Hash] options wow it's a hash
|
317
|
+
# @option options [optional, Fixnum] :month (Date.today.month) month field
|
318
|
+
# @option options [optional, Fixnum] :year (Date.today.year) the year and stuff
|
319
|
+
# @option options [optional, 1 or 0] :heavy more details
|
150
320
|
def stats( options =nil )
|
151
321
|
params = default_params.merge(
|
152
322
|
:method => 'smugmug.albums.getStats',
|
@@ -154,10 +324,11 @@ class Smile::Album < Smile::Base
|
|
154
324
|
:month => Date.today.month,
|
155
325
|
:year => Date.today.year
|
156
326
|
)
|
327
|
+
options = Smile::ParamConverter.clean_hash_keys( options )
|
157
328
|
|
158
329
|
params.merge!( options ) if( options )
|
159
330
|
|
160
|
-
json = RestClient.post Smile::Base::BASE, params
|
331
|
+
json = RestClient.post( Smile::Base::BASE, params ).body
|
161
332
|
|
162
333
|
json = JSON.parse( json )
|
163
334
|
raise json["message"] if json["stat"] == 'fail'
|
@@ -177,7 +348,8 @@ class Smile::Album < Smile::Base
|
|
177
348
|
# @option options [optional, Decimal] :altitude Sets the Altitude of the image (in meters)
|
178
349
|
def add( image, options={} )
|
179
350
|
if( File.exists?( image ) )
|
180
|
-
|
351
|
+
options = Smile::ParamConverter.clean_hash_keys( options )
|
352
|
+
json = RestClient.put( UPLOAD + "/#{image}", File.read( image ),
|
181
353
|
:content_length => File.size( image ),
|
182
354
|
:content_md5 => MD5.hexdigest( File.read( image ) ),
|
183
355
|
:x_smug_sessionid => session_id,
|
@@ -189,7 +361,7 @@ class Smile::Album < Smile::Base
|
|
189
361
|
:x_smug_keywords => options[:keywords],
|
190
362
|
:x_smug_latitude => options[:latitude],
|
191
363
|
:x_smug_longitude => options[:longitude],
|
192
|
-
:x_smug_altitude => options[:altitude]
|
364
|
+
:x_smug_altitude => options[:altitude] ).body
|
193
365
|
|
194
366
|
image = JSON.parse( json )
|
195
367
|
if( image && image["Image"] && image["Image"]["id"] )
|
@@ -202,7 +374,48 @@ class Smile::Album < Smile::Base
|
|
202
374
|
end
|
203
375
|
end
|
204
376
|
|
377
|
+
# Want to get rid of that album? Call this guy and see what gets removed!
|
378
|
+
def delete!
|
379
|
+
params = default_params.merge(
|
380
|
+
:method => 'smugmug.albums.delete',
|
381
|
+
:AlbumID => album_id
|
382
|
+
)
|
383
|
+
|
384
|
+
options = Smile::ParamConverter.clean_hash_keys( options )
|
385
|
+
|
386
|
+
params.merge!( options ) if( options )
|
387
|
+
|
388
|
+
json = RestClient.post( Smile::Base::BASE, params ).body
|
389
|
+
|
390
|
+
json = JSON.parse( json )
|
391
|
+
raise json["message"] if json["stat"] == 'fail'
|
392
|
+
|
393
|
+
album_id = nil
|
394
|
+
album_key = nil
|
395
|
+
nil
|
396
|
+
end
|
397
|
+
|
398
|
+
# This method will re-sort all the photos inside of the album specified by AlbumID.
|
399
|
+
#
|
400
|
+
# @option options [String] :by valid values: FileName, Caption, DateTime
|
401
|
+
# @option options [String] :direction valid values: ASC, DESC
|
402
|
+
def resort!( options =nil )
|
403
|
+
params = default_params.merge(
|
404
|
+
:method => 'smugmug.albums.reSort',
|
405
|
+
:AlbumID => album_id
|
406
|
+
)
|
407
|
+
|
408
|
+
json = RestClient.post( Smile::Base::BASE, params ).body
|
409
|
+
|
410
|
+
json = JSON.parse( json )
|
411
|
+
raise json["message"] if json["stat"] == 'fail'
|
412
|
+
|
413
|
+
album_id = nil
|
414
|
+
album_key = nil
|
415
|
+
nil
|
416
|
+
end
|
417
|
+
|
205
418
|
def category
|
206
419
|
['category']
|
207
420
|
end
|
208
|
-
end
|
421
|
+
end
|
@@ -3,48 +3,102 @@ module Smile::ParamConverter
|
|
3
3
|
|
4
4
|
def convert( param, value=nil )
|
5
5
|
key = nil
|
6
|
-
case param.to_s.downcase.to_sym
|
6
|
+
key = case param.to_s.downcase.to_sym
|
7
7
|
when :popular_category
|
8
|
-
|
8
|
+
:popularCategory
|
9
9
|
when :geo_all
|
10
|
-
|
10
|
+
:geoAll
|
11
11
|
when :geo_keyword
|
12
|
-
|
12
|
+
:geoKeyword
|
13
13
|
when :geo_search
|
14
|
-
|
14
|
+
:geoSearch
|
15
15
|
when :geo_community
|
16
|
-
|
16
|
+
:geoCommunity
|
17
17
|
when :open_search_keyword
|
18
|
-
|
18
|
+
:openSearchKeyword
|
19
19
|
when :user_keyword
|
20
|
-
|
20
|
+
:userkeyword
|
21
21
|
when :nickname_recent
|
22
|
-
|
22
|
+
:nicknameRecent
|
23
23
|
when :nickname_popular
|
24
|
-
|
24
|
+
:nicknamePopular
|
25
25
|
when :user_comments
|
26
|
-
|
26
|
+
:userComments
|
27
27
|
when :geo_user
|
28
|
-
|
28
|
+
:geoUser
|
29
29
|
when :geo_album
|
30
|
-
|
30
|
+
:geoAlbum
|
31
31
|
when :size
|
32
|
-
key = :Size
|
33
32
|
value = value.titlecase
|
33
|
+
:Size
|
34
34
|
when :image_count
|
35
|
-
|
36
|
-
when :data
|
37
|
-
|
38
|
-
|
39
|
-
|
35
|
+
:ImageCount
|
36
|
+
when :data, :type, :description, :keywords, :geography, :position, :header,
|
37
|
+
:clean, :filenames, :password, :public, :external, :protected, :watermarking,
|
38
|
+
:larges, :originals, :comments, :share, :printable, :backprinting
|
39
|
+
param.to_s.upcase.to_sym
|
40
40
|
when :image_id
|
41
|
-
|
41
|
+
:ImageID
|
42
42
|
when :image_key
|
43
|
-
|
43
|
+
:ImageKey
|
44
44
|
when :image_count
|
45
|
-
|
45
|
+
:ImageCount
|
46
46
|
when :nickname, :nick_name
|
47
|
-
|
47
|
+
:NickName
|
48
|
+
when :category_id
|
49
|
+
:CategoryID
|
50
|
+
when :sub_categroy_id
|
51
|
+
:SubCategoryID
|
52
|
+
when :album_template_id
|
53
|
+
:AlbumTemplateID
|
54
|
+
when :highlight_id
|
55
|
+
:HighlightID
|
56
|
+
when :exif
|
57
|
+
:EXIF
|
58
|
+
when :square_thumbs
|
59
|
+
:Square_Thumbs
|
60
|
+
when :tempate_id
|
61
|
+
:TemplateID
|
62
|
+
when :sort_method
|
63
|
+
:SortMethod
|
64
|
+
when :sort_direction
|
65
|
+
:SortDirection
|
66
|
+
when :password_hint
|
67
|
+
:PasswordHint
|
68
|
+
when :word_searchable
|
69
|
+
:WordSearchable
|
70
|
+
when :smug_searchable
|
71
|
+
:SmugSearchable
|
72
|
+
when :watermark_id
|
73
|
+
:WatermarkID
|
74
|
+
when :hide_owner
|
75
|
+
:HideOwner
|
76
|
+
when :x_larges, :xlarges
|
77
|
+
:XLarges
|
78
|
+
when :x2_larges, :x2larges
|
79
|
+
:X2Larges
|
80
|
+
when :x3_larges, :x3larges
|
81
|
+
:X3Larges
|
82
|
+
when :can_rank
|
83
|
+
:CanRank
|
84
|
+
when :friend_edit
|
85
|
+
:FriendEdit
|
86
|
+
when :family_edit
|
87
|
+
:FamilyEdit
|
88
|
+
when :color_correction
|
89
|
+
:ColorCorrection
|
90
|
+
when :default_color
|
91
|
+
:DefaultColor
|
92
|
+
when :proof_days
|
93
|
+
:ProofDays
|
94
|
+
when :unsharp_amount
|
95
|
+
:UnsharpAmount
|
96
|
+
when :unsharp_radius
|
97
|
+
:UnsharpRadius
|
98
|
+
when :unsharp_sigma
|
99
|
+
:UnsharpSigma
|
100
|
+
when :community_id
|
101
|
+
:CommunityID
|
48
102
|
else
|
49
103
|
key = param
|
50
104
|
end
|
@@ -56,8 +110,8 @@ module Smile::ParamConverter
|
|
56
110
|
cleaned_hash ={}
|
57
111
|
hash_to_clean.each_pair do |key,value|
|
58
112
|
cleaned_hash[convert( key ).first] = value
|
59
|
-
end
|
113
|
+
end if( hash_to_clean )
|
60
114
|
cleaned_hash
|
61
115
|
end
|
62
116
|
|
63
|
-
end
|
117
|
+
end
|
data/lib/smile/photo.rb
CHANGED
@@ -3,8 +3,6 @@
|
|
3
3
|
# smile
|
4
4
|
#
|
5
5
|
# Created by Zac Kleinpeter on 2009-04-28.
|
6
|
-
# Copyright 2009 Cajun Country. All rights reserved.
|
7
|
-
#
|
8
6
|
class Smile::Photo < Smile::Base
|
9
7
|
|
10
8
|
class << self
|
@@ -41,7 +39,7 @@ class Smile::Photo < Smile::Base
|
|
41
39
|
)
|
42
40
|
|
43
41
|
params.merge!( options ) if( options )
|
44
|
-
json = RestClient.post Smile::Base::BASE, params
|
42
|
+
json = RestClient.post( Smile::Base::BASE, params ).body
|
45
43
|
image_upper = JSON.parse( json )
|
46
44
|
image = upper_hash_to_lower_hash( image_upper['Image'] )
|
47
45
|
|
@@ -64,40 +62,40 @@ class Smile::Photo < Smile::Base
|
|
64
62
|
#
|
65
63
|
# Arguments:*
|
66
64
|
#
|
67
|
-
# String Password optional
|
68
|
-
# String SitePassword optional
|
69
|
-
#
|
70
65
|
# Result:* struct "Image" [some, none, or all may be returned]
|
71
|
-
#
|
72
|
-
#
|
73
|
-
#
|
74
|
-
#
|
75
|
-
#
|
76
|
-
#
|
77
|
-
#
|
78
|
-
#
|
79
|
-
#
|
80
|
-
#
|
81
|
-
#
|
82
|
-
#
|
83
|
-
#
|
84
|
-
#
|
85
|
-
#
|
86
|
-
#
|
87
|
-
#
|
88
|
-
#
|
89
|
-
#
|
90
|
-
#
|
91
|
-
#
|
92
|
-
#
|
93
|
-
#
|
94
|
-
#
|
95
|
-
#
|
96
|
-
#
|
97
|
-
#
|
98
|
-
#
|
99
|
-
#
|
100
|
-
#
|
66
|
+
# int "id"
|
67
|
+
# String "DateTime"
|
68
|
+
# String "DateTimeOriginal"
|
69
|
+
# String "DateTimeDigitized"
|
70
|
+
# String "Make"
|
71
|
+
# String "Model"
|
72
|
+
# String "ExposureTime"
|
73
|
+
# String "Aperture"
|
74
|
+
# int "ISO"
|
75
|
+
# String "FocalLength"
|
76
|
+
# int "FocalLengthIn35mmFilm"
|
77
|
+
# String "CCDWidth"
|
78
|
+
# String "CompressedBitsPerPixel"
|
79
|
+
# int "Flash"
|
80
|
+
# int "Metering"
|
81
|
+
# int "ExposureProgram"
|
82
|
+
# String "ExposureBiasValue"
|
83
|
+
# int "ExposureMode"
|
84
|
+
# int "LightSource"
|
85
|
+
# int "WhiteBalance"
|
86
|
+
# String "DigitalZoomRatio"
|
87
|
+
# int "Contrast"
|
88
|
+
# int "Saturation"
|
89
|
+
# int "Sharpness"
|
90
|
+
# String "SubjectDistance"
|
91
|
+
# int "SubjectDistanceRange"
|
92
|
+
# int "SensingMethod"
|
93
|
+
# String "ColorSpace"
|
94
|
+
# String "Brightness"
|
95
|
+
#
|
96
|
+
# @param [options,Hash] options ruby and hashes are like.......
|
97
|
+
# @option options [String] :password a password field
|
98
|
+
# @option options [String] :site_password site password field
|
101
99
|
def details( options =nil )
|
102
100
|
params = default_params.merge(
|
103
101
|
:method => "smugmug.images.getEXIF",
|
@@ -106,7 +104,7 @@ class Smile::Photo < Smile::Base
|
|
106
104
|
)
|
107
105
|
|
108
106
|
params.merge!( options ) if( options )
|
109
|
-
json = RestClient.post Smile::Base::BASE, params
|
107
|
+
json = RestClient.post( Smile::Base::BASE, params ).body
|
110
108
|
|
111
109
|
json = JSON.parse( json )
|
112
110
|
raise json["message"] if json["stat"] == 'fail'
|
@@ -165,7 +163,7 @@ class Smile::Photo < Smile::Base
|
|
165
163
|
)
|
166
164
|
|
167
165
|
params.merge!( options ) if( options )
|
168
|
-
json = RestClient.post Smile::Base::BASE, params
|
166
|
+
json = RestClient.post( Smile::Base::BASE, params ).body
|
169
167
|
|
170
168
|
json = JSON.parse( json )
|
171
169
|
raise json["message"] if json["stat"] == 'fail'
|
@@ -216,7 +214,7 @@ class Smile::Photo < Smile::Base
|
|
216
214
|
)
|
217
215
|
|
218
216
|
params.merge!( options ) if( options )
|
219
|
-
json = RestClient.post Smile::Base::BASE, params
|
217
|
+
json = RestClient.post( Smile::Base::BASE, params ).body
|
220
218
|
|
221
219
|
json = JSON.parse( json )
|
222
220
|
raise json["message"] if json["stat"] == 'fail'
|
@@ -230,4 +228,4 @@ class Smile::Photo < Smile::Base
|
|
230
228
|
def album
|
231
229
|
Smile::Album.find( :AlbumID => album_id, :AlbumKey => album_key )
|
232
230
|
end
|
233
|
-
end
|
231
|
+
end
|
data/lib/smile/smug.rb
CHANGED
@@ -21,7 +21,7 @@ module Smile
|
|
21
21
|
:Password => pass
|
22
22
|
)
|
23
23
|
|
24
|
-
json = RestClient.post( BASE, params )
|
24
|
+
json = RestClient.post( BASE, params ).body
|
25
25
|
result = JSON.parse( json )
|
26
26
|
|
27
27
|
self.session_id = result["Login"]["Session"]["id"]
|
@@ -39,7 +39,7 @@ module Smile
|
|
39
39
|
:method => 'smugmug.login.anonymously'
|
40
40
|
)
|
41
41
|
|
42
|
-
json = RestClient.post( BASE, params )
|
42
|
+
json = RestClient.post( BASE, params ).body
|
43
43
|
result = JSON.parse( json )
|
44
44
|
self.session_id = result["Login"]["Session"]["id"]
|
45
45
|
result
|
@@ -53,7 +53,7 @@ module Smile
|
|
53
53
|
:method => 'smugmug.logout'
|
54
54
|
)
|
55
55
|
|
56
|
-
RestClient.post( BASE, params )
|
56
|
+
RestClient.post( BASE, params ).body
|
57
57
|
end
|
58
58
|
|
59
59
|
|
@@ -77,12 +77,13 @@ module Smile
|
|
77
77
|
:heavy => 1
|
78
78
|
)
|
79
79
|
|
80
|
+
options = Smile::ParamConverter.clean_hash_keys( options )
|
80
81
|
params = params.merge( options ) if( options )
|
81
|
-
json = RestClient.post BASE, params
|
82
|
-
|
82
|
+
json = RestClient.post( BASE, params ).body
|
83
|
+
|
83
84
|
Smile::Album.from_json( json, session_id )
|
84
85
|
rescue
|
85
86
|
nil
|
86
87
|
end
|
87
88
|
end
|
88
|
-
end
|
89
|
+
end
|
data/lib/smile.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require '
|
1
|
+
require 'active_support'
|
2
2
|
require 'restclient'
|
3
3
|
require 'ostruct'
|
4
4
|
require 'lib/smile/base'
|
@@ -46,7 +46,7 @@ module Smile
|
|
46
46
|
url_params << "#{key.to_s}=#{ CGI.escape( value ) }"
|
47
47
|
end
|
48
48
|
|
49
|
-
RestClient.get( url + url_params.join( "&" ) )
|
49
|
+
RestClient.get( url + url_params.join( "&" ) ).body
|
50
50
|
end
|
51
51
|
private( :base_feed )
|
52
52
|
|
data/smile.gemspec
CHANGED
@@ -1,23 +1,29 @@
|
|
1
|
+
# Generated by jeweler
|
2
|
+
# DO NOT EDIT THIS FILE
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run `rake gemspec`
|
1
4
|
# -*- encoding: utf-8 -*-
|
2
5
|
|
3
6
|
Gem::Specification.new do |s|
|
4
7
|
s.name = %q{smile}
|
5
|
-
s.version = "0.3.
|
8
|
+
s.version = "0.3.1"
|
6
9
|
|
7
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
8
11
|
s.authors = ["cajun"]
|
9
|
-
s.date = %q{
|
12
|
+
s.date = %q{2010-04-17}
|
13
|
+
s.default_executable = %q{smile}
|
10
14
|
s.email = %q{zac@kleinpeter.org}
|
15
|
+
s.executables = ["smile"]
|
11
16
|
s.extra_rdoc_files = [
|
12
17
|
"LICENSE",
|
13
18
|
"README.rdoc"
|
14
19
|
]
|
15
20
|
s.files = [
|
16
|
-
".
|
21
|
+
".gitignore",
|
17
22
|
"LICENSE",
|
18
23
|
"README.rdoc",
|
19
24
|
"Rakefile",
|
20
25
|
"VERSION.yml",
|
26
|
+
"config/metric_fu_config.rb",
|
21
27
|
"lib/smile.rb",
|
22
28
|
"lib/smile/album.rb",
|
23
29
|
"lib/smile/base.rb",
|
@@ -32,7 +38,7 @@ Gem::Specification.new do |s|
|
|
32
38
|
s.rdoc_options = ["--charset=UTF-8"]
|
33
39
|
s.require_paths = ["lib"]
|
34
40
|
s.rubyforge_project = %q{cajun-gems}
|
35
|
-
s.rubygems_version = %q{1.3.
|
41
|
+
s.rubygems_version = %q{1.3.6}
|
36
42
|
s.summary = %q{Simple API for talking to SmugMug}
|
37
43
|
s.test_files = [
|
38
44
|
"test/smile_test.rb",
|
data/test/smile_test.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require 'test_helper'
|
1
|
+
require File.dirname(__FILE__) + '/test_helper'
|
2
2
|
|
3
3
|
class SmileTest < Test::Unit::TestCase
|
4
4
|
def setup
|
@@ -12,20 +12,20 @@ class SmileTest < Test::Unit::TestCase
|
|
12
12
|
|
13
13
|
def test_have_albums
|
14
14
|
assert_nothing_raised(Exception) do
|
15
|
-
assert_not_nil( @smug.albums( :
|
15
|
+
assert_not_nil( @smug.albums( :nick_name => 'kleinpeter' ) )
|
16
16
|
end
|
17
17
|
end
|
18
18
|
|
19
19
|
def test_have_photos
|
20
20
|
assert_nothing_raised(Exception) do
|
21
|
-
album = @smug.albums( :
|
21
|
+
album = @smug.albums( :nick_name => 'kleinpeter' ).first
|
22
22
|
assert_not_nil( album.photos )
|
23
23
|
end
|
24
24
|
end
|
25
25
|
|
26
26
|
def test_photo_has_album
|
27
27
|
assert_nothing_raised(Exception) do
|
28
|
-
album = @smug.albums( :
|
28
|
+
album = @smug.albums( :nick_name => 'kleinpeter' ).first
|
29
29
|
photo = album.photos.first
|
30
30
|
assert_equal( album.album_id, photo.album.album_id )
|
31
31
|
assert_equal( album.key, photo.album.key )
|
@@ -34,7 +34,7 @@ class SmileTest < Test::Unit::TestCase
|
|
34
34
|
|
35
35
|
def test_photo_has_album_has_photo
|
36
36
|
assert_nothing_raised(Exception) do
|
37
|
-
album = @smug.albums( :
|
37
|
+
album = @smug.albums( :nick_name => 'kleinpeter' ).first
|
38
38
|
photo = album.photos.first
|
39
39
|
alt_photo = photo.album.photos.first
|
40
40
|
|
@@ -45,14 +45,14 @@ class SmileTest < Test::Unit::TestCase
|
|
45
45
|
# NOTE have to be logged in to test this one
|
46
46
|
# def test_album_stats
|
47
47
|
# assert_nothing_raised(Exception) do
|
48
|
-
# album = @smug.albums( :
|
48
|
+
# album = @smug.albums( :nick_name => 'kleinpeter' ).first
|
49
49
|
# assert_not_nil( album.stats )
|
50
50
|
# end
|
51
51
|
# end
|
52
52
|
|
53
53
|
def test_photo_extras
|
54
54
|
assert_nothing_raised(Exception) do
|
55
|
-
album = @smug.albums( :
|
55
|
+
album = @smug.albums( :nick_name => 'kleinpeter' ).first
|
56
56
|
photo = album.photos.first
|
57
57
|
|
58
58
|
assert_not_nil( photo.details )
|
metadata
CHANGED
@@ -1,7 +1,12 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: smile
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 0
|
7
|
+
- 3
|
8
|
+
- 1
|
9
|
+
version: 0.3.1
|
5
10
|
platform: ruby
|
6
11
|
authors:
|
7
12
|
- cajun
|
@@ -9,44 +14,49 @@ autorequire:
|
|
9
14
|
bindir: bin
|
10
15
|
cert_chain: []
|
11
16
|
|
12
|
-
date:
|
13
|
-
default_executable:
|
17
|
+
date: 2010-04-17 00:00:00 -05:00
|
18
|
+
default_executable: smile
|
14
19
|
dependencies:
|
15
20
|
- !ruby/object:Gem::Dependency
|
16
21
|
name: rest-client
|
17
|
-
|
18
|
-
|
19
|
-
version_requirements: !ruby/object:Gem::Requirement
|
22
|
+
prerelease: false
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
20
24
|
requirements:
|
21
25
|
- - ">="
|
22
26
|
- !ruby/object:Gem::Version
|
27
|
+
segments:
|
28
|
+
- 0
|
23
29
|
version: "0"
|
24
|
-
|
30
|
+
type: :runtime
|
31
|
+
version_requirements: *id001
|
25
32
|
- !ruby/object:Gem::Dependency
|
26
33
|
name: activesupport
|
27
|
-
|
28
|
-
|
29
|
-
version_requirements: !ruby/object:Gem::Requirement
|
34
|
+
prerelease: false
|
35
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
30
36
|
requirements:
|
31
37
|
- - ">="
|
32
38
|
- !ruby/object:Gem::Version
|
39
|
+
segments:
|
40
|
+
- 0
|
33
41
|
version: "0"
|
34
|
-
|
42
|
+
type: :runtime
|
43
|
+
version_requirements: *id002
|
35
44
|
description:
|
36
45
|
email: zac@kleinpeter.org
|
37
|
-
executables:
|
38
|
-
|
46
|
+
executables:
|
47
|
+
- smile
|
39
48
|
extensions: []
|
40
49
|
|
41
50
|
extra_rdoc_files:
|
42
51
|
- LICENSE
|
43
52
|
- README.rdoc
|
44
53
|
files:
|
45
|
-
- .
|
54
|
+
- .gitignore
|
46
55
|
- LICENSE
|
47
56
|
- README.rdoc
|
48
57
|
- Rakefile
|
49
58
|
- VERSION.yml
|
59
|
+
- config/metric_fu_config.rb
|
50
60
|
- lib/smile.rb
|
51
61
|
- lib/smile/album.rb
|
52
62
|
- lib/smile/base.rb
|
@@ -69,18 +79,20 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
69
79
|
requirements:
|
70
80
|
- - ">="
|
71
81
|
- !ruby/object:Gem::Version
|
82
|
+
segments:
|
83
|
+
- 0
|
72
84
|
version: "0"
|
73
|
-
version:
|
74
85
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
75
86
|
requirements:
|
76
87
|
- - ">="
|
77
88
|
- !ruby/object:Gem::Version
|
89
|
+
segments:
|
90
|
+
- 0
|
78
91
|
version: "0"
|
79
|
-
version:
|
80
92
|
requirements: []
|
81
93
|
|
82
94
|
rubyforge_project: cajun-gems
|
83
|
-
rubygems_version: 1.3.
|
95
|
+
rubygems_version: 1.3.6
|
84
96
|
signing_key:
|
85
97
|
specification_version: 3
|
86
98
|
summary: Simple API for talking to SmugMug
|
data/.yardoc
DELETED
Binary file
|