rets4r 0.8.5 → 1.1.18

Sign up to get free protection for your applications and to get access to all the features.
Files changed (79) hide show
  1. data/.document +5 -0
  2. data/{test/client/data/1.5/metadata.xml → .gemtest} +0 -0
  3. data/CHANGELOG +611 -66
  4. data/CONTRIBUTORS +6 -2
  5. data/Gemfile +1 -0
  6. data/LICENSE +22 -0
  7. data/MANIFEST +63 -0
  8. data/NEWS +203 -0
  9. data/{README → README.rdoc} +11 -4
  10. data/RUBYS +7 -7
  11. data/Rakefile +48 -0
  12. data/TODO +5 -1
  13. data/examples/client_get_object.rb +31 -42
  14. data/examples/client_login.rb +20 -18
  15. data/examples/client_mapper.rb +17 -0
  16. data/examples/client_metadata.rb +28 -28
  17. data/examples/client_parser.rb +9 -0
  18. data/examples/client_search.rb +25 -27
  19. data/examples/settings.yml +114 -0
  20. data/lib/rets4r.rb +14 -1
  21. data/lib/rets4r/auth.rb +70 -66
  22. data/lib/rets4r/client.rb +470 -650
  23. data/lib/rets4r/client/data.rb +13 -13
  24. data/lib/rets4r/client/dataobject.rb +27 -19
  25. data/lib/rets4r/client/exceptions.rb +116 -0
  26. data/lib/rets4r/client/links.rb +32 -0
  27. data/lib/rets4r/client/metadata.rb +12 -12
  28. data/lib/rets4r/client/parsers/compact.rb +42 -0
  29. data/lib/rets4r/client/parsers/compact_nokogiri.rb +91 -0
  30. data/lib/rets4r/client/parsers/metadata.rb +92 -0
  31. data/lib/rets4r/client/parsers/response_parser.rb +100 -0
  32. data/lib/rets4r/client/requester.rb +143 -0
  33. data/lib/rets4r/client/transaction.rb +30 -33
  34. data/lib/rets4r/core_ext/array/extract_options.rb +15 -0
  35. data/lib/rets4r/core_ext/class/attribute_accessors.rb +58 -0
  36. data/lib/rets4r/core_ext/hash/keys.rb +46 -0
  37. data/lib/rets4r/core_ext/hash/slice.rb +39 -0
  38. data/lib/rets4r/listing_mapper.rb +17 -0
  39. data/lib/rets4r/listing_service.rb +35 -0
  40. data/lib/rets4r/loader.rb +8 -0
  41. data/lib/tasks/annotations.rake +121 -0
  42. data/lib/tasks/coverage.rake +13 -0
  43. data/rets4r.gemspec +24 -0
  44. data/spec/rets4r_compact_data_parser_spec.rb +7 -0
  45. data/test/data/1.5/bad_compact.xml +7 -0
  46. data/test/data/1.5/count_only_compact.xml +3 -0
  47. data/test/{client/data → data}/1.5/error.xml +0 -0
  48. data/test/{client/data → data}/1.5/invalid_compact.xml +0 -0
  49. data/test/{client/data → data}/1.5/login.xml +0 -0
  50. data/test/data/1.5/metadata.xml +0 -0
  51. data/test/{client/data → data}/1.5/search_compact.xml +0 -0
  52. data/test/data/1.5/search_compact_big.xml +136 -0
  53. data/test/{client/data → data}/1.5/search_unescaped_compact.xml +0 -0
  54. data/test/data/listing_service.yml +36 -0
  55. data/test/test_auth.rb +68 -0
  56. data/test/test_client.rb +342 -0
  57. data/test/test_client_links.rb +39 -0
  58. data/test/test_compact_nokogiri.rb +64 -0
  59. data/test/test_helper.rb +12 -0
  60. data/test/test_listing_mapper.rb +112 -0
  61. data/test/test_loader.rb +24 -0
  62. data/test/test_parser.rb +96 -0
  63. data/test/test_quality.rb +57 -0
  64. metadata +168 -53
  65. data/GPL +0 -340
  66. data/examples/metadata.xml +0 -42
  67. data/lib/rets4r/client/metadataindex.rb +0 -82
  68. data/lib/rets4r/client/parser.rb +0 -141
  69. data/lib/rets4r/client/parser/rexml.rb +0 -75
  70. data/lib/rets4r/client/parser/xmlparser.rb +0 -95
  71. data/test/client/parser/tc_rexml.rb +0 -17
  72. data/test/client/parser/tc_xmlparser.rb +0 -21
  73. data/test/client/tc_auth.rb +0 -68
  74. data/test/client/tc_client.rb +0 -320
  75. data/test/client/tc_metadataindex.rb +0 -36
  76. data/test/client/test_parser.rb +0 -128
  77. data/test/client/ts_all.rb +0 -8
  78. data/test/ts_all.rb +0 -1
  79. data/test/ts_client.rb +0 -1
