spark_api 1.6.3 → 2.0.1
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.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/VERSION +1 -1
- data/lib/spark_api/authentication/oauth2_impl/cli_provider.rb +5 -5
- data/lib/spark_api/authentication/oauth2_impl/faraday_middleware.rb +2 -2
- data/lib/spark_api/configuration/yaml.rb +1 -1
- data/lib/spark_api/configuration.rb +5 -5
- data/lib/spark_api/connection.rb +3 -6
- data/lib/spark_api/faraday_middleware.rb +4 -16
- data/lib/spark_api/request.rb +16 -1
- data/lib/spark_api/reso_faraday_middleware.rb +1 -8
- data/spec/spec_helper.rb +1 -1
- data/spec/unit/spark_api/configuration/yaml_spec.rb +2 -2
- data/spec/unit/spark_api/configuration_spec.rb +6 -7
- data/spec/unit/spark_api/faraday_middleware_spec.rb +0 -49
- data/spec/unit/spark_api/multi_client_spec.rb +1 -1
- data/spec/unit/spark_api/request_spec.rb +10 -2
- metadata +200 -206
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 7851c708d86ee3e4e8163208a82df7c3324b3e74bffe946f9835fd2ed1239956
|
|
4
|
+
data.tar.gz: 4e5e264d9171f59937ea86faf990f5da95b1d41db4c4c2061f3a5b83c7f8085e
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 8e8f11e72f6cd4156d31e7d51e10936213402e751dda09c9788e673a6469a76fb217554cd2b35daf2f4349485fbb8fd8ac94e21948bf39156b671ef5341ecfeb
|
|
7
|
+
data.tar.gz: 05ea289076fc911908aeaa5b130ca361eb46290c89baa8a4dade37b2dc8cf318a822748dc3b86c4652f10e1037c68c7994df7cf5484c4639ea20b835b4a3c948
|
data/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Spark API
|
|
2
2
|
=====================
|
|
3
|
-

|
|
3
|
+

