rets4r 0.8.4 → 0.8.5
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +8 -1
- data/lib/rets4r/client.rb +1 -1
- data/lib/rets4r/client/parser.rb +8 -2
- data/test/client/tc_client.rb +2 -2
- data/test/client/test_parser.rb +19 -0
- metadata +2 -2
data/CHANGELOG
CHANGED
@@ -1,6 +1,13 @@
|
|
1
|
+
0.8.5
|
2
|
+
Parser#parse_compact_line now once again ignores beginning and ending delimiters. (Scott Patterson)
|
3
|
+
Parser#parse_data now ignores header fields that are nil or blank when stripped. (Scott Patterson)
|
4
|
+
Updated test to use the rets client version of the client, not hardcoded for post and get tests. (Scott Patterson)
|
5
|
+
|
1
6
|
0.8.4
|
2
7
|
Fixed auth issue with authenticate headers with spaces after commas. (Ken Wiesner, Scott Patterson)
|
3
|
-
When an exception is raised in the authentication parsing code, complain by raising
|
8
|
+
When an exception is raised in the authentication parsing code, complain by raising
|
9
|
+
a new exception, but also report anything of interest at the same time: request,
|
10
|
+
response, response's body. (Fran�ois Beausoleil)
|
4
11
|
Fixed Client#request to actually respect the specified request method instead of always using GET requests. (Scott Patterson)
|
5
12
|
Set default request method to POST since some RETS servers seem to have trouble with GET requests. (Scott Patterson)
|
6
13
|
|
data/lib/rets4r/client.rb
CHANGED
@@ -32,7 +32,7 @@ module RETS4R
|
|
32
32
|
DEFAULT_OUTPUT = OUTPUT_RUBY
|
33
33
|
DEFAULT_METHOD = METHOD_POST
|
34
34
|
DEFAULT_RETRY = 2
|
35
|
-
DEFAULT_USER_AGENT = 'RETS4R/0.8.
|
35
|
+
DEFAULT_USER_AGENT = 'RETS4R/0.8.5'
|
36
36
|
DEFAULT_RETS_VERSION = '1.7'
|
37
37
|
SUPPORTED_RETS_VERSIONS = ['1.5', '1.7']
|
38
38
|
CAPABILITY_LIST = ['Action', 'ChangePassword', 'GetObject', 'Login', 'LoginComplete', 'Logout', 'Search', 'GetMetadata', 'Update']
|
data/lib/rets4r/client/parser.rb
CHANGED
@@ -102,7 +102,9 @@ module RETS4R
|
|
102
102
|
|
103
103
|
def parse_compact_line(data, delim = "\t")
|
104
104
|
begin
|
105
|
-
|
105
|
+
# We need to remove the beginning and ending delimiters prior to splitting
|
106
|
+
string_data = data.to_s
|
107
|
+
return string_data[1, string_data.length - 2].split(delim, -1)
|
106
108
|
rescue
|
107
109
|
raise "Error while parsing compact line: #{$!} with data: #{data}"
|
108
110
|
end
|
@@ -114,7 +116,11 @@ module RETS4R
|
|
114
116
|
parsed_data = parse_compact_line(data, @transaction.ascii_delimiter)
|
115
117
|
|
116
118
|
header.length.times do |pos|
|
117
|
-
|
119
|
+
# The removal of delimiters in #parse_compact_line prevents blank fields in newer
|
120
|
+
# version of Ruby, but on older versions (specifically 1.8.5 from 2006) a blank
|
121
|
+
# field would still manage to sneak in, so we now explicitly prevent them from going
|
122
|
+
# to the results.
|
123
|
+
results[header[pos]] = parsed_data[pos] unless header[pos].nil? || header[pos].strip == ""
|
118
124
|
end
|
119
125
|
|
120
126
|
results
|
data/test/client/tc_client.rb
CHANGED
@@ -290,7 +290,7 @@ module RETS4R
|
|
290
290
|
response.stubs(:code).returns('500')
|
291
291
|
response.stubs(:message).returns('Move along, nothing to see here.')
|
292
292
|
|
293
|
-
http.expects(:get).with('', {'RETS-Session-ID' => '0', 'User-Agent' =>
|
293
|
+
http.expects(:get).with('', {'RETS-Session-ID' => '0', 'User-Agent' => @rets.user_agent, 'RETS-Version' => "RETS/#{@rets.rets_version}", 'Accept' => '*/*'}).at_least_once.returns(response)
|
294
294
|
http.expects(:post).never
|
295
295
|
Net::HTTP.any_instance.expects(:start).at_least_once.yields(http)
|
296
296
|
|
@@ -307,7 +307,7 @@ module RETS4R
|
|
307
307
|
response.stubs(:code).returns('500')
|
308
308
|
response.stubs(:message).returns('Move along, nothing to see here.')
|
309
309
|
|
310
|
-
http.expects(:post).with('', '', {'RETS-Session-ID' => '0', 'User-Agent' =>
|
310
|
+
http.expects(:post).with('', '', {'RETS-Session-ID' => '0', 'User-Agent' => @rets.user_agent, 'RETS-Version' => "RETS/#{@rets.rets_version}", 'Accept' => '*/*'}).at_least_once.returns(response)
|
311
311
|
http.expects(:get).never
|
312
312
|
Net::HTTP.any_instance.expects(:start).at_least_once.yields(http)
|
313
313
|
|
data/test/client/test_parser.rb
CHANGED
@@ -104,6 +104,25 @@ module RETS4R
|
|
104
104
|
assert_equal('20400', transaction.reply_code)
|
105
105
|
assert_equal('Invalid Invalidness.', transaction.reply_text)
|
106
106
|
end
|
107
|
+
|
108
|
+
def test_parse_compact_line
|
109
|
+
results = @parser.parse_compact_line(" 1 2 3 ")
|
110
|
+
|
111
|
+
assert_equal 3, results.size
|
112
|
+
assert_equal '1', results[0]
|
113
|
+
assert_equal '2', results[1]
|
114
|
+
assert_equal '3', results[2]
|
115
|
+
end
|
116
|
+
|
117
|
+
def test_parse_data_should_ignore_empty_header_fields
|
118
|
+
header = ["", "1", "2", "3"]
|
119
|
+
data = " 1 2 3 "
|
120
|
+
|
121
|
+
results = @parser.parse_data(data, header)
|
122
|
+
|
123
|
+
assert_nil results[""]
|
124
|
+
assert_equal 3, results.size
|
125
|
+
end
|
107
126
|
end
|
108
127
|
end
|
109
128
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rets4r
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.8.
|
4
|
+
version: 0.8.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Scott Patterson
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2008-11-
|
12
|
+
date: 2008-11-06 00:00:00 -08:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|