simplyrets 0.1 → 1.0.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.
Files changed (52) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +46 -13
  3. data/README.org +6 -6
  4. data/example.rb +9 -9
  5. data/lib/simplyrets.rb +33 -56
  6. data/lib/simplyrets/#listing.rb# +199 -0
  7. data/lib/simplyrets/api/default_api.rb +154 -0
  8. data/lib/simplyrets/listing.rb~ +199 -0
  9. data/lib/simplyrets/models/agent.rb +61 -0
  10. data/lib/simplyrets/models/base_object.rb +87 -0
  11. data/lib/simplyrets/models/broker.rb +37 -0
  12. data/lib/simplyrets/models/contact_information.rb +53 -0
  13. data/lib/simplyrets/models/error.rb +45 -0
  14. data/lib/simplyrets/models/geographic_data.rb +69 -0
  15. data/lib/simplyrets/models/listing.rb +199 -0
  16. data/lib/simplyrets/models/listing.rb~ +199 -0
  17. data/lib/simplyrets/models/mls_information.rb +69 -0
  18. data/lib/simplyrets/models/office.rb +61 -0
  19. data/lib/simplyrets/models/open_house.rb +37 -0
  20. data/lib/simplyrets/models/parking.rb +53 -0
  21. data/lib/simplyrets/models/property.rb +277 -0
  22. data/lib/simplyrets/models/sales.rb +69 -0
  23. data/lib/simplyrets/models/school.rb +61 -0
  24. data/lib/simplyrets/models/street_address.rb +85 -0
  25. data/lib/simplyrets/models/tax.rb +53 -0
  26. data/lib/simplyrets/simplyrets.rb +76 -0
  27. data/lib/simplyrets/simplyrets/api_error.rb +26 -0
  28. data/lib/simplyrets/simplyrets/configuration.rb +101 -0
  29. data/lib/simplyrets/simplyrets/request.rb +213 -0
  30. data/lib/simplyrets/simplyrets/response.rb +156 -0
  31. data/lib/simplyrets/simplyrets/version.rb +5 -0
  32. data/simplyrets.gemspec +16 -9
  33. metadata +153 -36
  34. data/#example.rb# +0 -29
  35. data/lib/monkey.rb +0 -90
  36. data/lib/properties_api.rb +0 -75
  37. data/lib/simplyrets.rb~ +0 -85
  38. data/lib/simplyrets/configuration.rb +0 -25
  39. data/lib/simplyrets/request.rb +0 -205
  40. data/lib/simplyrets/response.rb +0 -70
  41. data/lib/simplyrets/version.rb +0 -4
  42. data/models/agent.rb +0 -39
  43. data/models/contactinformation.rb +0 -36
  44. data/models/geographicdata.rb +0 -43
  45. data/models/listing.rb +0 -95
  46. data/models/mlsinformation.rb +0 -35
  47. data/models/office.rb +0 -39
  48. data/models/property.rb +0 -84
  49. data/models/school.rb +0 -27
  50. data/models/streetaddress.rb +0 -47
  51. data/models/tax.rb +0 -28
  52. data/pkg/simplyrets-0.1.gem +0 -0
