latompa-fleakr 0.5.5 → 0.5.7

Sign up to get free protection for your applications and to get access to all the features.
@@ -22,11 +22,15 @@ module Fleakr
22
22
  # => #<Fleakr::Api::ValueParameter:0x1656da4 @include_in_signature=true, @name="foo", @value="bar">
23
23
  #
24
24
  def initialize(options = {})
25
+ # TODO: need to find a way to move the unexpected behavior in Fleakr.token elsewhere
26
+ @api_options = options.extract!(:authenticate?)
27
+
25
28
  @list = Hash.new
26
29
 
27
30
  options.each {|k,v| self << ValueParameter.new(k.to_s, v) }
28
31
 
29
32
  self << ValueParameter.new('api_key', Fleakr.api_key)
33
+ self << ValueParameter.new('auth_token', Fleakr.token.value) if authenticate?
30
34
  end
31
35
 
32
36
  # Add a new parameter (ValueParameter / FileParameter) to the list
@@ -41,6 +45,14 @@ module Fleakr
41
45
  !Fleakr.shared_secret.blank?
42
46
  end
43
47
 
48
+ # Should we send the auth_token with the request?
49
+ #
50
+ def authenticate?
51
+ @api_options.has_key?(:authenticate?) ? @api_options[:authenticate?] : !Fleakr.token.blank?
52
+ end
53
+
54
+ # Access an individual parameter by key (symbol or string)
55
+ #
44
56
  def [](key)
45
57
  list[key.to_s]
46
58
  end
@@ -40,7 +40,7 @@ module Fleakr
40
40
  def_delegators :context, :next, :previous
41
41
 
42
42
  flickr_attribute :id, :from => ['@id', 'photoid']
43
- flickr_attribute :title, :description, :secret, :posted, :taken, :url
43
+ flickr_attribute :title, :description, :secret, :posted, :taken, :url, :dateupload
44
44
  flickr_attribute :farm_id, :from => '@farm'
45
45
  flickr_attribute :server_id, :from => '@server'
46
46
  flickr_attribute :owner_id, :from => ['@owner', 'owner@nsid']
@@ -3,11 +3,11 @@ module Fleakr
3
3
 
4
4
  MAJOR = 0
5
5
  MINOR = 5
6
- TINY = 5
6
+ TINY = 7
7
7
 
8
8
  def self.to_s
9
9
  [MAJOR, MINOR, TINY].join('.')
10
10
  end
11
11
 
12
12
  end
13
- end
13
+ end
data/lib/fleakr.rb CHANGED
@@ -85,7 +85,7 @@ module Fleakr
85
85
  # Generic catch-all exception for any API errors
86
86
  class ApiError < StandardError; end
87
87
 
88
- mattr_accessor :api_key, :shared_secret
88
+ mattr_accessor :api_key, :shared_secret, :mini_token, :auth_token, :frob
89
89
 
90
90
  # Find a user based on some unique user data. This method will try to find
91
91
  # the user based on username and will fall back to email if that fails. Example:
@@ -138,34 +138,38 @@ module Fleakr
138
138
  Fleakr::Objects::Contact.find_all_contacts(params)
139
139
  end
140
140
 
