rets-sarmiena 0.1.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/.gitignore +7 -0
- data/CHANGELOG.md +5 -0
- data/Gemfile +4 -0
- data/Manifest.txt +23 -0
- data/README.md +42 -0
- data/Rakefile +1 -0
- data/bin/rets +194 -0
- data/lib/rets-sarmiena.rb +2 -0
- data/lib/rets-sarmiena/version.rb +5 -0
- data/lib/rets.rb +24 -0
- data/lib/rets/authentication.rb +59 -0
- data/lib/rets/client.rb +483 -0
- data/lib/rets/metadata.rb +6 -0
- data/lib/rets/metadata/containers.rb +84 -0
- data/lib/rets/metadata/lookup_type.rb +17 -0
- data/lib/rets/metadata/resource.rb +73 -0
- data/lib/rets/metadata/rets_class.rb +42 -0
- data/lib/rets/metadata/root.rb +169 -0
- data/lib/rets/metadata/table.rb +98 -0
- data/lib/rets/parser/compact.rb +54 -0
- data/lib/rets/parser/multipart.rb +36 -0
- data/rets-sarmiena.gemspec +26 -0
- data/test/fixtures.rb +149 -0
- data/test/helper.rb +6 -0
- data/test/test_client.rb +582 -0
- data/test/test_helper.rb +6 -0
- data/test/test_metadata.rb +452 -0
- data/test/test_parser_compact.rb +71 -0
- data/test/test_parser_multipart.rb +21 -0
- metadata +123 -0
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
require "test_helper"
|
|
2
|
+
|
|
3
|
+
class TestParserCompact < Test::Unit::TestCase
|
|
4
|
+
def test_parse_document_raises_on_invalid_delimiter
|
|
5
|
+
assert_raise Rets::Parser::Compact::InvalidDelimiter do
|
|
6
|
+
Rets::Parser::Compact.parse_document(INVALID_DELIMETER)
|
|
7
|
+
end
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def test_parse_document_uses_default_delimiter_when_none_provided
|
|
11
|
+
# we assert that the delimeter character getting to parse is a tab
|
|
12
|
+
# even though COMPACT defines no delimiter tag
|
|
13
|
+
Rets::Parser::Compact.expects(:parse).with("A\tB", "1\t2", /\t/)
|
|
14
|
+
Rets::Parser::Compact.expects(:parse).with("A\tB", "4\t5", /\t/)
|
|
15
|
+
Rets::Parser::Compact.parse_document(COMPACT)
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def test_parse_document_delegates_to_parse
|
|
19
|
+
result = Rets::Parser::Compact.parse_document(COMPACT)
|
|
20
|
+
|
|
21
|
+
assert_equal([{"A" => "1", "B" => "2"}, {"A" => "4", "B" => "5"}], result)
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def test_parser_rejects_empty_key_value_pairs
|
|
25
|
+
result = Rets::Parser::Compact.parse_document(METADATA_OBJECT)
|
|
26
|
+
|
|
27
|
+
result.each do |row|
|
|
28
|
+
assert !row.any? { |k,v| k.to_s.size == 0 }, "Should not contain empty keys"
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def test_parse_returns_key_value_pairs
|
|
33
|
+
result = Rets::Parser::Compact.parse("A\tB", "1\t2")
|
|
34
|
+
|
|
35
|
+
assert_equal({"A" => "1", "B" => "2"}, result)
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
# RMLS does this. :|
|
|
39
|
+
def test_remaining_columns_produce_empty_string_values
|
|
40
|
+
columns = "A B C D"
|
|
41
|
+
data = "1 2"
|
|
42
|
+
|
|
43
|
+
assert_equal({"A" => "1", "B" => "2", "C" => "", "D" => ""}, Rets::Parser::Compact.parse(columns, data, / /))
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def test_leading_empty_columns_are_preserved_with_delimiter
|
|
47
|
+
columns = "A\tB\tC\tD"
|
|
48
|
+
data = "\t\t3\t4" # first two columns are empty data.
|
|
49
|
+
|
|
50
|
+
assert_equal({"A" => "", "B" => "", "C" => "3", "D" => "4"}, Rets::Parser::Compact.parse(columns, data, /\t/))
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def test_parse_only_accepts_regexp
|
|
54
|
+
assert_raises ArgumentError do
|
|
55
|
+
Rets::Parser::Compact.parse("a", "b", " ")
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def test_parse_example
|
|
60
|
+
rows = Rets::Parser::Compact.parse_document(Nokogiri.parse(SAMPLE_COMPACT))
|
|
61
|
+
|
|
62
|
+
assert_equal "7", rows.first["MetadataEntryID"]
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
def test_parse_example_2
|
|
66
|
+
rows = Rets::Parser::Compact.parse_document(Nokogiri.parse(SAMPLE_COMPACT_2))
|
|
67
|
+
|
|
68
|
+
assert_equal "", rows.first["ModTimeStamp"]
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
require "test_helper"
|
|
2
|
+
|
|
3
|
+
class TestParserMultipart < Test::Unit::TestCase
|
|
4
|
+
def test_parse_returns_multiple_parts
|
|
5
|
+
headers = {"content-type"=>"image/jpeg", "content-id"=>"90020062739", "content-length"=>"10"}
|
|
6
|
+
|
|
7
|
+
parts = Rets::Parser::Multipart.parse(MULITPART_RESPONSE, "simple boundary")
|
|
8
|
+
|
|
9
|
+
assert_equal 2, parts.size
|
|
10
|
+
|
|
11
|
+
part = parts[0]
|
|
12
|
+
|
|
13
|
+
assert_equal headers.merge("object-id" => "1"), part.headers
|
|
14
|
+
assert_equal "xxxxxxxx", part.body.strip
|
|
15
|
+
|
|
16
|
+
part = parts[1]
|
|
17
|
+
|
|
18
|
+
assert_equal headers.merge("object-id" => "2"), part.headers
|
|
19
|
+
assert_equal "yyyyyyyy", part.body.strip
|
|
20
|
+
end
|
|
21
|
+
end
|
metadata
ADDED
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: rets-sarmiena
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
prerelease:
|
|
5
|
+
version: 0.1.0
|
|
6
|
+
platform: ruby
|
|
7
|
+
authors:
|
|
8
|
+
- Estately, Inc. Open Source
|
|
9
|
+
- Aldo Sarmiento
|
|
10
|
+
autorequire:
|
|
11
|
+
bindir: bin
|
|
12
|
+
cert_chain: []
|
|
13
|
+
|
|
14
|
+
date: 2011-12-09 00:00:00 Z
|
|
15
|
+
dependencies:
|
|
16
|
+
- !ruby/object:Gem::Dependency
|
|
17
|
+
name: mocha
|
|
18
|
+
prerelease: false
|
|
19
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
|
20
|
+
none: false
|
|
21
|
+
requirements:
|
|
22
|
+
- - ~>
|
|
23
|
+
- !ruby/object:Gem::Version
|
|
24
|
+
version: 0.9.12
|
|
25
|
+
type: :runtime
|
|
26
|
+
version_requirements: *id001
|
|
27
|
+
- !ruby/object:Gem::Dependency
|
|
28
|
+
name: nokogiri
|
|
29
|
+
prerelease: false
|
|
30
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
|
31
|
+
none: false
|
|
32
|
+
requirements:
|
|
33
|
+
- - ~>
|
|
34
|
+
- !ruby/object:Gem::Version
|
|
35
|
+
version: 1.5.0
|
|
36
|
+
type: :runtime
|
|
37
|
+
version_requirements: *id002
|
|
38
|
+
- !ruby/object:Gem::Dependency
|
|
39
|
+
name: net-http-persistent
|
|
40
|
+
prerelease: false
|
|
41
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
|
42
|
+
none: false
|
|
43
|
+
requirements:
|
|
44
|
+
- - ~>
|
|
45
|
+
- !ruby/object:Gem::Version
|
|
46
|
+
version: "1.7"
|
|
47
|
+
type: :runtime
|
|
48
|
+
version_requirements: *id003
|
|
49
|
+
description: Interface for connecting to RETS services
|
|
50
|
+
email:
|
|
51
|
+
- opensource@estately.com
|
|
52
|
+
- sarmiena@gmail.com
|
|
53
|
+
executables:
|
|
54
|
+
- rets
|
|
55
|
+
extensions: []
|
|
56
|
+
|
|
57
|
+
extra_rdoc_files: []
|
|
58
|
+
|
|
59
|
+
files:
|
|
60
|
+
- .gitignore
|
|
61
|
+
- CHANGELOG.md
|
|
62
|
+
- Gemfile
|
|
63
|
+
- Manifest.txt
|
|
64
|
+
- README.md
|
|
65
|
+
- Rakefile
|
|
66
|
+
- bin/rets
|
|
67
|
+
- lib/rets-sarmiena.rb
|
|
68
|
+
- lib/rets-sarmiena/version.rb
|
|
69
|
+
- lib/rets.rb
|
|
70
|
+
- lib/rets/authentication.rb
|
|
71
|
+
- lib/rets/client.rb
|
|
72
|
+
- lib/rets/metadata.rb
|
|
73
|
+
- lib/rets/metadata/containers.rb
|
|
74
|
+
- lib/rets/metadata/lookup_type.rb
|
|
75
|
+
- lib/rets/metadata/resource.rb
|
|
76
|
+
- lib/rets/metadata/rets_class.rb
|
|
77
|
+
- lib/rets/metadata/root.rb
|
|
78
|
+
- lib/rets/metadata/table.rb
|
|
79
|
+
- lib/rets/parser/compact.rb
|
|
80
|
+
- lib/rets/parser/multipart.rb
|
|
81
|
+
- rets-sarmiena.gemspec
|
|
82
|
+
- test/fixtures.rb
|
|
83
|
+
- test/helper.rb
|
|
84
|
+
- test/test_client.rb
|
|
85
|
+
- test/test_helper.rb
|
|
86
|
+
- test/test_metadata.rb
|
|
87
|
+
- test/test_parser_compact.rb
|
|
88
|
+
- test/test_parser_multipart.rb
|
|
89
|
+
homepage: https://github.com/sarmiena/rets
|
|
90
|
+
licenses: []
|
|
91
|
+
|
|
92
|
+
post_install_message:
|
|
93
|
+
rdoc_options: []
|
|
94
|
+
|
|
95
|
+
require_paths:
|
|
96
|
+
- lib
|
|
97
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
98
|
+
none: false
|
|
99
|
+
requirements:
|
|
100
|
+
- - ">="
|
|
101
|
+
- !ruby/object:Gem::Version
|
|
102
|
+
version: "0"
|
|
103
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
104
|
+
none: false
|
|
105
|
+
requirements:
|
|
106
|
+
- - ">="
|
|
107
|
+
- !ruby/object:Gem::Version
|
|
108
|
+
version: "0"
|
|
109
|
+
requirements: []
|
|
110
|
+
|
|
111
|
+
rubyforge_project: rets-sarmiena
|
|
112
|
+
rubygems_version: 1.8.11
|
|
113
|
+
signing_key:
|
|
114
|
+
specification_version: 3
|
|
115
|
+
summary: Interface for connecting to RETS services
|
|
116
|
+
test_files:
|
|
117
|
+
- test/fixtures.rb
|
|
118
|
+
- test/helper.rb
|
|
119
|
+
- test/test_client.rb
|
|
120
|
+
- test/test_helper.rb
|
|
121
|
+
- test/test_metadata.rb
|
|
122
|
+
- test/test_parser_compact.rb
|
|
123
|
+
- test/test_parser_multipart.rb
|