@@ -0,0 +1,213 @@
1
+ require 'uri'
2
+ require 'typhoeus'
3
+
4
+ module SimplyRetsClient
5
+ module SimplyRets
6
+ class Request
7
+ attr_accessor :host, :path, :format, :params, :body, :http_method, :headers, :form_params, :auth_names, :response
8
+
9
+ # All requests must have an HTTP method and a path
10
+ # Optionals parameters are :params, :headers, :body, :format, :host
11
+ def initialize(http_method, path, attributes = {})
12
+ @http_method = http_method.to_sym.downcase
13
+ @path = path
14
+
15
+ attributes.each { |name, value| send "#{name}=", value }
16
+
17
+ @format ||= SimplyRets.configuration.format
18
+ @params ||= {}
19
+
20
+ # Apply default headers
21
+ @headers = SimplyRets.configuration.default_headers.merge(@headers || {})
22
+
23
+ # Stick in the auth token if there is one
24
+ if SimplyRets.authenticated?
25
+ @headers.merge!({:auth_token => SimplyRets.configuration.auth_token})
26
+ end
27
+
28
+ update_params_for_auth!
29
+
30
+ end
31
+
32
+
33
+ # Update hearder and query params based on authentication settings.
34
+ def update_params_for_auth!
35
+ (@auth_names || []).each do |auth_name|
36
+ case auth_name
37
+ when 'basicAuth'
38
+ @headers ||= {}
39
+ http_auth_header = 'Basic ' + ["#{SimplyRets.configuration.username}:#{SimplyRets.configuration.password}"].pack('m').delete("\r\n")
40
+ @headers['Authorization'] = http_auth_header
41
+
42
+ end
43
+ end
44
+ end
45
+
46
+
47
+ # Get API key (with prefix if set).
48
+ # @param [String] param_name the parameter name of API key auth
49
+ def get_api_key_with_prefix(param_name)
50
+ if SimplyRets.configuration.api_key_prefix[param_name]
51
+ "#{SimplyRets.configuration.api_key_prefix[param_name]} #{SimplyRets.configuration.api_key[param_name]}"
52
+ else
53
+ SimplyRets.configuration.api_key[param_name]
54
+ end
55
+ end
56
+
57
+ # Construct the request URL.
58
+ def url(options = {})
59
+ _path = self.interpreted_path
60
+ _path = "/#{_path}" unless _path.start_with?('/')
61
+ "#{SimplyRets.configuration.scheme}://#{SimplyRets.configuration.host}#{_path}"
62
+ end
63
+
64
+ # Iterate over the params hash, injecting any path values into the path string
65
+ # e.g. /word.{format}/{word}/entries => /word.json/cat/entries
66
+ def interpreted_path
67
+ p = self.path.dup
68
+
69
+ # Stick a .{format} placeholder into the path if there isn't
70
+ # one already or an actual format like json or xml
71
+ # e.g. /words/blah => /words.{format}/blah
72
+ if SimplyRets.configuration.inject_format
73
+ unless ['.json', '.xml', '{format}'].any? {|s| p.downcase.include? s }
74
+ p = p.sub(/^(\/?\w+)/, "\\1.#{format}")
75
+ end
76
+ end
77
+
78
+ # Stick a .{format} placeholder on the end of the path if there isn't
79
+ # one already or an actual format like json or xml
80
+ # e.g. /words/blah => /words/blah.{format}
81
+ if SimplyRets.configuration.force_ending_format
82
+ unless ['.json', '.xml', '{format}'].any? {|s| p.downcase.include? s }
83
+ p = "#{p}.#{format}"
84
+ end
85
+ end
86
+
87
+ p = p.sub("{format}", self.format.to_s)
88
+
89
+ URI.encode [SimplyRets.configuration.base_path, p].join("/").gsub(/\/+/, '/')
90
+ end
91
+
92
+ # If body is an object, JSONify it before making the actual request.
93
+ # For form parameters, remove empty value
94
+ def outgoing_body
95
+ # http form
96
+ if headers['Content-Type'] == 'application/x-www-form-urlencoded'
97
+ data = form_params.dup
98
+ data.each do |key, value|
99
+ data[key] = value.to_s if value && !value.is_a?(File) # remove emtpy form parameter
100
+ end
101
+ elsif @body # http body is JSON
102
+ data = @body.is_a?(String) ? @body : @body.to_json
103
+ else
104
+ data = nil
105
+ end
106
+
107
+ if SimplyRets.configuration.debug
108
+ SimplyRets.logger.debug "HTTP request body param ~BEGIN~\n#{data}\n~END~\n"
109
+ end
110
+
111
+ data
112
+ end
113
+
114
+ def make
115
+ request_options = {
116
+ :method => self.http_method,
117
+ :headers => self.headers,
118
+ :params => self.params,
119
+ :ssl_verifypeer => SimplyRets.configuration.verify_ssl,
120
+ :cainfo => SimplyRets.configuration.ssl_ca_cert,
121
+ :verbose => SimplyRets.configuration.debug
122
+ }
123
+
124
+ if [:post, :patch, :put, :delete].include?(self.http_method)
125
+ request_options.update :body => self.outgoing_body
126
+ end
127
+
128
+ raw = Typhoeus::Request.new(self.url, request_options).run
129
+
130
+ @response = Response.new(raw)
131
+
132
+ if SimplyRets.configuration.debug
133
+ SimplyRets.logger.debug "HTTP response body ~BEGIN~\n#{@response.body}\n~END~\n"
134
+ end
135
+
136
+ # record as last response
137
+ SimplyRets.last_response = @response
138
+
139
+ unless @response.success?
140
+ fail ApiError.new(:code => @response.code,
141
+ :response_headers => @response.headers,
142
+ :response_body => @response.body),
143
+ @response.status_message
144
+ end
145
+
146
+ @response
147
+ end
148
+
149
+ def response_code_pretty
150
+ return unless @response
151
+ @response.code.to_s
152
+ end
153
+
154
+ def response_headers_pretty
155
+ return unless @response
156
+ # JSON.pretty_generate(@response.headers).gsub(/\n/, '<br/>') # <- This was for RestClient
157
+ @response.headers.gsub(/\n/, '<br/>') # <- This is for Typhoeus
158
+ end
159
+
160
+ # return 'Accept' based on an array of accept provided
161
+ # @param [Array] header_accept_array Array fo 'Accept'
162
+ # @return String Accept (e.g. application/json)
163
+ def self.select_header_accept header_accept_array
164
+ if header_accept_array.empty?
165
+ return
166
+ elsif header_accept_array.any?{ |s| s.casecmp('application/json')==0 }
167
+ 'application/json' # look for json data by default
168
+ else
169
+ header_accept_array.join(',')
170
+ end
171
+ end
172
+
173
+ # return the content type based on an array of content-type provided
174
+ # @param [Array] content_type_array Array fo content-type
175
+ # @return String Content-Type (e.g. application/json)
176
+ def self.select_header_content_type content_type_array
177
+ if content_type_array.empty?
178
+ 'application/json' # use application/json by default
179
+ elsif content_type_array.any?{ |s| s.casecmp('application/json')==0 }
180
+ 'application/json' # use application/json if it's included
181
+ else
182
+ content_type_array[0]; # otherwise, use the first one
183
+ end
184
+ end
185
+
186
+ # static method to convert object (array, hash, object, etc) to JSON string
187
+ # @param model object to be converted into JSON string
188
+ # @return string JSON string representation of the object
189
+ def self.object_to_http_body model
190
+ return if model.nil?
191
+ _body = nil
192
+ if model.is_a?(Array)
193
+ _body = model.map{|m| object_to_hash(m) }
194
+ else
195
+ _body = object_to_hash(model)
196
+ end
197
+ _body.to_json
198
+ end
199
+
200
+ # static method to convert object(non-array) to hash
201
+ # @param obj object to be converted into JSON string
202
+ # @return string JSON string representation of the object
203
+ def self.object_to_hash obj
204
+ if obj.respond_to?(:to_hash)
205
+ obj.to_hash
206
+ else
207
+ obj
208
+ end
209
+ end
210
+
211
+ end
212
+ end
213
+ end
@@ -0,0 +1,156 @@
1
+ module SimplyRetsClient
2
+ module SimplyRets
3
+ class Response
4
+ require 'json'
5
+ require 'date'
6
+ require 'tempfile'
7
+
8
+ attr_accessor :raw
9
+
10
+ def initialize(raw)
11
+ self.raw = raw
12
+ end
13
+
14
+ def code
15
+ raw.code
16
+ end
17
+
18
+ def status_message
19
+ raw.status_message
20
+ end
21
+
22
+ def body
23
+ raw.body
24
+ end
25
+
26
+ def success?
27
+ raw.success?
28
+ end
29
+
30
+ # Deserialize the raw response body to the given return type.
31
+ #
32
+ # @param [String] return_type some examples: "User", "Array[User]", "Hash[String,Integer]"
33
+ def deserialize(return_type)
34
+ return nil if body.nil? || body.empty?
35
+
36
+ # handle file downloading - save response body into a tmp file and return the File instance
37
+ return download_file if return_type == 'File'
38
+
39
+ # ensuring a default content type
40
+ content_type = raw.headers['Content-Type'] || 'application/json'
41
+
42
+ unless content_type.start_with?('application/json')
43
+ fail "Content-Type is not supported: #{content_type}"
44
+ end
45
+
46
+ begin
47
+ data = JSON.parse("[#{body}]", :symbolize_names => true)[0]
48
+ rescue JSON::ParserError => e
49
+ if %w(String Date DateTime).include?(return_type)
50
+ data = body
51
+ else
52
+ raise e
53
+ end
54
+ end
55
+
56
+ convert_to_type data, return_type
57
+ end
58
+
59
+ # Convert data to the given return type.
60
+ def convert_to_type(data, return_type)
61
+ return nil if data.nil?
62
+ case return_type
63
+ when 'String'
64
+ data.to_s
65
+ when 'Integer'
66
+ data.to_i
67
+ when 'Float'
68
+ data.to_f
69
+ when 'BOOLEAN'
70
+ data == true
71
+ when 'DateTime'
72
+ # parse date time (expecting ISO 8601 format)
73
+ DateTime.parse data
74
+ when 'Date'
75
+ # parse date time (expecting ISO 8601 format)
76
+ Date.parse data
77
+ when 'Object'
78
+ # generic object, return directly
79
+ data
80
+ when /\AArray<(.+)>\z/
81
+ # e.g. Array<Pet>
82
+ sub_type = $1
83
+ data.map {|item| convert_to_type(item, sub_type) }
84
+ when /\AHash\<String, (.+)\>\z/
85
+ # e.g. Hash<String, Integer>
86
+ sub_type = $1
87
+ {}.tap do |hash|
88
+ data.each {|k, v| hash[k] = convert_to_type(v, sub_type) }
89
+ end
90
+ else
91
+ # models, e.g. Pet
92
+ SimplyRetsClient.const_get(return_type).new.tap do |model|
93
+ model.build_from_hash data
94
+ end
95
+ end
96
+ end
97
+
98
+ # Save response body into a file in (the defined) temporary folder, using the filename
99
+ # from the "Content-Disposition" header if provided, otherwise a random filename.
100
+ #
101
+ # @see Configuration#temp_folder_path
102
+ # @return [File] the file downloaded
103
+ def download_file
104
+ tmp_file = Tempfile.new '', SimplyRets.configuration.temp_folder_path
105
+ content_disposition = raw.headers['Content-Disposition']
106
+ if content_disposition
107
+ filename = content_disposition[/filename=['"]?([^'"\s]+)['"]?/, 1]
108
+ path = File.join File.dirname(tmp_file), filename
109
+ else
110
+ path = tmp_file.path
111
+ end
112
+ # close and delete temp file
113
+ tmp_file.close!
114
+
115
+ File.open(path, 'w') { |file| file.write(raw.body) }
116
+ SimplyRets.logger.info "File written to #{path}. Please move the file to a proper folder for further processing and delete the temp afterwards"
117
+ return File.new(path)
118
+ end
119
+
120
+ # `headers_hash` is a Typhoeus-specific extension of Hash,
121
+ # so simplify it back into a regular old Hash.
122
+ def headers
123
+ h = {}
124
+ raw.headers_hash.each {|k,v| h[k] = v }
125
+ h
126
+ end
127
+
128
+ # Extract the response format from the header hash
129
+ # e.g. {'Content-Type' => 'application/json'}
130
+ def format
131
+ headers['Content-Type'].split("/").last.downcase
132
+ end
133
+
134
+ def json?
135
+ format == 'json'
136
+ end
137
+
138
+ def xml?
139
+ format == 'xml'
140
+ end
141
+
142
+ def pretty_body
143
+ return unless body
144
+ if format == 'json'
145
+ JSON.pretty_generate(JSON.parse(body)).gsub(/\n/, '<br/>')
146
+ else
147
+ body
148
+ end
149
+ end
150
+
151
+ def pretty_headers
152
+ JSON.pretty_generate(headers).gsub(/\n/, '<br/>')
153
+ end
154
+ end
155
+ end
156
+ end
@@ -0,0 +1,5 @@
1
+ module SimplyRetsClient
2
+ module SimplyRets
3
+ VERSION = "1.0.0"
4
+ end
5
+ end
@@ -1,25 +1,32 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
  $:.push File.expand_path("../lib", __FILE__)