@@ -1,3 +1,7 @@
1
- <b>Scott Patterson</b> mailto:scott.patterson@digitalaun.com
1
+ Scott Patterson <scott.patterson@digitalaun.com>
2
2
 
3
- <b>Fran�ois Beausoleil</b> http://blog.teksol.info/
3
+ Fran�ois Beausoleil <http://blog.teksol.info/>
4
+ John Wulff <johnw@orcasnet.com>
5
+ Joseph Holsten <joseph@josephholsten.com>
6
+ Andrew Vit <andrew@avit.ca>
7
+ Brian Dunn <brianpatrickdunn@gmail.com>
data/Gemfile ADDED
@@ -0,0 +1 @@
1
+ gemspec
data/LICENSE CHANGED
@@ -5,3 +5,25 @@ This program is copyrighted free software by Scott Patterson. You can
5
5
  redistribute it and/or modify it under the same terms of Ruby's license;
6
6
  either the dual license version in 2003 (see the file RUBYS), or any later
7
7
  version.
8
+
9
+ Some parts Copyright (c) 2009 bgetting
10
+ Some parts Copyright (c) 2009 John Wulff
11
+
12
+ Permission is hereby granted, free of charge, to any person obtaining
13
+ a copy of this software and associated documentation files (the
14
+ "Software"), to deal in the Software without restriction, including
15
+ without limitation the rights to use, copy, modify, merge, publish,
16
+ distribute, sublicense, and/or sell copies of the Software, and to
17
+ permit persons to whom the Software is furnished to do so, subject to
18
+ the following conditions:
19
+
20
+ The above copyright notice and this permission notice shall be
21
+ included in all copies or substantial portions of the Software.
22
+
23
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
24
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
25
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
26
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
27
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
28
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
29
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,63 @@
1
+ .document
2
+ .gemtest
3
+ CHANGELOG
4
+ CONTRIBUTORS
5
+ Gemfile
6
+ LICENSE
7
+ MANIFEST
8
+ NEWS
9
+ README.rdoc
10
+ RUBYS
11
+ Rakefile
12
+ TODO
13
+ examples/client_get_object.rb
14
+ examples/client_login.rb
15
+ examples/client_mapper.rb
16
+ examples/client_metadata.rb
17
+ examples/client_parser.rb
18
+ examples/client_search.rb
19
+ examples/settings.yml
20
+ lib/rets4r.rb
21
+ lib/rets4r/auth.rb
22
+ lib/rets4r/client.rb
23
+ lib/rets4r/client/data.rb
24
+ lib/rets4r/client/dataobject.rb
25
+ lib/rets4r/client/exceptions.rb
26
+ lib/rets4r/client/links.rb
27
+ lib/rets4r/client/metadata.rb
28
+ lib/rets4r/client/parsers/compact.rb
29
+ lib/rets4r/client/parsers/compact_nokogiri.rb
30
+ lib/rets4r/client/parsers/metadata.rb
31
+ lib/rets4r/client/parsers/response_parser.rb
32
+ lib/rets4r/client/requester.rb
33
+ lib/rets4r/client/transaction.rb
34
+ lib/rets4r/core_ext/array/extract_options.rb
35
+ lib/rets4r/core_ext/class/attribute_accessors.rb
36
+ lib/rets4r/core_ext/hash/keys.rb
37
+ lib/rets4r/core_ext/hash/slice.rb
38
+ lib/rets4r/listing_mapper.rb
39
+ lib/rets4r/listing_service.rb
40
+ lib/rets4r/loader.rb
41
+ lib/tasks/annotations.rake
42
+ lib/tasks/coverage.rake
43
+ rets4r.gemspec
44
+ spec/rets4r_compact_data_parser_spec.rb
45
+ test/data/1.5/bad_compact.xml
46
+ test/data/1.5/count_only_compact.xml
47
+ test/data/1.5/error.xml
48
+ test/data/1.5/invalid_compact.xml
49
+ test/data/1.5/login.xml
50
+ test/data/1.5/metadata.xml
51
+ test/data/1.5/search_compact.xml
52
+ test/data/1.5/search_compact_big.xml
53
+ test/data/1.5/search_unescaped_compact.xml
54
+ test/data/listing_service.yml
55
+ test/test_auth.rb
56
+ test/test_client.rb
57
+ test/test_client_links.rb
58
+ test/test_compact_nokogiri.rb
59
+ test/test_helper.rb
60
+ test/test_listing_mapper.rb
61
+ test/test_loader.rb
62
+ test/test_parser.rb
63
+ test/test_quality.rb
data/NEWS ADDED
@@ -0,0 +1,203 @@
1
+ 1.1.18
2
+ New Features
3
+ * Support multiple environments in examples
4
+ * Use streaming XML (SAX) parser by default
5
+ * Support case insensitive headers in DataObjects
6
+ * Support location parameter in Get Object requests
7
+ * Add a mapper example
8
+ * Support rubygems-test
9
+ * Send a meaningful user agent of rets4r/n.n.n
10
+ * Raise meaningful exceptions when the service responds with an error
11
+
12
+ Bug Fixes
13
+ * Ignore nil keys and values when creating query strings
14
+ * Remove broken RETS Session ID header support
15
+ * Fix nokogiri dependency
16
+ * Remove broken multi-thread support
17
+
18
+ 1.1.17
19
+ New features
20
+ * RETS4R::Client::ResponseParser#parse_results: works with COMPACT-DECODED
21
+ * RETS4R::Client::CompactDataParser#parse_results: works without a
22
+ delimiter in response
23
+ * RETS4R::Client::CompactDataParser#parse_data: works without column names
24
+ in response
25
+ * RETS4R::Client::CompactNokogiriParser: yields data as it is read
26
+ * RETS4R::ListingMapper: added
27
+
28
+ Bug fixes
29
+ * RETS4R::Client#get_object: checks content-type
30
+ * RETS4R::Client::ResponseParser: no longer writes a temp file
31
+
32
+ Internal API changes
33
+ * RETS4R::Client::MetadataIndex: removed
34
+
35
+ 1.1.16
36
+ Internal API changes
37
+ * RETS4R::Loader::load: parse from io, not file name
38
+
39
+ 1.1.15
40
+ Bug fixes
41
+ * RETS4R::Client::CompactNokogiriParser: now parses long lines
42
+
43
+ 1.1.14
44
+ New features
45
+ * RETS4R::Loader: added
46
+ * RETS4R::Client::CompactNokogiriParser: added
47
+
48
+ Other changes
49
+ * Examples use demo RETS server
50
+ * New parser example
51
+
52
+ 1.1.13
53
+ Use gemcutter (Joseph Holsten)
54
+
55
+ * Rakefile: include GemcutterTasks
56
+
57
+ Fix rdoc reference (Joseph Holsten)
58
+
59
+ * README: renamed to README.rdoc
60
+ * Rakefile: likewise
61
+ * rets4r.gemspec: likewise
62
+ * CONTRIBUTORS: added Joseph Holsten
63
+
64
+ 1.1.12
65
+ Merge example settings into a config file (Joseph Holsten)
66
+ Clean up testing (Joseph Holsten)
67
+
68
+ 1.1.11
69
+ Merge many rets4r forks (Joseph Holsten)
70
+
71
+ 1.1.10
72
+ ResponseParser#parse_common: should be _not_ equals (Jacob Basham)
73
+
74
+ 1.1.9
75
+ (no change)
76
+
77
+ 1.1.8
78
+ Client, ResponseParser#parse_common: Parser cleanup (Jacob Basham)
79
+
80
+ 1.1.7
81
+ Client, Client#initialize, Client#create_query_string, Client#request:
82
+ Cleaned up files to be 80 skinny, added CGI escaping of data (Jacob Basham)
83
+
84
+ 1.1.5
85
+ gemspec: fix date error (Jacob Basham)
86
+
87
+ 1.1.3
88
+ gemspec: update (Jacob Basham)
89
+
90
+ 1.1.2
91
+ ResponseParser#parse_key_value: Accept CARETS response (John Wulff)
92
+
93
+ 1.1.1
94
+ ResponseParser#parse_key_value: Handle nils (John Wulff)
95
+
96
+ 1.1.0
97
+ Strip key value pairs for CAPABILITY_LIST endpoints (John Wulff)
98
+ Add lib/rets4r to default load path (John Wulff)
99
+
100
+ 1.0.0
101
+ See changes in 9f7ff731250abc1f73b21cb01d3a6fc3a6617e73 (John Wulff)
102
+
103
+ Parser#parse_compact_line: simplify split.
104
+ Parser#parse_data: remove legacy support.
105
+ Auth::authenticate: handle missing www-authenticate header.
106
+ Auth::parse_header: strip keys, values.
107
+ Client#initialize: method signature changed, removed options, added format.
108
+ Client#set_parser_class, Client#get_parser_class,
109
+ Client#parser_class, Client#parser_class=, Client#set_output,
110
+ Client#get_output, Client#output, Client#output=: removed, callers changed.
111
+ Lay groundwork for non-compact format requests
112
+ Client::DEFAULT_METHOD: changed to GET
113
+ Client::DEFAULT_USER_AGENT: changed to Firefox
114
+ Client#login: handle absolute uris
115
+ Client#parse: Removed. Changed callers to access parser directly.
116
+ Client#get_metadata: method signature changed, format removed. Use format instance variable.
117
+ Client#download_metadata: added
118
+ Client#get_object: handle text/xml responses
119
+ !!! Client#get_object: remove quote support from multipart boundary handling
120
+ Client#count: added
121
+ Client#basic_encode: added
122
+ !!! Client#create_query_string: Remove escaping on request query keys, values
123
+ Client#debug: removed, all calls inlined.
124
+ Client#RETSTransactionException: added
125
+
126
+
127
+ client/parsers/
128
+
129
+
130
+ 0.8.5
131
+ Parser#parse_compact_line now once again ignores beginning and ending delimiters. (Scott Patterson)
132
+ Parser#parse_data now ignores header fields that are nil or blank when stripped. (Scott Patterson)
133
+ Updated test to use the rets client version of the client, not hardcoded for post and get tests. (Scott Patterson)
134
+
135
+ 0.8.4
136
+ Fixed auth issue with authenticate headers with spaces after commas. (Ken Wiesner, Scott Patterson)
137
+ When an exception is raised in the authentication parsing code, complain by raising
138
+ a new exception, but also report anything of interest at the same time: request,
139
+ response, response's body. (François Beausoleil)
140
+ Fixed Client#request to actually respect the specified request method instead of always using GET requests. (Scott Patterson)
141
+ Set default request method to POST since some RETS servers seem to have trouble with GET requests. (Scott Patterson)
142
+
143
+ 0.8.3
144
+ Added example #set_pre_request_block. (François Beausoleil)
145
+ Allow a pre request block to be set for RETS4R::Client.
146
+ This allows the caller to change the request in any meaningful way, such as adding a
147
+ RETS-UA-Authorization header when appropriate. (François Beausoleil)
148
+ Better response handling of HTTP errors. Response codes > 300 other than 401 now raise an
149
+ HTTPError exception that encapsulates the HTTPResponse object.
150
+ 401 errors raise a LoginError exception. (Scott Patterson)
151
+ Added in RETS specification error messages to reference. (Scott Patterson)
152
+ New Rakefile. Install the rake gem and do 'rake test' to run the tests. (François Beausoleil)
153
+
154
+ 0.8.2
155
+ Added missing result parameter to Client#search's yield (Scott Patterson)
156
+ Added 1.7 to supported list and default version (François Beausoleil)
157
+ No longer sends empty (nil) headers (François Beausoleil)
158
+ Added debugging to HTTP output. (François Beausoleil, Scott Patterson)
159
+ Added support for multiple set-cookie headers in the server response (François Beausoleil)
160
+ Added basic search example (Scott Patterson)
161
+ Implied default value of \t in RETS4R::Client::Transaction#delimiter (François Beausoleil)
162
+ #get_metadata now returns the block's value or the results. (François Beausoleil)
163
+ Made sure #login always calls #logout if called with a block. #login returns the block's value
164
+ instead of results. (François Beausoleil)
165
+ New assertions that require Client to have Ruby-like accessors for attributes, instead of
166
+ getters and setters. Applied 'Rename Attribute' on @parser, because #get_parser_class
167
+ was returning the class of the parser's class, instead of the parser's class itself. (François Beausoleil)
168
+ Client#set_rets_version should take care to generate the correct RETS-Version header,
169
+ and #get_rets_version should undo the changes that #set_rets_version did before
170
+ returning the value. (François Beausoleil)
171
+ Don't rescue an exception that's not being processed in Parser. (François Beausoleil)
172
+ RETS4R::Client#get_object extensions: yield or return the array of DataObject instances;
173
+ changed the multipart/parallel response boundary processing rules
174
+ (include \r\n in the boundary detection); added documentation. (François Beausoleil)
175
+ Added GetObject example (Scott Patterson)
176
+ Changed #get_object now yields each DataObject if a block is given rather
177
+ than an array of DataObjects (Scott Patterson)
178
+
179
+ 0.8.1
180
+ Added Action-URL support per the specification.
181
+ Added a secondary_response accessor to the Transaction object, which is what the Action-URL result is stored in.
182
+ Fixed a bug with loggers and parsers
183
+
184
+ 0.8.0
185
+ Fixed RParser support, which now means you can use REXML.
186
+ RParser now retries XML that produced a parser error after trying to clean it.
187
+ Parser support is now more open so that more parsers can be easily added in the future.
188
+ Reorganized parser file layout.
189
+ CParser will only be loaded if libxml (its dependency) is present. If it is, it is the default
190
+ parser.
191
+ Added more parser unit tests.
192
+ Renamed CParser to XMLParser and RPARSER to REXML, both with the hierarchy RETS4R::Client::Module.
193
+ Fixed a bug with the parser output not being set properly.
194
+ Fixed a bug with the parser not respecting the DELIMITER value and insisting on tab delimiters.
195
+ Added support for using a logger
196
+ Added more defaults to the search options (Count => '0', Format => 'COMPACT')
197
+ Added some Rubyisms (blocks can now be given to #new, #login, #get_metadata, #get_object, and #search)
198
+
199
+ 0.7.1
200
+ Added support for reading the results count for searches.
201
+
202
+ 0.7.0
203
+ Initial GEM Version
@@ -11,10 +11,14 @@ While this is the only "native" Ruby RETS library currently available
11
11
  bindings available from the Center for Realtor� Technology
12
12
  (http://www.crt.realtors.org/projects/rets/librets/).
13
13
 
14
+ == Links
15
+
16
+ * Source: http://github.com/josephholsten/rets4r
17
+ * Documentation: http://rdoc.info/projects/josephholsten/rets4r
18
+
14
19
  == Requirements
15
20
 
16
- * Ruby 1.8.4
17
- * XML::Parser (Optional. If not present, REXML will be used.)
21
+ * Ruby 1.8.4
18
22
 
19
23
  == License
20
24
 
@@ -22,7 +26,7 @@ Please see the LICENSE file.
22
26
 
23
27
  == Acknowledgments
24
28
 
25
- This project was made possible by the Contra Costa Association of
29
+ This project was made possible in part by the Contra Costa Association of
26
30
  Realtors� (http://www.ccartoday.com).
27
31
 
28
32
  == Getting Started
@@ -33,4 +37,7 @@ objects, rather than making real transaction calls.
33
37
 
34
38
  Due to the nature of this library, it is HIGHLY recommended that you
35
39
  have at least a basic understanding of the RETS protocol. The official
36
- RETS website is http://www.rets.org.
40
+ RETS website is http://www.rets.org.
41
+
42
+ Most of the time, you will be either searching for resources or getting
43
+ objects, so begin there.
data/RUBYS CHANGED
@@ -11,8 +11,8 @@ You can redistribute it and/or modify it under either the terms of the GPL
11
11
 
12
12
  a) place your modifications in the Public Domain or otherwise
13
13
  make them Freely Available, such as by posting said
14
- modifications to Usenet or an equivalent medium, or by allowing
15
- the author to include your modifications in the software.
14
+ modifications to Usenet or an equivalent medium, or by allowing
15
+ the author to include your modifications in the software.
16
16
 
17
17
  b) use the modified software only within your corporation or
18
18
  organization.
@@ -26,11 +26,11 @@ You can redistribute it and/or modify it under either the terms of the GPL
26
26
  provided that you do at least ONE of the following:
27
27
 
28
28
  a) distribute the binaries and library files of the software,