141
- # # Get the authentication token needed for authenticated requests. Will either use
142
- # # a valid auth_token (if available) or a mini-token to generate the auth_token.
143
- # #
144
- # def self.token
145
- # @token ||= begin
146
- # if Fleakr.auth_token
147
- # Fleakr::Objects::AuthenticationToken.from_auth_token(Fleakr.auth_token)
148
- # elsif Fleakr.frob
149
- # Fleakr::Objects::AuthenticationToken.from_frob(Fleakr.frob)
150
- # elsif Fleakr.mini_token
151
- # Fleakr::Objects::AuthenticationToken.from_mini_token(Fleakr.mini_token)
152
- # end
153
- # end
154
- # end
155
- #
156
- # # Reset the cached token whenever setting a new value for the mini_token, auth_token, or frob
157
- # #
158
- # [:mini_token, :auth_token, :frob].each do |attribute|
159
- # class_eval <<-ACCESSOR
160
- # def self.#{attribute}=(#{attribute})
161
- # reset_token
162
- # @@#{attribute} = #{attribute}
163
- # end
164
- # ACCESSOR
165
- # end
166
- #
167
- # def self.reset_token # :nodoc: #
168
- # @token = nil
169
- # end
141
+ # Get the authentication token needed for authenticated requests. Will either use
142
+ # a valid auth_token (if available) or a mini-token to generate the auth_token.
143
+ #
144
+ def self.token
145
+ Thread.current[:token] ||= begin
146
+ if Fleakr.auth_token
147
+ Fleakr::Objects::AuthenticationToken.from_auth_token(Fleakr.auth_token)
148
+ elsif Fleakr.frob
149
+ Fleakr::Objects::AuthenticationToken.from_frob(Fleakr.frob)
150
+ elsif Fleakr.mini_token
151
+ Fleakr::Objects::AuthenticationToken.from_mini_token(Fleakr.mini_token)
152
+ end
153
+ end
154
+ end
155
+
156
+ # Reset the cached token whenever setting a new value for the mini_token, auth_token, or frob
157
+ #
158
+ [:mini_token, :auth_token, :frob].each do |attribute|
159
+ class_eval <<-ACCESSOR
160
+ def self.#{attribute}=(#{attribute})
161
+ Fleakr.reset_token
162
+ Thread.current[:#{attribute}] = #{attribute}
163
+ end
164
+
165
+ def self.#{attribute}
166
+ Thread.current[:#{attribute}]
167
+ end
168
+ ACCESSOR
169
+ end
170
+
171
+ def self.reset_token # :nodoc: #
172
+ Thread.current[:token] = nil
173
+ end
170
174
 
171
175
  end
@@ -1,7 +1,7 @@
1
1
  <?xml version="1.0" encoding="utf-8" ?>
2
2
  <rsp stat="ok">
3
3
  <photos page="1" pages="1" perpage="100" total="76">
4
- <photo id="2924549350" owner="21775151@N06" secret="cbc1804258" server="3250" farm="4" title="Photo #1" ispublic="1" isfriend="0" isfamily="0" />
5
- <photo id="2923697303" owner="21775151@N06" secret="649aa95f29" server="3208" farm="4" title="Photo #2" ispublic="1" isfriend="0" isfamily="0" />
4
+ <photo id="2924549350" owner="21775151@N06" secret="cbc1804258" server="3250" farm="4" title="Photo #1" ispublic="1" isfriend="0" isfamily="0" dateupload="555"/>
5
+ <photo id="2923697303" owner="21775151@N06" secret="649aa95f29" server="3208" farm="4" title="Photo #2" ispublic="1" isfriend="0" isfamily="0" dateupload="555"/>
6
6
  </photos>
7
7
  </rsp>
@@ -86,42 +86,42 @@ module Fleakr::Api
86
86
  @parameter_list.sign?.should be(true)
87
87
  end
88
88
 
89
- # should "know that it doesn't need to authenticate the request by default" do
90
- # @parameter_list.authenticate?.should be(false)
91
- # end
92
-
93
- # should "know to authenticate the request when a token is available" do
94
- # Fleakr.stubs(:token).with().returns(stub(:value => 'toke'))
95
- # parameter_list = ParameterList.new
96
- #
97
- # parameter_list.authenticate?.should be(true)
98
- # end
99
-
100
- # should "not authenticate the request if it's been specifically told not to" do
101
- # Fleakr.expects(:token).with().never
102
- #
103
- # parameter_list = ParameterList.new(:authenticate? => false)
104
- # parameter_list.authenticate?.should be(false)
105
- # end
106
- #
107
-
108
- # should "know to authenticate the request when asked" do
109
- # Fleakr.expects(:token).with().returns(stub(:value => 'toke'))
110
- #
111
- # parameter_list = ParameterList.new(:authenticate? => true)
112
- # parameter_list.authenticate?.should be(true)
113
- # end
114
-
115
- # should "contain the :auth_token parameter in the list if the request is to be authenticated" do
116
- # Fleakr.expects(:token).with().returns(stub(:value => 'toke'))
117
- #
118
- # parameter_list = ParameterList.new(:authenticate? => true)
119
- # auth_param = parameter_list[:auth_token]
120
- #
121
- # auth_param.name.should == 'auth_token'
122
- # auth_param.value.should == 'toke'
123
- # auth_param.include_in_signature?.should be(true)
124
- # end
89
+ should "know that it doesn't need to authenticate the request by default" do
90
+ @parameter_list.authenticate?.should be(false)
91
+ end
92
+
93
+ should "know to authenticate the request when a token is available" do
94
+ Fleakr.stubs(:token).with().returns(stub(:value => 'toke'))
95
+ parameter_list = ParameterList.new
96
+
97
+ parameter_list.authenticate?.should be(true)
98
+ end
99
+
100
+ should "not authenticate the request if it's been specifically told not to" do
101
+ Fleakr.expects(:token).with().never
102
+
103
+ parameter_list = ParameterList.new(:authenticate? => false)
104
+ parameter_list.authenticate?.should be(false)
105
+ end
106
+
107
+
108
+ should "know to authenticate the request when asked" do
109
+ Fleakr.expects(:token).with().returns(stub(:value => 'toke'))
110
+
111
+ parameter_list = ParameterList.new(:authenticate? => true)
112
+ parameter_list.authenticate?.should be(true)
113
+ end
114
+
115
+ should "contain the :auth_token parameter in the list if the request is to be authenticated" do
116
+ Fleakr.expects(:token).with().returns(stub(:value => 'toke'))
117
+
118
+ parameter_list = ParameterList.new(:authenticate? => true)
119
+ auth_param = parameter_list[:auth_token]
120
+
121
+ auth_param.name.should == 'auth_token'
122
+ auth_param.value.should == 'toke'
123
+ auth_param.include_in_signature?.should be(true)
124
+ end
125
125
 
126
126
  should "include the signature in the list of parameters if the request is to be signed" do
127
127
  parameter_list = ParameterList.new
@@ -67,12 +67,13 @@ module Fleakr::Objects
67
67
  @object = Photo.new(Hpricot.XML(read_fixture('people.getPublicPhotos')).at('rsp/photos/photo'))
68
68
  end
69
69
 
70
- should_have_a_value_for :id => '2924549350'
71
- should_have_a_value_for :title => 'Photo #1'
72
- should_have_a_value_for :farm_id => '4'
73
- should_have_a_value_for :server_id => '3250'
74
- should_have_a_value_for :secret => 'cbc1804258'
75
- should_have_a_value_for :owner_id => '21775151@N06'
70
+ should_have_a_value_for :id => '2924549350'
71
+ should_have_a_value_for :title => 'Photo #1'
72
+ should_have_a_value_for :farm_id => '4'
73
+ should_have_a_value_for :server_id => '3250'
74
+ should_have_a_value_for :secret => 'cbc1804258'
75
+ should_have_a_value_for :owner_id => '21775151@N06'
76
+ should_have_a_value_for :dateupload => '555'
76
77
 
77
78
  end
78
79
 
@@ -4,7 +4,7 @@ class FleakrTest < Test::Unit::TestCase
4
4
 
5
5
  context "The Fleakr module" do
6
6
 
7
- [:api_key, :shared_secret].each do |attribute|
7
+ [:api_key, :shared_secret, :mini_token, :auth_token].each do |attribute|
8
8
  should "be able to set a value for :#{attribute}" do
9
9
  value = 'value'
10
10
 
@@ -74,98 +74,90 @@ class FleakrTest < Test::Unit::TestCase
74
74
  Fleakr.upload(filename, :title => 'bop bip').should == [new_image]
75
75
  end
76
76
 
77
- # should "be able to reset the cached token" do
78
- # @token = stub()
79
- # Fleakr.expects(:auth_token).with().at_least_once.returns('abc123')
80
- # Fleakr::Objects::AuthenticationToken.expects(:from_auth_token).with('abc123').times(2).returns(@token)
81
- # Fleakr.token # once
82
- # Fleakr.reset_token
83
- # Fleakr.token # twice
84
- # end
85
- #
86
- # should "not have a token by default" do
87
- # Fleakr.expects(:mini_token).with().returns(nil)
88
- # Fleakr.expects(:auth_token).with().returns(nil)
89
- # Fleakr.expects(:frob).with().returns(nil)
90
- #
91
- # Fleakr.token.should be(nil)
92
- # end
93
- #
94
- # [:mini_token, :auth_token, :frob].each do |attribute|
95
- # should "reset_token when :#{attribute} is set" do
96
- # Fleakr.expects(:reset_token).with().at_least_once
97
- # Fleakr.send("#{attribute}=".to_sym, 'value')
98
- # end
99
- # end
77
+ should "be able to reset the cached token" do
78
+ @token = stub()
79
+ Fleakr.expects(:auth_token).with().at_least_once.returns('abc123')
80
+ Fleakr::Objects::AuthenticationToken.expects(:from_auth_token).with('abc123').times(2).returns(@token)
81
+ Fleakr.token # once
82
+ Fleakr.reset_token
83
+ Fleakr.token # twice
84
+ end
85
+
86
+ [:mini_token, :auth_token, :frob].each do |attribute|
87
+ should "reset_token when :#{attribute} is set" do
88
+ Fleakr.expects(:reset_token).with().at_least_once
89
+ Fleakr.send("#{attribute}=".to_sym, 'value')
90
+ end
91
+ end
92
+
93
+ context "when generating an AuthenticationToken from an auth_token string" do
94
+
95
+ setup do
96
+ @token = stub()
97
+
98
+ Fleakr.expects(:auth_token).with().at_least_once.returns('abc123')
99
+ Fleakr::Objects::AuthenticationToken.expects(:from_auth_token).with('abc123').returns(@token)
100
+ end
101
+
102
+ # Make sure to clear the cache
103
+ teardown { Fleakr.auth_token = nil }
104
+
105
+ should "return the token" do
106
+ Fleakr.token.should == @token
107
+ end
108
+
109
+ should "cache the result" do
110
+ 2.times { Fleakr.token }
111
+ end
112
+
113
+ end
114
+
115
+ context "when generating an AuthenticationToken from a frob string" do
116
+
117
+ setup do
118
+ @token = stub()
119
+
120
+ Fleakr.expects(:auth_token).with().at_least_once.returns(nil)
121
+ Fleakr.expects(:frob).with().at_least_once.returns('abc123')
122
+ Fleakr::Objects::AuthenticationToken.expects(:from_frob).with('abc123').returns(@token)
123
+ end
124
+
125
+ # Make sure to clear the cache
126
+ teardown { Fleakr.frob = nil }
127
+
128
+ should "return the token" do
129
+ Fleakr.token.should == @token
130
+ end
131
+
132
+ should "cache the result" do
133
+ 2.times { Fleakr.token }
134
+ end
135
+
136
+ end
137
+
138
+ context "when generating an AuthenticationToken from a mini_token string" do
139
+
140
+ setup do
141
+ @token = stub()
142
+
143
+ Fleakr.expects(:auth_token).with().at_least_once.returns(nil)
144
+ Fleakr.expects(:mini_token).with().at_least_once.returns('123-123-123')
145
+ Fleakr::Objects::AuthenticationToken.expects(:from_mini_token).with('123-123-123').returns(@token)
146
+ end
147
+
148
+ # Make sure to clear the cache
149
+ teardown { Fleakr.mini_token = nil }
150
+
151
+ should "return the token" do
152
+ Fleakr.token.should == @token
153
+ end
154
+
155
+ should "cache the result" do
156
+ 2.times { Fleakr.token }
157
+ end
158
+
159
+ end
100
160
 
101
- # context "when generating an AuthenticationToken from an auth_token string" do
102
- #
103
- # setup do
104
- # @token = stub()
105
- #
106
- # Fleakr.expects(:auth_token).with().at_least_once.returns('abc123')
107
- # Fleakr::Objects::AuthenticationToken.expects(:from_auth_token).with('abc123').returns(@token)
108
- # end
109
- #
110
- # # Make sure to clear the cache
111
- # teardown { Fleakr.auth_token = nil }
112
- #
113
- # should "return the token" do
114
- # Fleakr.token.should == @token
115
- # end
116
- #
117
- # should "cache the result" do
118
- # 2.times { Fleakr.token }
119
- # end
120
- #
121
- # end
122
- #
123
- # context "when generating an AuthenticationToken from a frob string" do
124
- #
125
- # setup do
126
- # @token = stub()
127
- #
128
- # Fleakr.expects(:auth_token).with().at_least_once.returns(nil)
129
- # Fleakr.expects(:frob).with().at_least_once.returns('abc123')
130
- # Fleakr::Objects::AuthenticationToken.expects(:from_frob).with('abc123').returns(@token)
131
- # end
132
- #
133
- # # Make sure to clear the cache
134
- # teardown { Fleakr.frob = nil }
135
- #
136
- # should "return the token" do
137
- # Fleakr.token.should == @token
138
- # end
139
- #
140
- # should "cache the result" do
141
- # 2.times { Fleakr.token }
142
- # end
143
- #
144
- # end
145
- #
146
- # context "when generating an AuthenticationToken from a mini_token string" do
147
- #
148
- # setup do
149
- # @token = stub()
150
- #
151
- # Fleakr.expects(:auth_token).with().at_least_once.returns(nil)
152
- # Fleakr.expects(:mini_token).with().at_least_once.returns('123-123-123')
153
- # Fleakr::Objects::AuthenticationToken.expects(:from_mini_token).with('123-123-123').returns(@token)
154
- # end
155
- #
156
- # # Make sure to clear the cache
157
- # teardown { Fleakr.mini_token = nil }
158
- #
159
- # should "return the token" do
160
- # Fleakr.token.should == @token
161
- # end
162
- #
163
- # should "cache the result" do
164
- # 2.times { Fleakr.token }
165
- # end
166
- #
167
- # end
168
- #
169
- end
161
+ end
170
162
 
171
163
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: latompa-fleakr
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.5
4
+ version: 0.5.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Patrick Reagan