3
- $:.push File.expand_path("../models", __FILE__)
4
- require "simplyrets/version"
3
+ require "simplyrets/simplyrets/version"
5
4
 
6
5
  Gem::Specification.new do |s|
6
+
7
7
  s.name = "simplyrets"
8
- s.version = SimplyRets::VERSION
8
+ s.version = SimplyRetsClient::SimplyRets::VERSION
9
9
  s.platform = Gem::Platform::RUBY
10
10
  s.authors = ["Christopher Reichert", "Cody Reichert"]
11
11
  s.email = ["christopher@simplyrets.com", "cody@simplyrets.com"]
12
12
  s.homepage = "https://simplyrets.com"
13
13
  s.summary = %q{SimplyRETS Ruby SDK}
14
14
  s.description = %q{This gem provides a SimplyRETS SDK for creating real estate software with RETS data}
15
+ s.license = "MIT"
15
16
 
16
- s.add_dependency 'typhoeus', '>=0.2.1'
17
- s.add_dependency 'addressable', '>=2.3.4'
18
- s.add_dependency 'json', '>=1.8'
17
+ s.add_runtime_dependency 'typhoeus', '~> 0.2', '>= 0.2.1'
18
+ s.add_runtime_dependency 'json', '~> 1.4', '>= 1.4.6'
19
19
 