29
- together with instructions (in the manual page or equivalent)
30
- on where to get the original distribution.
29
+ together with instructions (in the manual page or equivalent)
30
+ on where to get the original distribution.
31
31
 
32
32
  b) accompany the distribution with the machine-readable source of
33
- the software.
33
+ the software.
34
34
 
35
35
  c) give non-standard binaries non-standard names, with
36
36
  instructions on where to get the original software distribution.
@@ -44,9 +44,9 @@ You can redistribute it and/or modify it under either the terms of the GPL
44
44
  For the list of those files and their copying conditions, see the
45
45
  file LEGAL.
46
46
 
47
- 5. The scripts and library files supplied as input to or produced as
47
+ 5. The scripts and library files supplied as input to or produced as
48
48
  output from the software do not automatically fall under the
49
- copyright of the software, but belong to whomever generated them,
49
+ copyright of the software, but belong to whomever generated them,
50
50
  and may be sold commercially, and may be aggregated with this
51
51
  software.
52
52
 
@@ -0,0 +1,48 @@
1
+ require 'rubygems'
2
+ require 'bundler/setup'
3
+ require 'rake'
4
+ require 'rake/clean'
5
+ require 'fileutils'
6
+ include FileUtils
7
+
8
+ # impart all tasks in lib/tasks/
9
+ Dir['lib/tasks/*.rake'].each { |task| import task }
10
+
11
+ require 'rake/testtask'
12
+ Rake::TestTask.new(:test) do |test|
13
+ test.verbose = true
14
+ end
15
+
16
+ task :default => :test
17
+
18
+ require 'rake/rdoctask'
19
+ Rake::RDocTask.new do |rdoc|
20
+ if File.exist?('VERSION.yml')
21
+ config = YAML.load(File.read('VERSION.yml'))
22
+ version = "#{config[:major]}.#{config[:minor]}.#{config[:patch]}"
23
+ else
24
+ version = ""
25
+ end
26
+
27
+ rdoc.rdoc_dir = 'rdoc'
28
+ rdoc.title = "rets4r #{version}"
29
+ rdoc.options << '--line-numbers' << '--inline-source'
30
+ rdoc.rdoc_files.include('README.rdoc')
31
+ rdoc.rdoc_files.include('lib/**/*.rb')
32
+ end
33
+ CLEAN << 'rdoc'
34
+
35
+ file 'MANIFEST.tmp' do
36
+ sh %{find . -type f | sed 's/\\.\\///' | grep -v '.git' | sort > MANIFEST.tmp}
37
+ end
38
+ CLEAN << 'MANIFEST.tmp'
39
+
40
+ desc "Check the manifest against current files"
41
+ task :check_manifest => [:clean, 'MANIFEST', 'MANIFEST.tmp'] do
42
+ puts `diff -du MANIFEST MANIFEST.tmp`
43
+ end
44
+
45
+ CLEAN << '.rake_tasks'
46
+
47
+ Bundler::GemHelper.install_tasks
48
+ CLEAN << 'pkg/*'
data/TODO CHANGED
@@ -9,6 +9,8 @@ Add
9
9
  * More Documentation