|
|
4
4
|
|
|
5
5
|
A Ruby wrapper for the Spark REST API. Loosely based on ActiveResource to provide models to interact with remote services.
|
|
6
6
|
|
data/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
2.0.1
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
require "highline"
|
|
2
|
-
|
|
3
1
|
module SparkApi
|
|
4
2
|
module Authentication
|
|
5
3
|
module OAuth2Impl
|
|
@@ -18,9 +16,11 @@ module SparkApi
|
|
|
18
16
|
def redirect(url)
|
|
19
17
|
puts "Missing OAuth2 session, redirecting..."
|
|
20
18
|
puts "Please visit #{url}, login as a user, and paste the authorization code here:"
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
19
|
+
puts "Authorization code?"
|
|
20
|
+
raw_code = gets.strip
|
|
21
|
+
|
|
22
|
+
unless raw_code.match?(/^\w+$/)
|
|
23
|
+
raise "Invalid authorization code. Please try again."
|
|
24
24
|
end
|
|
25
25
|
end
|
|
26
26
|
|
|
@@ -6,7 +6,7 @@ module SparkApi
|
|
|
6
6
|
|
|
7
7
|
#==OAuth2 Faraday response middleware
|
|
8
8
|
# HTTP Response after filter to package oauth2 responses and bubble up basic api errors.
|
|
9
|
-
class FaradayMiddleware < Faraday::
|
|
9
|
+
class FaradayMiddleware < Faraday::Middleware
|
|
10
10
|
|
|
11
11
|
def initialize(app)
|
|
12
12
|
super(app)
|
|
@@ -42,7 +42,7 @@ module SparkApi
|
|
|
42
42
|
|
|
43
43
|
#==OAuth2 Faraday response middleware
|
|
44
44
|
# HTTP Response after filter to package oauth2 responses and bubble up basic api errors.
|
|
45
|
-
class SparkbarFaradayMiddleware < Faraday::
|
|
45
|
+
class SparkbarFaradayMiddleware < Faraday::Middleware
|
|
46
46
|
|
|
47
47
|
def initialize(app)
|
|
48
48
|
super(app)
|
|
@@ -9,9 +9,9 @@ module SparkApi
|
|
|
9
9
|
end
|
|
10
10
|
|
|
11
11
|
# valid configuration options
|
|
12
|
-
VALID_OPTION_KEYS = [:api_key, :api_secret, :api_user, :endpoint,
|
|
13
|
-
:user_agent, :version, :ssl, :ssl_verify, :oauth2_provider, :authentication_mode,
|
|
14
|
-
:auth_endpoint, :callback, :
|
|
12
|
+
VALID_OPTION_KEYS = [:api_key, :api_secret, :api_user, :endpoint,
|
|
13
|
+
:user_agent, :version, :ssl, :ssl_verify, :oauth2_provider, :authentication_mode,
|
|
14
|
+
:auth_endpoint, :callback, :timeout, :middleware, :dictionary_version, :request_id_chain, :user_ip_address, :verbose].freeze
|
|
15
15
|
OAUTH2_KEYS = [:authorization_uri, :access_uri, :client_id, :client_secret,
|
|
16
16
|
# Requirements for authorization_code grant type
|
|
17
17
|
:redirect_uri,
|
|
@@ -41,12 +41,12 @@ module SparkApi
|
|
|
41
41
|
DEFAULT_SSL = true
|
|
42
42
|
DEFAULT_SSL_VERIFY = true
|
|
43
43
|
DEFAULT_OAUTH2 = nil
|
|
44
|
-
DEFAULT_COMPRESS = false
|
|
45
44
|
DEFAULT_TIMEOUT = 5 # seconds
|
|
46
45
|
DEFAULT_MIDDLEWARE = 'spark_api'
|
|
47
46
|
DEFAULT_DICTIONARY_VERSION = nil
|
|
48
47
|
DEFAULT_REQUEST_ID_CHAIN = nil
|
|
49
48
|
DEFAULT_USER_IP_ADDRESS = nil
|
|
49
|
+
DEFAULT_VERBOSE = false
|
|
50
50
|
|
|
51
51
|
X_SPARK_API_USER_AGENT = "X-SparkApi-User-Agent"
|
|
52
52
|
X_USER_IP_ADDRESS = "X-User-IP-Address"
|
|
@@ -79,12 +79,12 @@ module SparkApi
|
|
|
79
79
|
self.ssl = DEFAULT_SSL
|
|
80
80
|
self.ssl_verify = DEFAULT_SSL_VERIFY
|
|
81
81
|
self.version = DEFAULT_VERSION
|
|
82
|
-
self.compress = DEFAULT_COMPRESS
|
|
83
82
|
self.timeout = DEFAULT_TIMEOUT
|
|
84
83
|
self.middleware = DEFAULT_MIDDLEWARE
|
|
85
84
|
self.dictionary_version = DEFAULT_DICTIONARY_VERSION
|
|
86
85
|
self.request_id_chain = DEFAULT_REQUEST_ID_CHAIN
|
|
87
86
|
self.user_ip_address = DEFAULT_USER_IP_ADDRESS
|
|
87
|
+
self.verbose = DEFAULT_VERBOSE
|
|
88
88
|
self
|
|
89
89
|
end
|
|
90
90
|
end
|
data/lib/spark_api/connection.rb
CHANGED
|
@@ -10,7 +10,6 @@ module SparkApi
|
|
|
10
10
|
HTTP_SCHEME = 'http:'
|
|
11
11
|
HTTPS_SCHEME = 'https:'
|
|
12
12
|
ACCEPT_ENCODING = 'Accept-Encoding'
|
|
13
|
-
COMPRESS_ACCEPT_ENCODING = 'gzip, deflate'
|
|
14
13
|
X_REQUEST_ID_CHAIN = 'X-Request-Id-Chain'
|
|
15
14
|
MIME_JSON = 'application/json'
|
|
16
15
|
MIME_RESO = 'application/json, application/xml'
|
|
@@ -27,10 +26,6 @@ module SparkApi
|
|
|
27
26
|
opts[:url] = @endpoint.sub REG_HTTPS, HTTP_SCHEME
|
|
28
27
|
end
|
|
29
28
|
|
|
30
|
-
if self.compress
|
|
31
|
-
opts[:headers][ACCEPT_ENCODING] = COMPRESS_ACCEPT_ENCODING
|
|
32
|
-
end
|
|
33
|
-
|
|
34
29
|
if request_id_chain
|
|
35
30
|
opts[:headers][X_REQUEST_ID_CHAIN] = request_id_chain
|
|
36
31
|
end
|
|
@@ -40,7 +35,9 @@ module SparkApi
|
|
|
40
35
|
conn.options[:timeout] = self.timeout
|
|
41
36
|
conn.adapter Faraday.default_adapter
|
|
42
37
|
end
|
|
43
|
-
|
|
38
|
+
if self.verbose
|
|
39
|
+
SparkApi.logger.debug { "Connection: #{conn.inspect}" }
|
|
40
|
+
end
|
|
44
41
|
conn
|
|
45
42
|
end
|
|
46
43
|
|
|
@@ -5,7 +5,7 @@ require 'zlib'
|
|
|
5
5
|
module SparkApi
|
|
6
6
|
#=Spark API Faraday middleware
|
|
7
7
|
# HTTP Response after filter to package api responses and bubble up basic api errors.
|
|
8
|
-
class FaradayMiddleware < Faraday::
|
|
8
|
+
class FaradayMiddleware < Faraday::Middleware
|
|
9
9
|
include SparkApi::PaginateHelper
|
|
10
10
|
|
|
11
11
|
def initialize(app)
|
|
@@ -15,10 +15,10 @@ module SparkApi
|
|
|
15
15
|
# Handles pretty much all the api response parsing and error handling. All responses that
|
|
16
16
|
# indicate a failure will raise a SparkApi::ClientError exception
|
|
17
17
|
def on_complete(env)
|
|
18
|
-
env[:body] = decompress_body(env)
|
|
19
|
-
|
|
20
18
|
body = MultiJson.decode(env[:body])
|
|
21
|
-
SparkApi.
|
|
19
|
+
if SparkApi.verbose
|
|
20
|
+
SparkApi.logger.debug{ "Response Body: #{body.inspect}" }
|
|
21
|
+
end
|
|
22
22
|
unless body.is_a?(Hash) && body.key?("D")
|
|
23
23
|
raise InvalidResponse, "The server response could not be understood"
|
|
24
24
|
end
|
|
@@ -80,18 +80,6 @@ module SparkApi
|
|
|
80
80
|
env[:body] = results
|
|
81
81
|
end
|
|
82
82
|
|
|
83
|
-
def decompress_body(env)
|
|
84
|
-
encoding = env[:response_headers]['content-encoding'].to_s.downcase
|
|
85
|
-
|
|
86
|
-
if encoding == 'gzip'
|
|
87
|
-
env[:body] = Zlib::GzipReader.new(StringIO.new(env[:body])).read
|
|
88
|
-
elsif encoding == 'deflate'
|
|
89
|
-
env[:body] = Zlib::Inflate.inflate(env[:body])
|
|
90
|
-
end
|
|
91
|
-
|
|
92
|
-
env[:body]
|
|
93
|
-
end
|
|
94
|
-
|
|
95
83
|
private
|
|
96
84
|
|
|
97
85
|
def http_method_override_request?(env)
|
data/lib/spark_api/request.rb
CHANGED
|
@@ -42,6 +42,19 @@ module SparkApi
|
|
|
42
42
|
request(:put, path, body, options)
|
|
43
43
|
end
|
|
44
44
|
|
|
45
|
+
# Perform an HTTP PATCH request
|
|
46
|
+
#
|
|
47
|
+
# * path - Path of an api resource, excluding version and endpoint (domain) information
|
|
48
|
+
# * body - Hash for patch body data
|
|
49
|
+
# * options - Resource request options as specified being supported via and api resource
|
|
50
|
+
# :returns:
|
|
51
|
+
# Hash of the json results as documented in the api.
|
|
52
|
+
# :raises:
|
|
53
|
+
# SparkApi::ClientError or subclass if the request failed.
|
|
54
|
+
def patch(path, body = nil, options={})
|
|
55
|
+
request(:patch, path, body, options)
|
|
56
|
+
end
|
|
57
|
+
|
|
45
58
|
# Perform an HTTP DELETE request
|
|
46
59
|
#
|
|
47
60
|
# * path - Path of an api resource, excluding version and endpoint (domain) information
|
|
@@ -93,7 +106,9 @@ module SparkApi
|
|
|
93
106
|
response = authenticator.request(method, request_path, nil, request_opts)
|
|
94
107
|
else
|
|
95
108
|
post_data = process_request_body(body)
|
|
96
|
-
|
|
109
|
+
if self.verbose
|
|
110
|
+
SparkApi.logger.debug { "#{method.to_s.upcase} Data: #{post_data}" }
|
|
111
|
+
end
|
|
97
112
|
response = authenticator.request(method, request_path, post_data, request_opts)
|
|
98
113
|
end
|
|
99
114
|
request_time = Time.now - start_time
|
|
@@ -1,14 +1,9 @@
|
|
|
1
1
|
|
|
2
2
|
module SparkApi
|
|
3
|
-
|
|
4
3
|
class ResoFaradayMiddleware < FaradayMiddleware
|
|
5
|
-
|
|
6
4
|
def on_complete(env)
|
|
7
|
-
|
|
8
|
-
body = decompress_body(env)
|
|
9
|
-
|
|
10
5
|
begin
|
|
11
|
-
body = MultiJson.decode(body)
|
|
6
|
+
body = MultiJson.decode(env[:body])
|
|
12
7
|
|
|
13
8
|
if body["D"]
|
|
14
9
|
super(env)
|
|
@@ -21,9 +16,7 @@ module SparkApi
|
|
|
21
16
|
# some minor format verification
|
|
22
17
|
raise e if body.strip[/\A<\?xml/].nil?
|
|
23
18
|
end
|
|
24
|
-
|
|
25
19
|
end
|
|
26
|
-
|
|
27
20
|
end
|
|
28
21
|
|
|
29
22
|
Faraday::Response.register_middleware :reso_api => ResoFaradayMiddleware
|
data/spec/spec_helper.rb
CHANGED
|
@@ -27,9 +27,9 @@ describe SparkApi::Configuration::YamlConfig, "Yaml Config" do
|
|
|
27
27
|
end
|
|
28
28
|
it "should raise an error for a bad configuration" do
|
|
29
29
|
allow(subject).to receive(:env){ {} }
|
|
30
|
-
expect { subject.load_file("spec/config/spark_api/some_random_key.yml")}.to raise_error
|
|
30
|
+
expect { subject.load_file("spec/config/spark_api/some_random_key.yml")}.to raise_error(Errno::ENOENT)
|
|
31
31
|
allow(subject).to receive(:env){ {"RAILS_ENV" => "fake_env"} }
|
|
32
|
-
expect { subject.load_file(api_file)}.to raise_error
|
|
32
|
+
expect { subject.load_file(api_file)}.to raise_error(NoMethodError)
|
|
33
33
|
end
|
|
34
34
|
end
|
|
35
35
|
describe "oauth2" do
|
|
@@ -16,6 +16,7 @@ describe SparkApi::Client, "Client config" do
|
|
|
16
16
|
expect(SparkApi.request_id_chain).to be_nil
|
|
17
17
|
expect(SparkApi.user_ip_address).to be_nil
|
|
18
18
|
expect(SparkApi.middleware).to eq('spark_api')
|
|
19
|
+
expect(SparkApi.verbose).to be false
|
|
19
20
|
end
|
|
20
21
|
end
|
|
21
22
|
|
|
@@ -28,7 +29,8 @@ describe SparkApi::Client, "Client config" do
|
|
|
28
29
|
:endpoint => "http://api.wade.dev.fbsdata.com",
|
|
29
30
|
:timeout => 15,
|
|
30
31
|
:request_id_chain => 'foobar',
|
|
31
|
-
:user_ip_address => 'barfoo'
|
|
32
|
+
:user_ip_address => 'barfoo',
|
|
33
|
+
:verbose => true)
|
|
32
34
|
|
|
33
35
|
expect(client.api_key).to match("key_of_wade")
|
|
34
36
|
expect(client.api_secret).to match("TopSecret")
|
|
@@ -39,6 +41,7 @@ describe SparkApi::Client, "Client config" do
|
|
|
39
41
|
expect(client.timeout).to eq(15)
|
|
40
42
|
expect(client.request_id_chain).to eq('foobar')
|
|
41
43
|
expect(client.user_ip_address).to eq('barfoo')
|
|
44
|
+
expect(client.verbose).to be true
|
|
42
45
|
end
|
|
43
46
|
|
|
44
47
|
it "should allow unverified ssl certificates when verification is off" do
|
|
@@ -101,6 +104,7 @@ describe SparkApi::Client, "Client config" do
|
|
|
101
104
|
config.endpoint = "test.api.sparkapi.com"
|
|
102
105
|
config.user_agent = "my useragent"
|
|
103
106
|
config.timeout = 15
|
|
107
|
+
config.verbose = true
|
|
104
108
|
end
|
|
105
109
|
|
|
106
110
|
expect(SparkApi.api_key).to match("my_key")
|
|
@@ -111,6 +115,7 @@ describe SparkApi::Client, "Client config" do
|
|
|
111
115
|
expect(SparkApi.user_agent).to match("my useragent")
|
|
112
116
|
expect(SparkApi.oauth2_enabled?()).to be false
|
|
113
117
|
expect(SparkApi.timeout).to eq(15)
|
|
118
|
+
expect(SparkApi.verbose).to be true
|
|
114
119
|
end
|
|
115
120
|
|
|
116
121
|
it "should correctly set up the client for oauth2" do
|
|
@@ -223,12 +228,6 @@ describe SparkApi::Client, "Client config" do
|
|
|
223
228
|
expect(c.connection.headers["Accept-Encoding"]).to be_nil
|
|
224
229
|
end
|
|
225
230
|
|
|
226
|
-
it "should set gzip header if compress option is set" do
|
|
227
|
-
c = SparkApi::Client.new(:endpoint => "https://api.sparkapi.com",
|
|
228
|
-
:compress => true)
|
|
229
|
-
expect(c.connection.headers["Accept-Encoding"]).to eq("gzip, deflate")
|
|
230
|
-
end
|
|
231
|
-
|
|
232
231
|
it "should set default timeout of 5 seconds" do
|
|
233
232
|
c = SparkApi::Client.new(:endpoint => "https://sparkapi.com")
|
|
234
233
|
expect(c.connection.options[:timeout]).to eq(5)
|
|
@@ -97,55 +97,6 @@ describe SparkApi do
|
|
|
97
97
|
expect(e.errors).to eq("Some errors and stuff.")
|
|
98
98
|
}
|
|
99
99
|
end
|
|
100
|
-
|
|
101
|
-
end
|
|
102
|
-
|
|
103
|
-
describe "#decompress_body" do
|
|
104
|
-
let(:middleware) do
|
|
105
|
-
SparkApi::FaradayMiddleware.new(SparkApi)
|
|
106
|
-
end
|
|
107
|
-
|
|
108
|
-
it "should leave the body along if content-encoding not set" do
|
|
109
|
-
env = {
|
|
110
|
-
:body => "UNCOMPRESSED",
|
|
111
|
-
:response_headers => {}
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
expect(middleware.decompress_body(env)).to eq("UNCOMPRESSED")
|
|
115
|
-
end
|
|
116
|
-
|
|
117
|
-
it "should unzip gzipped data" do
|
|
118
|
-
bod = "OUTPUT BODY"
|
|
119
|
-
|
|
120
|
-
out = StringIO.new
|
|
121
|
-
gz = Zlib::GzipWriter.new(out)
|
|
122
|
-
gz.write bod
|
|
123
|
-
gz.close
|
|
124
|
-
|
|
125
|
-
env = {
|
|
126
|
-
:body => out.string,
|
|
127
|
-
:response_headers => {
|
|
128
|
-
'content-encoding' => 'gzip'
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
expect(middleware.decompress_body(env)).to eq(bod)
|
|
133
|
-
end
|
|
134
|
-
|
|
135
|
-
it "should inflate deflated data" do
|
|
136
|
-
bod = "INFLATED BODY"
|
|
137
|
-
deflated_bod = Zlib::Deflate.deflate(bod)
|
|
138
|
-
|
|
139
|
-
env = {
|
|
140
|
-
:body => deflated_bod,
|
|
141
|
-
:response_headers => {
|
|
142
|
-
'content-encoding' => 'deflate'
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
expect(middleware.decompress_body(env)).to eq(bod)
|
|
147
|
-
end
|
|
148
100
|
end
|
|
149
|
-
|
|
150
101
|
end
|
|
151
102
|
|
|
@@ -120,8 +120,11 @@ describe SparkApi do
|
|
|
120
120
|
}
|
|
121
121
|
stub.put('/v1/arraydata?ApiSig=SignedToken&AuthToken=1234', '{"D":["A","B","C"]}') {[200, {}, '{"D": {
|
|
122
122
|
"Success": true}}']}
|
|
123
|
+
stub.patch('/v1/contacts/1000?ApiSig=SignedToken&AuthToken=1234', '{"D":{"Contacts":[{"DisplayName":"WLMCEWENS Contact","PrimaryEmail":"wlmcewen789@fbsdata.com"}]}}') { [200, {}, '{"D": {
|
|
124
|
+
"Success": true}}']
|
|
125
|
+
}
|
|
123
126
|
stub.delete('/v1/contacts/1000?ApiSig=SignedToken&AuthToken=1234') { [200, {}, '{"D": {
|
|
124
|
-
"Success": true}}']
|
|
127
|
+
"Success": true}}']
|
|
125
128
|
}
|
|
126
129
|
# Other MISC requests
|
|
127
130
|
stub.post('/v1/stringdata?ApiSig=SignedToken&AuthToken=1234', 'I am a lonely String!') { [200, {}, '{"D": {
|
|
@@ -214,6 +217,11 @@ describe SparkApi do
|
|
|
214
217
|
expect(subject.put('/contacts/1000', data).size).to be(0)
|
|
215
218
|
# No validation here, if no error is raised, everything is hunky dory
|
|
216
219
|
end
|
|
220
|
+
it "should patch to a service" do
|
|
221
|
+
data = {"Contacts" => [{"DisplayName"=>"WLMCEWENS Contact","PrimaryEmail"=>"wlmcewen789@fbsdata.com"}]}
|
|
222
|
+
expect(subject.patch('/contacts/1000', data).size).to be(0)
|
|
223
|
+
# No validation here, if no error is raised, everything is hunky dory
|
|
224
|
+
end
|
|
217
225
|
it "should delete from a service" do
|
|
218
226
|
# This is a hypothetical unsupported service action at this time
|
|
219
227
|
expect(subject.delete('/contacts/1000').size).to be(0)
|
|
@@ -223,7 +231,7 @@ describe SparkApi do
|
|
|
223
231
|
it "should escape a path correctly" do
|
|
224
232
|
expect(subject.get('/test path with spaces').length).to eq(0)
|
|
225
233
|
# now try this with an already escaped path. Kaboom!
|
|
226
|
-
expect { subject.get('/test%20path%20with%20spaces') }.to raise_error()
|
|
234
|
+
expect { subject.get('/test%20path%20with%20spaces') }.to raise_error(Faraday::Adapter::Test::Stubs::NotFound)
|
|
227
235
|
end
|
|
228
236
|
|
|
229
237
|
it "post data should support non json data" do
|
metadata
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: spark_api
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version:
|
|
4
|
+
version: 2.0.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Brandon Hornseth
|
|
8
8
|
- Wade McEwen
|
|
9
|
-
autorequire:
|
|
9
|
+
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date:
|
|
12
|
+
date: 2026-05-06 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: addressable
|
|
@@ -31,32 +31,26 @@ dependencies:
|
|
|
31
31
|
requirements:
|
|
32
32
|
- - ">="
|
|
33
33
|
- !ruby/object:Gem::Version
|
|
34
|
-
version: 0.
|
|
35
|
-
- - "<"
|
|
36
|
-
- !ruby/object:Gem::Version
|
|
37
|
-
version: '2.0'
|
|
34
|
+
version: 2.0.0
|
|
38
35
|
type: :runtime
|
|
39
36
|
prerelease: false
|
|
40
37
|
version_requirements: !ruby/object:Gem::Requirement
|
|
41
38
|
requirements:
|
|
42
39
|
- - ">="
|
|
43
40
|
- !ruby/object:Gem::Version
|
|
44
|
-
version: 0.
|
|
45
|
-
- - "<"
|
|
46
|
-
- !ruby/object:Gem::Version
|
|
47
|
-
version: '2.0'
|
|
41
|
+
version: 2.0.0
|
|
48
42
|
- !ruby/object:Gem::Dependency
|
|
49
43
|
name: multi_json
|
|
50
44
|
requirement: !ruby/object:Gem::Requirement
|
|
51
45
|
requirements:
|
|
52
|
-
- - "
|
|
46
|
+
- - ">"
|
|
53
47
|
- !ruby/object:Gem::Version
|
|
54
48
|
version: '1.0'
|
|
55
49
|
type: :runtime
|
|
56
50
|
prerelease: false
|
|
57
51
|
version_requirements: !ruby/object:Gem::Requirement
|
|
58
52
|
requirements:
|
|
59
|
-
- - "
|
|
53
|
+
- - ">"
|
|
60
54
|
- !ruby/object:Gem::Version
|
|
61
55
|
version: '1.0'
|
|
62
56
|
- !ruby/object:Gem::Dependency
|
|
@@ -74,12 +68,12 @@ dependencies:
|
|
|
74
68
|
- !ruby/object:Gem::Version
|
|
75
69
|
version: '1.7'
|
|
76
70
|
- !ruby/object:Gem::Dependency
|
|
77
|
-
name:
|
|
71
|
+
name: will_paginate
|
|
78
72
|
requirement: !ruby/object:Gem::Requirement
|
|
79
73
|
requirements:
|
|
80
74
|
- - ">="
|
|
81
75
|
- !ruby/object:Gem::Version
|
|
82
|
-
version:
|
|
76
|
+
version: 3.0.pre2
|
|
83
77
|
- - "<"
|
|
84
78
|
- !ruby/object:Gem::Version
|
|
85
79
|
version: 4.0.0
|
|
@@ -89,46 +83,40 @@ dependencies:
|
|
|
89
83
|
requirements:
|
|
90
84
|
- - ">="
|
|
91
85
|
- !ruby/object:Gem::Version
|
|
92
|
-
version:
|
|
86
|
+
version: 3.0.pre2
|
|
93
87
|
- - "<"
|
|
94
88
|
- !ruby/object:Gem::Version
|
|
95
89
|
version: 4.0.0
|
|
96
90
|
- !ruby/object:Gem::Dependency
|
|
97
|
-
name:
|
|
91
|
+
name: rake
|
|
98
92
|
requirement: !ruby/object:Gem::Requirement
|
|
99
93
|
requirements:
|
|
100
94
|
- - ">="
|
|
101
95
|
- !ruby/object:Gem::Version
|
|
102
|
-
version:
|
|
103
|
-
|
|
104
|
-
- !ruby/object:Gem::Version
|
|
105
|
-
version: 4.0.0
|
|
106
|
-
type: :runtime
|
|
96
|
+
version: '0'
|
|
97
|
+
type: :development
|
|
107
98
|
prerelease: false
|
|
108
99
|
version_requirements: !ruby/object:Gem::Requirement
|
|
109
100
|
requirements:
|
|
110
101
|
- - ">="
|
|
111
102
|
- !ruby/object:Gem::Version
|
|
112
|
-
version:
|
|
113
|
-
- - "<"
|
|
114
|
-
- !ruby/object:Gem::Version
|
|
115
|
-
version: 4.0.0
|
|
103
|
+
version: '0'
|
|
116
104
|
- !ruby/object:Gem::Dependency
|
|
117
|
-
name:
|
|
105
|
+
name: rspec
|
|
118
106
|
requirement: !ruby/object:Gem::Requirement
|
|
119
107
|
requirements:
|
|
120
108
|
- - ">="
|
|
121
109
|
- !ruby/object:Gem::Version
|
|
122
|
-
version: '
|
|
123
|
-
type: :
|
|
110
|
+
version: '0'
|
|
111
|
+
type: :development
|
|
124
112
|
prerelease: false
|
|
125
113
|
version_requirements: !ruby/object:Gem::Requirement
|
|
126
114
|
requirements:
|
|
127
115
|
- - ">="
|
|
128
116
|
- !ruby/object:Gem::Version
|
|
129
|
-
version: '
|
|
117
|
+
version: '0'
|
|
130
118
|
- !ruby/object:Gem::Dependency
|
|
131
|
-
name:
|
|
119
|
+
name: webmock
|
|
132
120
|
requirement: !ruby/object:Gem::Requirement
|
|
133
121
|
requirements:
|
|
134
122
|
- - ">="
|
|
@@ -142,21 +130,21 @@ dependencies:
|
|
|
142
130
|
- !ruby/object:Gem::Version
|
|
143
131
|
version: '0'
|
|
144
132
|
- !ruby/object:Gem::Dependency
|
|
145
|
-
name:
|
|
133
|
+
name: multi_json
|
|
146
134
|
requirement: !ruby/object:Gem::Requirement
|
|
147
135
|
requirements:
|
|
148
|
-
- - "
|
|
136
|
+
- - "~>"
|
|
149
137
|
- !ruby/object:Gem::Version
|
|
150
|
-
version:
|
|
138
|
+
version: 1.15.0
|
|
151
139
|
type: :development
|
|
152
140
|
prerelease: false
|
|
153
141
|
version_requirements: !ruby/object:Gem::Requirement
|
|
154
142
|
requirements:
|
|
155
|
-
- - "
|
|
143
|
+
- - "~>"
|
|
156
144
|
- !ruby/object:Gem::Version
|
|
157
|
-
version:
|
|
145
|
+
version: 1.15.0
|
|
158
146
|
- !ruby/object:Gem::Dependency
|
|
159
|
-
name:
|
|
147
|
+
name: rexml
|
|
160
148
|
requirement: !ruby/object:Gem::Requirement
|
|
161
149
|
requirements:
|
|
162
150
|
- - ">="
|
|
@@ -170,7 +158,7 @@ dependencies:
|
|
|
170
158
|
- !ruby/object:Gem::Version
|
|
171
159
|
version: '0'
|
|
172
160
|
- !ruby/object:Gem::Dependency
|
|
173
|
-
name:
|
|
161
|
+
name: typhoeus
|
|
174
162
|
requirement: !ruby/object:Gem::Requirement
|
|
175
163
|
requirements:
|
|
176
164
|
- - ">="
|
|
@@ -184,7 +172,7 @@ dependencies:
|
|
|
184
172
|
- !ruby/object:Gem::Version
|
|
185
173
|
version: '0'
|
|
186
174
|
- !ruby/object:Gem::Dependency
|
|
187
|
-
name:
|
|
175
|
+
name: ci_reporter_rspec
|
|
188
176
|
requirement: !ruby/object:Gem::Requirement
|
|
189
177
|
requirements:
|
|
190
178
|
- - ">="
|
|
@@ -198,19 +186,25 @@ dependencies:
|
|
|
198
186
|
- !ruby/object:Gem::Version
|
|
199
187
|
version: '0'
|
|
200
188
|
- !ruby/object:Gem::Dependency
|
|
201
|
-
name:
|
|
189
|
+
name: builder
|
|
202
190
|
requirement: !ruby/object:Gem::Requirement
|
|
203
191
|
requirements:
|
|
204
192
|
- - ">="
|
|
205
193
|
- !ruby/object:Gem::Version
|
|
206
|
-
version:
|
|
194
|
+
version: 2.1.2
|
|
195
|
+
- - "<"
|
|
196
|
+
- !ruby/object:Gem::Version
|
|
197
|
+
version: 4.0.0
|
|
207
198
|
type: :development
|
|
208
199
|
prerelease: false
|
|
209
200
|
version_requirements: !ruby/object:Gem::Requirement
|
|
210
201
|
requirements:
|
|
211
202
|
- - ">="
|
|
212
203
|
- !ruby/object:Gem::Version
|
|
213
|
-
version:
|
|
204
|
+
version: 2.1.2
|
|
205
|
+
- - "<"
|
|
206
|
+
- !ruby/object:Gem::Version
|
|
207
|
+
version: 4.0.0
|
|
214
208
|
- !ruby/object:Gem::Dependency
|
|
215
209
|
name: simplecov-rcov
|
|
216
210
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -541,7 +535,7 @@ homepage: https://github.com/sparkapi/spark_api
|
|
|
541
535
|
licenses:
|
|
542
536
|
- Apache 2.0
|
|
543
537
|
metadata: {}
|
|
544
|
-
post_install_message:
|
|
538
|
+
post_install_message:
|
|
545
539
|
rdoc_options: []
|
|
546
540
|
require_paths:
|
|
547
541
|
- lib
|
|
@@ -556,208 +550,208 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
556
550
|
- !ruby/object:Gem::Version
|
|
557
551
|
version: '1.8'
|
|
558
552
|
requirements: []
|
|
559
|
-
rubygems_version: 3.
|
|
560
|
-
signing_key:
|
|
553
|
+
rubygems_version: 3.5.22
|
|
554
|
+
signing_key:
|
|
561
555
|
specification_version: 4
|
|
562
556
|
summary: A library for interacting with the Spark web services.
|
|
563
557
|
test_files:
|
|
564
|
-
- spec/fixtures/sharedlinks/success.json
|
|
565
|
-
- spec/fixtures/listing_carts/listing_cart.json
|
|
566
|
-
- spec/fixtures/listing_carts/new_portal_cart.json
|
|
567
|
-
- spec/fixtures/listing_carts/put_name.json
|
|
568
|
-
- spec/fixtures/listing_carts/add_listings.json
|
|
569
|
-
- spec/fixtures/listing_carts/add_listing_post.json
|
|
570
|
-
- spec/fixtures/listing_carts/add_portal_cart_listings_post.json
|
|
571
|
-
- spec/fixtures/listing_carts/add_portal_cart_listings.json
|
|
572
|
-
- spec/fixtures/listing_carts/put_ids.json
|
|
573
|
-
- spec/fixtures/listing_carts/post_portal_cart.json
|
|
574
|
-
- spec/fixtures/listing_carts/add_listings_post.json
|
|
575
|
-
- spec/fixtures/listing_carts/add_listing.json
|
|
576
|
-
- spec/fixtures/listing_carts/remove_listing.json
|
|
577
|
-
- spec/fixtures/listing_carts/empty.json
|
|
578
|
-
- spec/fixtures/listing_carts/put.json
|
|
579
|
-
- spec/fixtures/listing_carts/post.json
|
|
580
|
-
- spec/fixtures/listing_carts/listing_portal_cart.json
|
|
581
|
-
- spec/fixtures/listing_carts/new.json
|
|
582
|
-
- spec/fixtures/newsfeeds/get.json
|
|
583
|
-
- spec/fixtures/newsfeeds/inactive.json
|
|
584
|
-
- spec/fixtures/newsfeeds/meta.json
|
|
585
|
-
- spec/fixtures/errors/failure_with_msg.json
|
|
586
|
-
- spec/fixtures/errors/expired.json
|
|
587
|
-
- spec/fixtures/errors/failure.json
|
|
588
|
-
- spec/fixtures/errors/failure_with_constraint.json
|
|
589
|
-
- spec/fixtures/messages/new_empty.json
|
|
590
|
-
- spec/fixtures/messages/count.json
|
|
591
|
-
- spec/fixtures/messages/get.json
|
|
592
|
-
- spec/fixtures/messages/new_with_recipients.json
|
|
593
|
-
- spec/fixtures/messages/post.json
|
|
594
|
-
- spec/fixtures/messages/new.json
|
|
595
|
-
- spec/fixtures/sorts/get.json
|
|
596
|
-
- spec/fixtures/fields/order_a.json
|
|
597
|
-
- spec/fixtures/fields/settings.json
|
|
598
|
-
- spec/fixtures/fields/order.json
|
|
599
|
-
- spec/fixtures/notifications/new_empty.json
|
|
600
|
-
- spec/fixtures/notifications/unread.json
|
|
601
|
-
- spec/fixtures/notifications/mark_read.json
|
|
602
|
-
- spec/fixtures/notifications/notifications.json
|
|
603
|
-
- spec/fixtures/notifications/post.json
|
|
604
|
-
- spec/fixtures/notifications/new.json
|
|
605
|
-
- spec/fixtures/activities/get.json
|
|
606
|
-
- spec/fixtures/property_types/property_types.json
|
|
607
|
-
- spec/fixtures/listing_meta_translations/get.json
|
|
608
|
-
- spec/fixtures/no_results.json
|
|
609
|
-
- spec/fixtures/comments/get.json
|
|
610
|
-
- spec/fixtures/comments/post.json
|
|
611
|
-
- spec/fixtures/comments/new.json
|
|
612
|
-
- spec/fixtures/count.json
|
|
613
|
-
- spec/fixtures/oauth2/error.json
|
|
614
|
-
- spec/fixtures/oauth2/access.json
|
|
615
|
-
- spec/fixtures/oauth2/access_with_refresh.json
|
|
616
|
-
- spec/fixtures/oauth2/access_with_old_refresh.json
|
|
617
|
-
- spec/fixtures/oauth2/refresh_body.json
|
|
618
|
-
- spec/fixtures/oauth2/authorization_code_body.json
|
|
619
|
-
- spec/fixtures/oauth2/password_body.json
|
|
620
|
-
- spec/fixtures/standardfields/nearby.json
|
|
621
|
-
- spec/fixtures/standardfields/standardfields.json
|
|
622
|
-
- spec/fixtures/standardfields/city.json
|
|
623
|
-
- spec/fixtures/standardfields/stateorprovince.json
|
|
624
|
-
- spec/fixtures/accounts/office.json
|
|
625
|
-
- spec/fixtures/accounts/my_put.json
|
|
626
558
|
- spec/fixtures/accounts/all.json
|
|
627
|
-
- spec/fixtures/accounts/my_portal.json
|
|
628
559
|
- spec/fixtures/accounts/my.json
|
|
629
|
-
- spec/fixtures/accounts/
|
|
560
|
+
- spec/fixtures/accounts/my_portal.json
|
|
561
|
+
- spec/fixtures/accounts/my_put.json
|
|
630
562
|
- spec/fixtures/accounts/my_save.json
|
|
631
|
-
- spec/fixtures/
|
|
632
|
-
- spec/fixtures/
|
|
633
|
-
- spec/fixtures/
|
|
634
|
-
- spec/fixtures/
|
|
635
|
-
- spec/fixtures/
|
|
636
|
-
- spec/fixtures/
|
|
563
|
+
- spec/fixtures/accounts/office.json
|
|
564
|
+
- spec/fixtures/accounts/password_save.json
|
|
565
|
+
- spec/fixtures/activities/get.json
|
|
566
|
+
- spec/fixtures/authentication_failure.json
|
|
567
|
+
- spec/fixtures/base.json
|
|
568
|
+
- spec/fixtures/comments/get.json
|
|
569
|
+
- spec/fixtures/comments/new.json
|
|
570
|
+
- spec/fixtures/comments/post.json
|
|
571
|
+
- spec/fixtures/contacts/contacts.json
|
|
572
|
+
- spec/fixtures/contacts/my.json
|
|
573
|
+
- spec/fixtures/contacts/new.json
|
|
637
574
|
- spec/fixtures/contacts/new_empty.json
|
|
638
575
|
- spec/fixtures/contacts/new_notify.json
|
|
639
|
-
- spec/fixtures/contacts/
|
|
576
|
+
- spec/fixtures/contacts/post.json
|
|
640
577
|
- spec/fixtures/contacts/tags.json
|
|
641
578
|
- spec/fixtures/contacts/vow_accounts/edit.json
|
|
642
579
|
- spec/fixtures/contacts/vow_accounts/get.json
|
|
643
|
-
- spec/fixtures/contacts/vow_accounts/post.json
|
|
644
580
|
- spec/fixtures/contacts/vow_accounts/new.json
|
|
645
|
-
- spec/fixtures/contacts/
|
|
646
|
-
- spec/fixtures/
|
|
647
|
-
- spec/fixtures/
|
|
648
|
-
- spec/fixtures/
|
|
649
|
-
- spec/fixtures/
|
|
650
|
-
- spec/fixtures/
|
|
581
|
+
- spec/fixtures/contacts/vow_accounts/post.json
|
|
582
|
+
- spec/fixtures/count.json
|
|
583
|
+
- spec/fixtures/empty.json
|
|
584
|
+
- spec/fixtures/errors/expired.json
|
|
585
|
+
- spec/fixtures/errors/failure.json
|
|
586
|
+
- spec/fixtures/errors/failure_with_constraint.json
|
|
587
|
+
- spec/fixtures/errors/failure_with_msg.json
|
|
588
|
+
- spec/fixtures/fields/order.json
|
|
589
|
+
- spec/fixtures/fields/order_a.json
|
|
590
|
+
- spec/fixtures/fields/settings.json
|
|
591
|
+
- spec/fixtures/finders.json
|
|
592
|
+
- spec/fixtures/generic_delete.json
|
|
593
|
+
- spec/fixtures/generic_failure.json
|
|
594
|
+
- spec/fixtures/idx_links/get.json
|
|
595
|
+
- spec/fixtures/listing_carts/add_listing.json
|
|
596
|
+
- spec/fixtures/listing_carts/add_listing_post.json
|
|
597
|
+
- spec/fixtures/listing_carts/add_listings.json
|
|
598
|
+
- spec/fixtures/listing_carts/add_listings_post.json
|
|
599
|
+
- spec/fixtures/listing_carts/add_portal_cart_listings.json
|
|
600
|
+
- spec/fixtures/listing_carts/add_portal_cart_listings_post.json
|
|
601
|
+
- spec/fixtures/listing_carts/empty.json
|
|
602
|
+
- spec/fixtures/listing_carts/listing_cart.json
|
|
603
|
+
- spec/fixtures/listing_carts/listing_portal_cart.json
|
|
604
|
+
- spec/fixtures/listing_carts/new.json
|
|
605
|
+
- spec/fixtures/listing_carts/new_portal_cart.json
|
|
606
|
+
- spec/fixtures/listing_carts/post.json
|
|
607
|
+
- spec/fixtures/listing_carts/post_portal_cart.json
|
|
608
|
+
- spec/fixtures/listing_carts/put.json
|
|
609
|
+
- spec/fixtures/listing_carts/put_ids.json
|
|
610
|
+
- spec/fixtures/listing_carts/put_name.json
|
|
611
|
+
- spec/fixtures/listing_carts/remove_listing.json
|
|
612
|
+
- spec/fixtures/listing_meta_translations/get.json
|
|
613
|
+
- spec/fixtures/listings/constraints.json
|
|
651
614
|
- spec/fixtures/listings/constraints_with_pagination.json
|
|
652
|
-
- spec/fixtures/listings/floplans_index.json
|
|
653
615
|
- spec/fixtures/listings/document_index.json
|
|
654
|
-
- spec/fixtures/listings/
|
|
655
|
-
- spec/fixtures/listings/reorder_photo.json
|
|
656
|
-
- spec/fixtures/listings/shared_listing_get.json
|
|
657
|
-
- spec/fixtures/listings/photos/rollback.json
|
|
658
|
-
- spec/fixtures/listings/photos/rotate.json
|
|
659
|
-
- spec/fixtures/listings/photos/index.json
|
|
660
|
-
- spec/fixtures/listings/photos/batch_delete.json
|
|
661
|
-
- spec/fixtures/listings/photos/post.json
|
|
662
|
-
- spec/fixtures/listings/photos/new.json
|
|
663
|
-
- spec/fixtures/listings/with_supplement.json
|
|
664
|
-
- spec/fixtures/listings/with_documents.json
|
|
665
|
-
- spec/fixtures/listings/with_rental_calendar.json
|
|
666
|
-
- spec/fixtures/listings/with_photos.json
|
|
667
|
-
- spec/fixtures/listings/rental_calendar.json
|
|
668
|
-
- spec/fixtures/listings/put_reorder_photo.json
|
|
669
|
-
- spec/fixtures/listings/videos_index.json
|
|
616
|
+
- spec/fixtures/listings/floplans_index.json
|
|
670
617
|
- spec/fixtures/listings/multiple.json
|
|
671
|
-
- spec/fixtures/listings/
|
|
672
|
-
- spec/fixtures/listings/virtual_tours_index.json
|
|
618
|
+
- spec/fixtures/listings/no_subresources.json
|
|
673
619
|
- spec/fixtures/listings/open_houses.json
|
|
674
|
-
- spec/fixtures/listings/
|
|
620
|
+
- spec/fixtures/listings/photos/batch_delete.json
|
|
621
|
+
- spec/fixtures/listings/photos/index.json
|
|
622
|
+
- spec/fixtures/listings/photos/new.json
|
|
623
|
+
- spec/fixtures/listings/photos/post.json
|
|
624
|
+
- spec/fixtures/listings/photos/rollback.json
|
|
625
|
+
- spec/fixtures/listings/photos/rotate.json
|
|
675
626
|
- spec/fixtures/listings/put.json
|
|
627
|
+
- spec/fixtures/listings/put_expiration_date.json
|
|
628
|
+
- spec/fixtures/listings/put_reorder_photo.json
|
|
629
|
+
- spec/fixtures/listings/rental_calendar.json
|
|
630
|
+
- spec/fixtures/listings/reorder_photo.json
|
|
631
|
+
- spec/fixtures/listings/shared_listing_get.json
|
|
676
632
|
- spec/fixtures/listings/shared_listing_new.json
|
|
677
|
-
- spec/fixtures/listings/
|
|
633
|
+
- spec/fixtures/listings/shared_listing_post.json
|
|
634
|
+
- spec/fixtures/listings/tour_of_homes.json
|
|
678
635
|
- spec/fixtures/listings/tour_of_homes_search.json
|
|
679
|
-
- spec/fixtures/listings/
|
|
636
|
+
- spec/fixtures/listings/videos_index.json
|
|
637
|
+
- spec/fixtures/listings/virtual_tours_index.json
|
|
638
|
+
- spec/fixtures/listings/with_documents.json
|
|
680
639
|
- spec/fixtures/listings/with_permissions.json
|
|
681
|
-
- spec/fixtures/
|
|
640
|
+
- spec/fixtures/listings/with_photos.json
|
|
641
|
+
- spec/fixtures/listings/with_rental_calendar.json
|
|
642
|
+
- spec/fixtures/listings/with_supplement.json
|
|
643
|
+
- spec/fixtures/listings/with_videos.json
|
|
644
|
+
- spec/fixtures/listings/with_vtour.json
|
|
645
|
+
- spec/fixtures/logo_fbs.png
|
|
646
|
+
- spec/fixtures/messages/count.json
|
|
647
|
+
- spec/fixtures/messages/get.json
|
|
648
|
+
- spec/fixtures/messages/new.json
|
|
649
|
+
- spec/fixtures/messages/new_empty.json
|
|
650
|
+
- spec/fixtures/messages/new_with_recipients.json
|
|
651
|
+
- spec/fixtures/messages/post.json
|
|
652
|
+
- spec/fixtures/newsfeeds/get.json
|
|
653
|
+
- spec/fixtures/newsfeeds/inactive.json
|
|
654
|
+
- spec/fixtures/newsfeeds/meta.json
|
|
655
|
+
- spec/fixtures/no_results.json
|
|
682
656
|
- spec/fixtures/notes/add.json
|
|
657
|
+
- spec/fixtures/notes/agent_shared.json
|
|
683
658
|
- spec/fixtures/notes/agent_shared_empty.json
|
|
684
659
|
- spec/fixtures/notes/new.json
|
|
685
|
-
- spec/fixtures/
|
|
686
|
-
- spec/fixtures/
|
|
660
|
+
- spec/fixtures/notifications/mark_read.json
|
|
661
|
+
- spec/fixtures/notifications/new.json
|
|
662
|
+
- spec/fixtures/notifications/new_empty.json
|
|
663
|
+
- spec/fixtures/notifications/notifications.json
|
|
664
|
+
- spec/fixtures/notifications/post.json
|
|
665
|
+
- spec/fixtures/notifications/unread.json
|
|
666
|
+
- spec/fixtures/oauth2/access.json
|
|
667
|
+
- spec/fixtures/oauth2/access_with_old_refresh.json
|
|
668
|
+
- spec/fixtures/oauth2/access_with_refresh.json
|
|
669
|
+
- spec/fixtures/oauth2/authorization_code_body.json
|
|
670
|
+
- spec/fixtures/oauth2/error.json
|
|
671
|
+
- spec/fixtures/oauth2/password_body.json
|
|
672
|
+
- spec/fixtures/oauth2/refresh_body.json
|
|
673
|
+
- spec/fixtures/oauth2_error.json
|
|
674
|
+
- spec/fixtures/portal/disable.json
|
|
675
|
+
- spec/fixtures/portal/enable.json
|
|
676
|
+
- spec/fixtures/portal/my.json
|
|
677
|
+
- spec/fixtures/portal/my_non_existant.json
|
|
678
|
+
- spec/fixtures/portal/new.json
|
|
679
|
+
- spec/fixtures/portal/post.json
|
|
680
|
+
- spec/fixtures/property_types/property_types.json
|
|
681
|
+
- spec/fixtures/rules/get.json
|
|
687
682
|
- spec/fixtures/saved_searches/get.json
|
|
688
|
-
- spec/fixtures/saved_searches/without_newsfeed.json
|
|
689
|
-
- spec/fixtures/saved_searches/with_inactive_newsfeed.json
|
|
690
|
-
- spec/fixtures/saved_searches/post.json
|
|
691
683
|
- spec/fixtures/saved_searches/get_provided.json
|
|
692
684
|
- spec/fixtures/saved_searches/new.json
|
|
693
|
-
- spec/fixtures/
|
|
694
|
-
- spec/fixtures/
|
|
695
|
-
- spec/fixtures/
|
|
696
|
-
- spec/fixtures/
|
|
697
|
-
- spec/fixtures/
|
|
685
|
+
- spec/fixtures/saved_searches/post.json
|
|
686
|
+
- spec/fixtures/saved_searches/update.json
|
|
687
|
+
- spec/fixtures/saved_searches/with_inactive_newsfeed.json
|
|
688
|
+
- spec/fixtures/saved_searches/with_newsfeed.json
|
|
689
|
+
- spec/fixtures/saved_searches/without_newsfeed.json
|
|
698
690
|
- spec/fixtures/search_templates/quick_searches/get.json
|
|
699
|
-
- spec/fixtures/
|
|
700
|
-
- spec/fixtures/
|
|
701
|
-
- spec/fixtures/
|
|
702
|
-
- spec/fixtures/
|
|
703
|
-
- spec/fixtures/
|
|
704
|
-
- spec/fixtures/
|
|
705
|
-
- spec/
|
|
706
|
-
- spec/
|
|
707
|
-
- spec/unit/spark_api/
|
|
691
|
+
- spec/fixtures/session.json
|
|
692
|
+
- spec/fixtures/sharedlinks/success.json
|
|
693
|
+
- spec/fixtures/sorts/get.json
|
|
694
|
+
- spec/fixtures/standardfields/city.json
|
|
695
|
+
- spec/fixtures/standardfields/nearby.json
|
|
696
|
+
- spec/fixtures/standardfields/standardfields.json
|
|
697
|
+
- spec/fixtures/standardfields/stateorprovince.json
|
|
698
|
+
- spec/fixtures/success.json
|
|
699
|
+
- spec/unit/spark_api/authentication/api_auth_spec.rb
|
|
700
|
+
- spec/unit/spark_api/authentication/base_auth_spec.rb
|
|
701
|
+
- spec/unit/spark_api/authentication/oauth2_impl/faraday_middleware_spec.rb
|
|
702
|
+
- spec/unit/spark_api/authentication/oauth2_impl/grant_type_base_spec.rb
|
|
703
|
+
- spec/unit/spark_api/authentication/oauth2_impl/single_session_provider_spec.rb
|
|
704
|
+
- spec/unit/spark_api/authentication/oauth2_spec.rb
|
|
708
705
|
- spec/unit/spark_api/authentication_spec.rb
|
|
709
|
-
- spec/unit/spark_api/
|
|
710
|
-
- spec/unit/spark_api/
|
|
711
|
-
- spec/unit/spark_api/
|
|
712
|
-
- spec/unit/spark_api/models/photo_spec.rb
|
|
713
|
-
- spec/unit/spark_api/models/portal_spec.rb
|
|
714
|
-
- spec/unit/spark_api/models/finders_spec.rb
|
|
715
|
-
- spec/unit/spark_api/models/subresource_spec.rb
|
|
716
|
-
- spec/unit/spark_api/models/rental_calendar_spec.rb
|
|
717
|
-
- spec/unit/spark_api/models/listing_spec.rb
|
|
706
|
+
- spec/unit/spark_api/configuration/yaml_spec.rb
|
|
707
|
+
- spec/unit/spark_api/configuration_spec.rb
|
|
708
|
+
- spec/unit/spark_api/faraday_middleware_spec.rb
|
|
718
709
|
- spec/unit/spark_api/models/account_report_spec.rb
|
|
719
|
-
- spec/unit/spark_api/models/
|
|
710
|
+
- spec/unit/spark_api/models/account_spec.rb
|
|
720
711
|
- spec/unit/spark_api/models/activity_spec.rb
|
|
721
|
-
- spec/unit/spark_api/models/
|
|
722
|
-
- spec/unit/spark_api/models/shared_link_spec.rb
|
|
723
|
-
- spec/unit/spark_api/models/sort_spec.rb
|
|
724
|
-
- spec/unit/spark_api/models/standard_fields_spec.rb
|
|
725
|
-
- spec/unit/spark_api/models/concerns/savable_spec.rb
|
|
712
|
+
- spec/unit/spark_api/models/base_spec.rb
|
|
726
713
|
- spec/unit/spark_api/models/concerns/destroyable_spec.rb
|
|
727
|
-
- spec/unit/spark_api/models/
|
|
728
|
-
- spec/unit/spark_api/models/property_types_spec.rb
|
|
729
|
-
- spec/unit/spark_api/models/floplan_spec.rb
|
|
730
|
-
- spec/unit/spark_api/models/tour_of_home_spec.rb
|
|
714
|
+
- spec/unit/spark_api/models/concerns/savable_spec.rb
|
|
731
715
|
- spec/unit/spark_api/models/connect_prefs_spec.rb
|
|
732
|
-
- spec/unit/spark_api/models/
|
|
716
|
+
- spec/unit/spark_api/models/constraint_spec.rb
|
|
717
|
+
- spec/unit/spark_api/models/contact_spec.rb
|
|
733
718
|
- spec/unit/spark_api/models/defaultable_spec.rb
|
|
734
|
-
- spec/unit/spark_api/models/
|
|
735
|
-
- spec/unit/spark_api/models/virtual_tour_spec.rb
|
|
736
|
-
- spec/unit/spark_api/models/system_info_spec.rb
|
|
737
|
-
- spec/unit/spark_api/models/saved_search_spec.rb
|
|
738
|
-
- spec/unit/spark_api/models/open_house_spec.rb
|
|
739
|
-
- spec/unit/spark_api/models/account_spec.rb
|
|
740
|
-
- spec/unit/spark_api/models/video_spec.rb
|
|
741
|
-
- spec/unit/spark_api/models/newsfeed_spec.rb
|
|
719
|
+
- spec/unit/spark_api/models/dirty_spec.rb
|
|
742
720
|
- spec/unit/spark_api/models/document_spec.rb
|
|
743
721
|
- spec/unit/spark_api/models/email_link_spec.rb
|
|
744
|
-
- spec/unit/spark_api/models/note_spec.rb
|
|
745
722
|
- spec/unit/spark_api/models/fields_spec.rb
|
|
723
|
+
- spec/unit/spark_api/models/finders_spec.rb
|
|
724
|
+
- spec/unit/spark_api/models/floplan_spec.rb
|
|
725
|
+
- spec/unit/spark_api/models/listing_cart_spec.rb
|
|
726
|
+
- spec/unit/spark_api/models/listing_meta_translations_spec.rb
|
|
727
|
+
- spec/unit/spark_api/models/listing_spec.rb
|
|
728
|
+
- spec/unit/spark_api/models/message_spec.rb
|
|
746
729
|
- spec/unit/spark_api/models/news_feed_meta_spec.rb
|
|
730
|
+
- spec/unit/spark_api/models/newsfeed_spec.rb
|
|
731
|
+
- spec/unit/spark_api/models/note_spec.rb
|
|
747
732
|
- spec/unit/spark_api/models/notification_spec.rb
|
|
748
|
-
- spec/unit/spark_api/models/
|
|
749
|
-
- spec/unit/spark_api/models/
|
|
750
|
-
- spec/unit/spark_api/models/
|
|
751
|
-
- spec/unit/spark_api/
|
|
733
|
+
- spec/unit/spark_api/models/open_house_spec.rb
|
|
734
|
+
- spec/unit/spark_api/models/photo_spec.rb
|
|
735
|
+
- spec/unit/spark_api/models/portal_spec.rb
|
|
736
|
+
- spec/unit/spark_api/models/property_types_spec.rb
|
|
737
|
+
- spec/unit/spark_api/models/rental_calendar_spec.rb
|
|
738
|
+
- spec/unit/spark_api/models/rule_spec.rb
|
|
739
|
+
- spec/unit/spark_api/models/saved_search_spec.rb
|
|
740
|
+
- spec/unit/spark_api/models/search_template/quick_search_spec.rb
|
|
741
|
+
- spec/unit/spark_api/models/shared_link_spec.rb
|
|
742
|
+
- spec/unit/spark_api/models/shared_listing_spec.rb
|
|
743
|
+
- spec/unit/spark_api/models/sort_spec.rb
|
|
744
|
+
- spec/unit/spark_api/models/standard_fields_spec.rb
|
|
745
|
+
- spec/unit/spark_api/models/subresource_spec.rb
|
|
746
|
+
- spec/unit/spark_api/models/system_info_spec.rb
|
|
747
|
+
- spec/unit/spark_api/models/tour_of_home_spec.rb
|
|
748
|
+
- spec/unit/spark_api/models/video_spec.rb
|
|
749
|
+
- spec/unit/spark_api/models/virtual_tour_spec.rb
|
|
750
|
+
- spec/unit/spark_api/models/vow_account_spec.rb
|
|
752
751
|
- spec/unit/spark_api/multi_client_spec.rb
|
|
753
|
-
- spec/unit/spark_api/
|
|
754
|
-
- spec/unit/spark_api/
|
|
755
|
-
- spec/unit/spark_api/
|
|
756
|
-
- spec/unit/spark_api/authentication/oauth2_impl/grant_type_base_spec.rb
|
|
757
|
-
- spec/unit/spark_api/authentication/oauth2_impl/single_session_provider_spec.rb
|
|
758
|
-
- spec/unit/spark_api/authentication/base_auth_spec.rb
|
|
759
|
-
- spec/unit/spark_api/configuration/yaml_spec.rb
|
|
760
|
-
- spec/unit/spark_api/configuration_spec.rb
|
|
752
|
+
- spec/unit/spark_api/options_hash_spec.rb
|
|
753
|
+
- spec/unit/spark_api/paginate_spec.rb
|
|
754
|
+
- spec/unit/spark_api/primary_array_spec.rb
|
|
761
755
|
- spec/unit/spark_api/request_spec.rb
|
|
762
756
|
- spec/unit/spark_api_spec.rb
|
|
763
757
|
- spec/spec_helper.rb
|