20
- s.add_development_dependency 'rake'
21
- s.add_development_dependency 'bundler'
20
+ s.add_development_dependency 'rspec', '~> 3.2', '>= 3.2.0'
21
+ s.add_development_dependency 'vcr', '~> 2.9', '>= 2.9.3'
22
+ s.add_development_dependency 'webmock', '~> 1.6', '>= 1.6.2'
23
+ s.add_development_dependency 'autotest', '~> 4.4', '>= 4.4.6'
24
+ s.add_development_dependency 'autotest-rails-pure', '~> 4.1', '>= 4.1.2'
25
+ s.add_development_dependency 'autotest-growl', '~> 0.2', '>= 0.2.16'
26
+ s.add_development_dependency 'autotest-fsevent', '~> 0.2', '>= 0.2.10'
22
27
 
23
28
  s.files = `find *`.split("\n").uniq.sort.select{|f| !f.empty? }
24
- s.require_paths = ["lib", "models"]
29
+ #s.test_files = `find spec/*`.split("\n")
30
+ s.executables = []
31
+ s.require_paths = ["lib"]
25
32
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: simplyrets
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.1'
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Christopher Reichert
@@ -9,12 +9,15 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-03-23 00:00:00.000000000 Z
12
+ date: 2015-09-15 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: typhoeus
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
+ - - "~>"
19
+ - !ruby/object:Gem::Version
20
+ version: '0.2'
18
21
  - - ">="