10
10
  * Reply Codes (Readable Meaning)
11
11
  * A search convenience method that makes subsequent requests if maxrows is true.
12
+ * Extend examples so they are useful replacements for SimpleRETS
13
+ * Shared configuration between examples
12
14
 
13
15
  Verify
14
16
  * 1.7 Compliance and support
@@ -23,4 +25,6 @@ Possible To-do Items
23
25
  * Update Actions
24
26
  * Password Change Transaction
25
27
  * Get Transaction
26
- * HTTPS Support
28
+ * HTTPS Support
29
+ * Simple mapping to ActiveRecord
30
+ * add metric_fu
@@ -1,4 +1,4 @@
1
- #!/usr/bin/ruby
1
+ #!/usr/bin/env ruby
2
2
  #
3
3
  # This is an example of how to use the RETS client to retrieve an objet.
4
4
  #
@@ -7,14 +7,11 @@
7
7
  #############################################################################################
8
8
  # Settings
9
9
 
10
- rets_url = 'http://server.com/my/rets/url'
11
- username = 'username'
12
- password = 'password'
13
-
14
- # GetObject Settings
15
- resource = 'Property'
16
- object_type = 'Photo'
17
- resource_id = 'id:*'
10
+ require 'yaml'
11
+ require 'active_support/core_ext/hash'
12
+ settings_file = File.expand_path(File.join(File.dirname(__FILE__), "settings.yml"))
13
+ env = ENV['LISTING_ENV'] || 'development'
14
+ settings = YAML.load_file(settings_file)[env].symbolize_keys
18
15
 
