rets 0.1.5 → 0.1.6

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ ### 0.1.6 / 2012-03-12
2
+
3
+ * fix: user_agent authentication
4
+
1
5
  ### 0.1.5 / 2012-03-17
2
6
 
3
7
  * fix: retries raise error after too many failures
@@ -43,16 +43,14 @@ module Rets
43
43
  end
44
44
  end
45
45
 
46
- def calculate_user_agent_digest(user_agent, user_agent_password, session_id, version)
47
- product, _ = user_agent.split("/")
48
-
46
+ def calculate_user_agent_digest(product, user_agent_password, rets_request_id, session_id, version)
49
47
  a1 = Digest::MD5.hexdigest "#{product}:#{user_agent_password}"
50
48
 
51
- Digest::MD5.hexdigest "#{a1}::#{session_id}:#{version}"
49
+ Digest::MD5.hexdigest "#{a1}:#{rets_request_id}:#{session_id}:#{version}"
52
50
  end
53
51
 
54
52
  def build_user_agent_auth(*args)
55
- %Q(Digest "#{calculate_user_agent_digest(*args)}")
53
+ %Q(Digest #{calculate_user_agent_digest(*args)})
56
54
  end
57
55
 
58
56
  end
data/lib/rets/client.rb CHANGED
@@ -351,6 +351,12 @@ module Rets
351
351
  @cookies.map{ |k,v| "#{k}=#{v}" }.join("; ")
352
352
  end
353
353
 
354
+ def cookie(name)
355
+ return if @cookies.nil? or @cookies.empty?
356
+
357
+ @cookies[name]
358
+ end
359
+
354
360
 
355
361
  def session=(session)
356
362
  self.authorization = session.authorization
@@ -440,7 +446,7 @@ module Rets
440
446
  if options[:ua_password]
441
447
  headers.merge!(
442
448
  "RETS-UA-Authorization" => build_user_agent_auth(
443
- user_agent, options[:ua_password], "", rets_version))
449
+ user_agent, options[:ua_password], '', cookie('RETS-Session-ID'), rets_version))
444
450
  end
445
451
 
446
452
  headers
data/lib/rets.rb CHANGED
@@ -8,7 +8,7 @@ require 'net/http/persistent'
8
8
  require 'nokogiri'
9
9
 
10
10
  module Rets
11
- VERSION = '0.1.5'
11
+ VERSION = '0.1.6'
12
12
 
13
13
  AuthorizationFailure = Class.new(ArgumentError)
14
14
  InvalidRequest = Class.new(ArgumentError)
data/test/test_client.rb CHANGED
@@ -331,7 +331,7 @@ DIGEST
331
331
  Digest::MD5.expects(:hexdigest).with("a1::session:version").returns("hash")
332
332
 
333
333
  assert_equal "hash",
334
- @client.calculate_user_agent_digest("agent", "secret", "session", "version")
334
+ @client.calculate_user_agent_digest("agent", "secret", '', "session", "version")
335
335
  end
336
336
 
337
337
 
@@ -437,7 +437,7 @@ DIGEST
437
437
  @client.find(:all, :foo => :bar)
438
438
  end
439
439
 
440
- def test_find_retries_on_errors
440
+ def test_find_eventually_reraises_errors
441
441
  @client.stubs(:find_every).raises(Rets::AuthorizationFailure)
442
442
  assert_raise Rets::AuthorizationFailure do
443
443
  @client.find(:all, :foo => :bar)
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rets
3
3
  version: !ruby/object:Gem::Version
4
- hash: 17
4
+ hash: 23
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 5
10
- version: 0.1.5
9
+ - 6
10
+ version: 0.1.6
11
11
  platform: ruby
12
12
  authors:
13
13
  - Estately, Inc. Open Source
@@ -16,7 +16,7 @@ autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
18
 
19
- date: 2012-03-19 00:00:00 Z
19
+ date: 2012-04-03 00:00:00 Z
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
22
22
  name: net-http-persistent
@@ -88,11 +88,11 @@ dependencies:
88
88
  requirements:
89
89
  - - ~>
90
90
  - !ruby/object:Gem::Version
91
- hash: 35
91
+ hash: 25
92
92
  segments:
93
93
  - 2
94
- - 16
95
- version: "2.16"
94
+ - 13
95
+ version: "2.13"
96
96
  type: :development
97
97
  version_requirements: *id005
98
98
  description: |-
@@ -163,7 +163,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
163
163
  requirements: []
164
164
 
165
165
  rubyforge_project: rets
166
- rubygems_version: 1.8.10
166
+ rubygems_version: 1.8.15
167
167
  signing_key:
168
168
  specification_version: 3
169
169
  summary: A pure-ruby library for fetching data from [RETS] servers