19
22
  - !ruby/object:Gem::Version
20
23
  version: 0.2.1
@@ -22,65 +25,172 @@ dependencies:
22
25
  prerelease: false
23
26
  version_requirements: !ruby/object:Gem::Requirement
24
27
  requirements:
28
+ - - "~>"
29
+ - !ruby/object:Gem::Version
30
+ version: '0.2'
25
31
  - - ">="
26
32
  - !ruby/object:Gem::Version
27
33
  version: 0.2.1
28
34
  - !ruby/object:Gem::Dependency
29
- name: addressable
35
+ name: json
30
36
  requirement: !ruby/object:Gem::Requirement
31
37
  requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.4'
32
41
  - - ">="
33
42
  - !ruby/object:Gem::Version
34
- version: 2.3.4
43
+ version: 1.4.6
35
44
  type: :runtime
36
45
  prerelease: false
37
46
  version_requirements: !ruby/object:Gem::Requirement
38
47
  requirements:
48
+ - - "~>"
49
+ - !ruby/object:Gem::Version
50
+ version: '1.4'
39
51
  - - ">="
40
52
  - !ruby/object:Gem::Version
41
- version: 2.3.4
53
+ version: 1.4.6
42
54
  - !ruby/object:Gem::Dependency
43
- name: json
55
+ name: rspec
44
56
  requirement: !ruby/object:Gem::Requirement