19
16
  #############################################################################################
20
17
  $:.unshift 'lib'
@@ -23,38 +20,30 @@ require 'rets4r'
23
20
  require 'logger'
24
21
 
25
22
  def handle_object(object)
26
- case object.info['Content-Type']
27
- when 'image/jpeg' then extension = 'jpg'
28
- when 'image/gif' then extension = 'gif'
29
- when 'image/png' then extension = 'png'
30
- else extension = 'unknown'
31
- end
32
-
33
- File.open("#{object.info['Content-ID']}_#{object.info['Object-ID']}.#{extension}", 'w') do |f|
34
- f.write(object.data)
35
- end
23
+ case object.info['Content-Type']
24
+ when 'image/jpeg' then extension = 'jpg'
25
+ when 'image/gif' then extension = 'gif'
26
+ when 'image/png' then extension = 'png'
27
+ else extension = 'unknown'
28
+ end
29
+
30
+ File.open("#{object.info['Content-ID']}_#{object.info['Object-ID']}.#{extension}", 'w') do |f|
31
+ f.write(object.data)
32
+ end
36
33
  end
37
34
 
38
- client = RETS4R::Client.new(rets_url)
39
-
40
- client.login(username, password) do |login_result|
41
-
42
- if login_result.success?
43
- ## Method 1
44
- # Get objects using a block
45
- client.get_object(resource, object_type, resource_id) do |object|
46
- handle_object(object)
47
- end
48
-
49
- ## Method 2
50
- # Get objects using a return value
51
- results = client.get_object(resource, object_type, resource_id)
52
-
53
- results.each do |object|
54
- handle_object(object)
55
- end
56
- else
57
- puts "We were unable to log into the RETS server."
58
- puts "Please check that you have set the login variables correctly."
59
- end
60
- end
35
+ client = RETS4R::Client.new(settings[:url])
36
+
37
+ client.login(settings[:username], settings[:password]) do |login_result|
38
+
39
+ if login_result.success?
40
+ ## Method 1
41
+ # Get objects using a block
42
+ client.get_object(settings[:resource], settings[:object_type], settings[:resource_id] + ':0:*') do |object|
43
+ handle_object(object)
44
+ end
45
+ else
46
+ puts "We were unable to log into the RETS server."
47
+ puts "Please check that you have set the login variables correctly."
48
+ end
49
+ end