45
57
  requirements:
58
+ - - "~>"
59
+ - !ruby/object:Gem::Version
60
+ version: '3.2'
46
61
  - - ">="
47
62
  - !ruby/object:Gem::Version
48
- version: '1.8'
49
- type: :runtime
63
+ version: 3.2.0
64
+ type: :development
65
+ prerelease: false
66
+ version_requirements: !ruby/object:Gem::Requirement
67
+ requirements:
68
+ - - "~>"
69
+ - !ruby/object:Gem::Version
70
+ version: '3.2'
71
+ - - ">="
72
+ - !ruby/object:Gem::Version
73
+ version: 3.2.0
74
+ - !ruby/object:Gem::Dependency
75
+ name: vcr
76
+ requirement: !ruby/object:Gem::Requirement
77
+ requirements:
78
+ - - "~>"
79
+ - !ruby/object:Gem::Version
80
+ version: '2.9'
81
+ - - ">="
82
+ - !ruby/object:Gem::Version
83
+ version: 2.9.3
84
+ type: :development
85
+ prerelease: false
86
+ version_requirements: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - "~>"
89
+ - !ruby/object:Gem::Version
90
+ version: '2.9'
91
+ - - ">="
92
+ - !ruby/object:Gem::Version
93
+ version: 2.9.3
94
+ - !ruby/object:Gem::Dependency
95
+ name: webmock
96
+ requirement: !ruby/object:Gem::Requirement
97
+ requirements:
98
+ - - "~>"
99
+ - !ruby/object:Gem::Version
100
+ version: '1.6'
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: 1.6.2
104
+ type: :development
50
105
  prerelease: false
51
106
  version_requirements: !ruby/object:Gem::Requirement
52
107
  requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '1.6'
53
111
  - - ">="
54
112
  - !ruby/object:Gem::Version
55
- version: '1.8'
113
+ version: 1.6.2
56
114
  - !ruby/object:Gem::Dependency
57
- name: rake
115
+ name: autotest
58
116
  requirement: !ruby/object:Gem::Requirement
59
117
  requirements:
118
+ - - "~>"
119
+ - !ruby/object:Gem::Version
120
+ version: '4.4'
60
121
  - - ">="
61
122
  - !ruby/object:Gem::Version
62
- version: '0'
123
+ version: 4.4.6
63
124
  type: :development
64
125
  prerelease: false
65
126
  version_requirements: !ruby/object:Gem::Requirement
66
127
  requirements:
128
+ - - "~>"
129
+ - !ruby/object:Gem::Version
130
+ version: '4.4'
67
131
  - - ">="
68
132
  - !ruby/object:Gem::Version
69
- version: '0'
133
+ version: 4.4.6
70
134
  - !ruby/object:Gem::Dependency
71
- name: bundler
135
+ name: autotest-rails-pure
72
136
  requirement: !ruby/object:Gem::Requirement
73
137
  requirements:
138
+ - - "~>"
139
+ - !ruby/object:Gem::Version
140
+ version: '4.1'
74
141
  - - ">="
75
142
  - !ruby/object:Gem::Version
76
- version: '0'
143
+ version: 4.1.2
77
144
  type: :development
78
145
  prerelease: false
79
146
  version_requirements: !ruby/object:Gem::Requirement
80
147
  requirements:
148
+ - - "~>"
149
+ - !ruby/object:Gem::Version
150
+ version: '4.1'
151
+ - - ">="
152
+ - !ruby/object:Gem::Version
153
+ version: 4.1.2
154
+ - !ruby/object:Gem::Dependency
155
+ name: autotest-growl
156
+ requirement: !ruby/object:Gem::Requirement
157
+ requirements:
158
+ - - "~>"
159
+ - !ruby/object:Gem::Version
160
+ version: '0.2'
161
+ - - ">="
162
+ - !ruby/object:Gem::Version
163
+ version: 0.2.16
164
+ type: :development
165
+ prerelease: false
166
+ version_requirements: !ruby/object:Gem::Requirement
167
+ requirements:
168
+ - - "~>"
169
+ - !ruby/object:Gem::Version
170
+ version: '0.2'
171
+ - - ">="
172
+ - !ruby/object:Gem::Version
173
+ version: 0.2.16
174
+ - !ruby/object:Gem::Dependency
175
+ name: autotest-fsevent
176
+ requirement: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - "~>"
179
+ - !ruby/object:Gem::Version
180
+ version: '0.2'
181
+ - - ">="
182
+ - !ruby/object:Gem::Version
183
+ version: 0.2.10
184
+ type: :development
185
+ prerelease: false
186
+ version_requirements: !ruby/object:Gem::Requirement
187
+ requirements:
188
+ - - "~>"
189
+ - !ruby/object:Gem::Version
190
+ version: '0.2'
81
191
  - - ">="
82
192
  - !ruby/object:Gem::Version
83
- version: '0'
193
+ version: 0.2.10
84
194
  description: This gem provides a SimplyRETS SDK for creating real estate software
85
195
  with RETS data
86
196
  email:
@@ -90,41 +200,48 @@ executables: []
90
200
  extensions: []
91
201
  extra_rdoc_files: []
92
202
  files:
93
- - "#example.rb#"
94
203
  - Gemfile
95
204
  - Gemfile.lock
96
205
  - LICENSE
97
206
  - README.org
98
207
  - Rakefile
99
208
  - example.rb
100
- - lib/monkey.rb
101
- - lib/properties_api.rb
102
209
  - lib/simplyrets.rb
103
- - lib/simplyrets.rb~
104
- - lib/simplyrets/configuration.rb
105
- - lib/simplyrets/request.rb
106
- - lib/simplyrets/response.rb
107
- - lib/simplyrets/version.rb
108
- - models/agent.rb
109
- - models/contactinformation.rb
110
- - models/geographicdata.rb
111
- - models/listing.rb
112
- - models/mlsinformation.rb
113
- - models/office.rb
114
- - models/property.rb
115
- - models/school.rb
116
- - models/streetaddress.rb
117
- - models/tax.rb
118
- - pkg/simplyrets-0.1.gem
210
+ - lib/simplyrets/#listing.rb#
211
+ - lib/simplyrets/api/default_api.rb
212
+ - lib/simplyrets/listing.rb~
213
+ - lib/simplyrets/models/agent.rb
214
+ - lib/simplyrets/models/base_object.rb
215
+ - lib/simplyrets/models/broker.rb
216
+ - lib/simplyrets/models/contact_information.rb
217
+ - lib/simplyrets/models/error.rb
218
+ - lib/simplyrets/models/geographic_data.rb
219
+ - lib/simplyrets/models/listing.rb
220
+ - lib/simplyrets/models/listing.rb~
221
+ - lib/simplyrets/models/mls_information.rb
222
+ - lib/simplyrets/models/office.rb
223
+ - lib/simplyrets/models/open_house.rb
224
+ - lib/simplyrets/models/parking.rb
225
+ - lib/simplyrets/models/property.rb
226
+ - lib/simplyrets/models/sales.rb
227
+ - lib/simplyrets/models/school.rb
228
+ - lib/simplyrets/models/street_address.rb
229
+ - lib/simplyrets/models/tax.rb
230
+ - lib/simplyrets/simplyrets.rb
231
+ - lib/simplyrets/simplyrets/api_error.rb
232
+ - lib/simplyrets/simplyrets/configuration.rb
233
+ - lib/simplyrets/simplyrets/request.rb
234
+ - lib/simplyrets/simplyrets/response.rb
235
+ - lib/simplyrets/simplyrets/version.rb
119
236
  - simplyrets.gemspec
120
237
  homepage: https://simplyrets.com
121
- licenses: []
238
+ licenses:
239
+ - MIT
122
240
  metadata: {}
123
241
  post_install_message:
124
242
  rdoc_options: []
125
243
  require_paths:
126
244
  - lib
127
- - models
128
245
  required_ruby_version: !ruby/object:Gem::Requirement
129
246
  requirements:
130
247
  - - ">="