spark_api 1.6.0 → 1.6.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: bbd257984db9c6b0321b546eaf34794a8ddd42a0cedb46c284d48305ee1cf5aa
4
- data.tar.gz: 3f2c191759d9ac5df0290d1ed2486cd55be3e11dc94b01ab4d779314aa42219e
3
+ metadata.gz: e315d7b172f1df48cf669a4900fde0367b629dba0fa337b1047d5aeb38c32dfb
4
+ data.tar.gz: cd034a5ea19d67503c5fca449771fa882a1f0b37b673d3f2259f38db0276a12a
5
5
  SHA512:
6
- metadata.gz: e3aaba4e37303375cd7ffc8149b39d2ed9f3cefb36c987f0c7ed2632a9f4881e1040a41fcc1fd7b3ea8e26bc2d05631ccd92d52f163326f1ac398470749e7719
7
- data.tar.gz: a0488169eb021611cb52fc6c75a56d256fcf32963a3923d6bd4ef1b9b7ab4ce25faa7f75e008b3f974bc8c8a6f18868d7f7819a1e6a236bdb4997c8d30c2b97d
6
+ metadata.gz: da7b242dbdeb0dac71a5334a6a26d158ad49a8bc0c835b896b754f4ba4d4da87445c50164406863a8ba23d2f5a99ef6f95c0d08b4cf0b53392243012803289ad
7
+ data.tar.gz: c172948eff245c7ca407fb7a3d73f7634ce43fc1a1f906bdb90a4f73d2b7166eb0f88046beef6f856bab938dc15d4462af6b6150f0059c79e1b27291266d56b0
data/README.md CHANGED
@@ -10,35 +10,76 @@ Documentation
10
10
 
11
11
  For further client documentation, please consult our [wiki](https://github.com/sparkapi/spark_api/wiki).
12
12
 
13
- For full information on the API, see [http://sparkplatform.com/docs/overview/api](http://sparkplatform.com/docs/overview/api)
13
+ For full information on the Spark API, see [http://sparkplatform.com/docs/overview/api](http://sparkplatform.com/docs/overview/api). If you would instead like information on the RESO Web API, see [http://sparkplatform.com/docs/reso/overview](http://sparkplatform.com/docs/reso/overview)
14
14
 
15
15
 
16
16
  Installation
17
17
  ---------
18
18
  gem install spark_api
19
19
 
20
+
21
+ Authentication Types
22
+ --------------
23
+ Authentication is handled transparently by the request framework in the gem, so you should never need to manually make an authentication request. More than one mode of authentication is supported, so the client needs to be configured accordingly.
24
+
25
+ #### [Access Token Authentication](https://github.com/sparkapi/spark_api/wiki/Spark-Authentication) (Preferred)
26
+ Also known as Bearer Token Authentication. If you've been provided a single non-expiring access (bearer) token for the purpose of accessing data on behalf of one or more MLS users, this method of authentication should be used. See "script/access_token_example.rb" for an example.
27
+
28
+ #### [OpenId/OAuth2 Combined Flow](https://github.com/sparkapi/spark_api/wiki/Hybrid-Authentication)
29
+ Authorization mode that separates application and user authentication. This mode requires the end user to be redirected to Spark Platform's openid endpoint in a web browser window. See "script/combined_flow_example.rb" for an example.
30
+
31
+ Read more about Spark Platform's combined flow <a href="http://sparkplatform.com/docs/authentication/openid_oauth2_authentication">here</a>.
32
+
33
+ #### [OAuth2 Authorization](https://github.com/sparkapi/spark_api/wiki/OAuth2-Only-Authentication)
34
+ Authorization mode that separates application and user authentication. This mode requires the end user to be redirected to Spark Platform's auth endpoint in a web browser window. See "script/oauth2_example.rb" for an example.
35
+
36
+ Read more about Spark Platform's OAuth 2 flow <a href="http://sparkplatform.com/docs/authentication/oauth2_authentication">here</a>.
37
+
38
+ #### [Spark API Authentication](https://github.com/sparkapi/spark_api/wiki/Spark-Authentication) (Deprecated)
39
+ Usually supplied for a single user, this authentication mode was our old standard, however, is now deprecated in favor of bearer token authentication. See "script/spark_auth_example.rb" for an example.
40
+
41
+
20
42
  Usage Examples
21
43
  ------------------------
22
-
44
+ #### Accessing the Spark API (Default)
23
45
  ```ruby
24
46
  require 'spark_api'
25
47
  SparkApi.configure do |config|
26
48
  config.endpoint = 'https://sparkapi.com'
27
- # Using Spark API Authentication, refer to the Authentication documentation for OAuth2
28
- config.api_key = 'MY_SPARK_API_KEY'
29
- config.api_secret = 'MY_SPARK_API_SECRET'
49
+ config.authentication_mode = SparkApi::Authentication::OAuth2
50
+ end
51
+ #Non-expiring bearer token auth. See below if you are using a different authentication method.
52
+ SparkApi.client.session = SparkApi::Authentication::OAuthSession.new({ :access_token => "your_bearer_token_here" })
53
+ puts SparkApi.client.get '/system'
54
+ ```
55
+
56
+ #### Accessing the RESO Web API
57
+ ```ruby
58
+ require "spark_api"
59
+
60
+ # set up session and set the client to hit the RESO API endpoints.
61
+ SparkApi.configure do |config|
62
+ config.authentication_mode = SparkApi::Authentication::OAuth2
63
+ config.middleware = :reso_api
30
64
  end
31
- SparkApi.client.get '/my/account'
65
+ #Non-expiring bearer token auth. See below if you are using a different authentication method.
66
+ SparkApi.client.session = SparkApi::Authentication::OAuthSession.new({ :access_token => "your_access_token_here" })
67
+
68
+ puts SparkApi.client.get("/Property", {:$top => 10 })
32
69
  ```
33
70
 
71
+ The examples above utilize access token authentication. For examples using different authentication methods review the wiki and /script folder within this project.
34
72
 
35
73
  #### Interactive Console
36
- Included in the gem is an interactive spark_api console to interact with the api in a manner similar to the rails console. Below is a brief example of interacting with the console:
74
+ Included in the gem is an interactive spark_api console to interact with the api in a manner similar to the rails console. Here are a few examples using various auth methods:
37
75
 
38
- > spark_api --api_key MY_SPARK_API_KEY --api_secret MY_SPARK_API_SECRET
39
- SparkApi> SparkApi.client.get '/my/account'
76
+ Access Token Auth:
77
+
78
+ > spark_api --oauth2
79
+ SparkApi:001:0> SparkApi.client.session = SparkApi::Authentication::OAuthSession.new({ :access_token => "your_access_token_here" })
80
+ SparkApi:002:0> SparkApi.client.get '/my/account'
40
81
 
41
- Using OAuth2 requires different arguments, and is a bit more complicated as it requires a step for logging in through the browser to gain access to the access code for a client_id.
82
+ Standard OAuth2 access is a bit more complicated as it requires a step for logging in through the browser to gain access to the access code for a client_id.
42
83
 
43
84
  > bundle exec spark_api --oauth2 --client_id my_oauth2_client_id --client_secret my_oauth2_client_secret
44
85
  Loading spark_api gem...
@@ -51,13 +92,18 @@ Using OAuth2 requires different arguments, and is a bit more complicated as it r
51
92
  SparkApi:002:0> Account.my.UserType
52
93
  "Member"
53
94
 
95
+ [Spark Auth (deprecated)](http://sparkplatform.com/docs/authentication/spark_api_authentication):
96
+
97
+ > spark_api --api_key MY_SPARK_API_KEY --api_secret MY_SPARK_API_SECRET
98
+ SparkApi> SparkApi.client.get '/my/account'
99
+
54
100
  You can also provide other options from the command line, see "spark_api -h" for more information.
55
101
 
56
102
  #### HTTP Interface
57
103
  The base client provides a bare bones HTTP interface for working with the RESTful Spark API. This is basically a stylized curl interface that handles authentication, error handling, and processes JSON results as Ruby Hashes.
58
104
 
59
105
  ```ruby
60
- SparkApi.client.get "/listings/#{listing_id}", :_expand => "CustomFields"
106
+ SparkApi.client.get "/listings", :_expand => "CustomFields", :_filter => "MlsStatus Eq 'Active'", :_limit => 1
61
107
  SparkApi.client.post "/listings/#{listing_id}/photos", photo_body_hash
62
108
  SparkApi.client.put "/listings/#{listing_id}/photos/#{photo_id}", updated_photo_name_hash
63
109
  SparkApi.client.delete "/listings/#{listing_id}/photos/#{photo_id}"
@@ -81,20 +127,3 @@ JSON Parsing
81
127
  --------------
82
128
  By default, this gem uses the pure ruby json gem for parsing API responses for cross platform compatibility. Projects that include the yajl-ruby gem will see noticeable speed improvements when installed.
83
129
 
84
-
85
- Authentication Types
86
- --------------
87
- Authentication is handled transparently by the request framework in the gem, so you should never need to manually make an authentication request. More than one mode of authentication is supported, so the client needs to be configured accordingly.
88
-
89
- #### [Spark API Authentication](https://github.com/sparkapi/spark_api/wiki/Spark-Authentication) (Default)
90
- Usually supplied for a single user, this authentication mode is the simplest, and is setup as the default. The example usage above demonstrates how to get started using this authentication mode.
91
-
92
- #### [OpenId/OAuth2 Combined Flow](https://github.com/sparkapi/spark_api/wiki/Hybrid-Authentication) (Preferred)
93
- Authorization mode the separates application and user authentication. This mode requires the end user to be redirected to Spark Platform's openid endpoint. See "script/combined_flow_example.rb" for an example.
94
-
95
- Read more about Spark Platform's combined flow <a href="http://sparkplatform.com/docs/authentication/openid_oauth2_authentication">here</a>.
96
-
97
- #### [OAuth2 Authorization](https://github.com/sparkapi/spark_api/wiki/OAuth2-Only-Authentication)
98
- Authorization mode the separates application and user authentication. This mode requires the end user to be redirected to Spark Platform's auth endpoint. See "script/oauth2_example.rb" for an example.
99
-
100
- Read more about Spark Platform's OAuth 2 flow <a href="http://sparkplatform.com/docs/authentication/oauth2_authentication">here</a>.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.6.0
1
+ 1.6.1
@@ -0,0 +1,16 @@
1
+ require "spark_api"
2
+
3
+ SparkApi.configure do |config|
4
+ config.endpoint = 'https://sparkapi.com'
5
+ config.authentication_mode = SparkApi::Authentication::OAuth2
6
+ end
7
+
8
+ #### COPY/PASTE YOUR ACCESS TOKEN WHERE DESIGNATED BELOW
9
+ SparkApi.client.session = SparkApi::Authentication::OAuthSession.new({ :access_token => "your_access_token_here" })
10
+
11
+ client = SparkApi.client
12
+
13
+ list = client.get '/contacts'
14
+ puts "client: #{list.inspect}"
15
+ list = SparkApi::Models::Contact.get
16
+ puts "model: #{list.inspect}"
data/script/bootstrap CHANGED
@@ -2,6 +2,7 @@
2
2
 
3
3
  ruby -v
4
4
  echo "==> Installing gems..."
5
- bundle check --path vendor/bundle 2>&1 > /dev/null || {
6
- bundle install --quiet --path vendor/bundle
5
+ bundle config set path 'vendor/bundle'
6
+ bundle check 2>&1 > /dev/null || {
7
+ bundle install
7
8
  }
data/script/example.rb CHANGED
@@ -10,12 +10,12 @@ require path + '/spark_api'
10
10
  SparkApi.logger.info("Hello!")
11
11
 
12
12
  SparkApi.configure do |config|
13
- config.api_key = "agent_key"
14
- config.api_secret = "agent_secret"
15
- config.version = "v1"
16
- config.endpoint = "https://api.sparkapi.com"
13
+ config.endpoint = 'https://sparkapi.com'
14
+ config.authentication_mode = SparkApi::Authentication::OAuth2
17
15
  end
18
16
 
17
+ SparkApi.client.session = SparkApi::Authentication::OAuthSession.new({ :access_token => "your_access_token_here" })
18
+
19
19
  client = SparkApi.client
20
20
 
21
21
  list = client.get '/contacts'
@@ -1,8 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- # This script demonstrates how to use the RESO Web API with the Ruby client by pulling listings
4
- # and replacing encoded field values with their corresponding human-readable values, which are
5
- # pulled from the XML returned by the RESO metadata endpoint.
3
+ # This script demonstrates how to access the RESO Web API with FBS's Ruby API client.
6
4
 
7
5
  require "spark_api"
8
6
  require "nokogiri"
@@ -12,59 +10,62 @@ SparkApi.configure do |config|
12
10
  config.authentication_mode = SparkApi::Authentication::OAuth2
13
11
  config.middleware = :reso_api
14
12
  end
15
-
16
- SparkApi.client.session = SparkApi::Authentication::OAuthSession.new({ :access_token => "OAUTH2_ACCESS_TOKEN" })
13
+ #### COPY/PASTE YOUR ACCESS TOKEN BELOW
14
+ SparkApi.client.session = SparkApi::Authentication::OAuthSession.new({ :access_token => "your_access_token_here" })
17
15
 
18
16
  # pull metadata from RESO Web API
19
- metadata_res = (SparkApi.client.get("/$metadata", {:$ApiUser => "FLEXMLS_TECH_ID"}) )
17
+ metadata_res = SparkApi.client.get("/$metadata")
20
18
  metadata_xml = Nokogiri::XML(metadata_res).remove_namespaces!
21
19
 
22
- # make an array of fields which need to be checked for readable values
23
- fields_to_lookup = []
24
- metadata_xml.xpath('//Schema/EnumType/@Name').each do |el|
25
- fields_to_lookup << el.to_str
26
- end
20
+ ## make an array of fields which need to be checked for readable values
21
+ ## API now returns decoded field values. This is no longer necessary
22
+ #fields_to_lookup = []
23
+ #metadata_xml.xpath('//Schema/EnumType/@Name').each do |el|
24
+ # fields_to_lookup << el.to_str
25
+ #end
27
26
 
28
27
  # get 25 listings
29
- listings = (SparkApi.client.get("/Property", {:$top => 25, :$ApiUser => "FLEXMLS_TECH_ID"} ))
30
-
31
- listings['value'].each do |listing| # for each listing,
32
- fields_to_lookup.each do |field| # go through the array of fields to be checked.
33
- if !!listing[field] # when one of the fields that needs to be checked exists in a listing,
34
- if listing[field].is_a? String
35
- readable = metadata_xml.xpath( # check for readable value to be swapped in
36
- "//Schema/
37
- EnumType[@Name=\"#{field}\"]/
38
- Member[@Name=\"#{listing[field]}\"]/
39
- Annotation"
40
- ).attr("String")
41
-
42
- # if there is a readable value, swap it in
43
- if !!readable
44
- listing[field] = readable.to_str
45
- end
46
-
47
- elsif listing[field].is_a? Array
48
- readable_arr = []
49
- listing[field].each do |el|
50
- readable = metadata_xml.xpath( # check for readable value to be swapped in
51
- "//Schema/
52
- EnumType[@Name=\"#{field}\"]/
53
- Member[@Name=\"#{el}\"]/
54
- Annotation"
55
- ).attr("String")
56
-
57
- # assemble a new array with readable values and swap it in
58
- if !!readable
59
- readable_arr << readable.to_str
60
- else
61
- readable_arr << el
62
- end
63
- listing[field] = readable_arr
64
- end
65
- end
66
- end
67
- end
68
- end
69
-
28
+ listings = SparkApi.client.get("/Property", {:$top => 25 })
70
29
  puts listings
30
+
31
+ ## API now returns decoded field values. The code below is no longer needed
32
+ #listings['value'].each do |listing| # for each listing,
33
+ # fields_to_lookup.each do |field| # go through the array of fields to be checked.
34
+ # if !!listing[field] # when one of the fields that needs to be checked exists in a listing,
35
+ # if listing[field].is_a? String
36
+ # readable = metadata_xml.xpath( # check for readable value to be swapped in
37
+ # "//Schema/
38
+ # EnumType[@Name=\"#{field}\"]/
39
+ # Member[@Name=\"#{listing[field]}\"]/
40
+ # Annotation"
41
+ # ).attr("String")
42
+ #
43
+ # # if there is a readable value, swap it in
44
+ # if !!readable
45
+ # listing[field] = readable.to_str
46
+ # end
47
+ #
48
+ # elsif listing[field].is_a? Array
49
+ # readable_arr = []
50
+ # listing[field].each do |el|
51
+ # readable = metadata_xml.xpath( # check for readable value to be swapped in
52
+ # "//Schema/
53
+ # EnumType[@Name=\"#{field}\"]/
54
+ # Member[@Name=\"#{el}\"]/
55
+ # Annotation"
56
+ # ).attr("String")
57
+ #
58
+ # # assemble a new array with readable values and swap it in
59
+ # if !!readable
60
+ # readable_arr << readable.to_str
61
+ # else
62
+ # readable_arr << el
63
+ # end
64
+ # listing[field] = readable_arr
65
+ # end
66
+ # end
67
+ # end
68
+ # end
69
+ #end
70
+ #
71
+ #puts listings
@@ -0,0 +1,26 @@
1
+ #!/usr/bin/env ruby
2
+ require "rubygems"
3
+
4
+ Bundler.require(:default, "development") if defined?(Bundler)
5
+
6
+ path = File.expand_path(File.dirname(__FILE__) + "/../lib/")
7
+ $LOAD_PATH.unshift(path) unless $LOAD_PATH.include?(path)
8
+ require path + '/spark_api'
9
+
10
+ SparkApi.logger.info("Hello!")
11
+
12
+ #### COPY/PASTE YOUR API KEY AND SECRET BELOW
13
+ SparkApi.configure do |config|
14
+ config.api_key = "agent_key"
15
+ config.api_secret = "agent_secret"
16
+ config.version = "v1"
17
+ config.endpoint = "https://api.sparkapi.com"
18
+ end
19
+
20
+ client = SparkApi.client
21
+
22
+ list = client.get '/contacts'
23
+ puts "client: #{list.inspect}"
24
+ list = SparkApi::Models::Contact.get
25
+ puts "model: #{list.inspect}"
26
+
@@ -44,8 +44,9 @@ describe Defaultable do
44
44
  end
45
45
 
46
46
  it "passes options to 'default'" do
47
- expect(TestClass).to receive(:default).with(foo: true)
48
- TestClass.find(TestClass::DEFAULT_ID, foo: true)
47
+ args = { foo: true }
48
+ expect(TestClass).to receive(:default).with(args)
49
+ TestClass.find(TestClass::DEFAULT_ID, args)
49
50
  end
50
51
 
51
52
  it "calls Finders.find when given a normal id" do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spark_api
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.6.0
4
+ version: 1.6.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brandon Hornseth
@@ -9,8 +9,22 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2022-01-11 00:00:00.000000000 Z
12
+ date: 2022-10-11 00:00:00.000000000 Z
13
13
  dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: addressable
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - ">="
19
+ - !ruby/object:Gem::Version
20
+ version: '0'
21
+ type: :runtime
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - ">="
26
+ - !ruby/object:Gem::Version
27
+ version: '0'
14
28
  - !ruby/object:Gem::Dependency
15
29
  name: faraday
16
30
  requirement: !ruby/object:Gem::Requirement
@@ -313,6 +327,7 @@ files:
313
327
  - lib/spark_api/reso_faraday_middleware.rb
314
328
  - lib/spark_api/response.rb
315
329
  - lib/spark_api/version.rb
330
+ - script/access_token_example.rb
316
331
  - script/bootstrap
317
332
  - script/ci_build
318
333
  - script/combined_flow_example.rb
@@ -321,6 +336,7 @@ files:
321
336
  - script/oauth2_example.rb
322
337
  - script/release
323
338
  - script/reso_middleware_example.rb
339
+ - script/spark_auth_example.rb
324
340
  - spec/fixtures/accounts/all.json
325
341
  - spec/fixtures/accounts/my.json
326
342
  - spec/fixtures/accounts/my_portal.json
@@ -545,203 +561,203 @@ signing_key:
545
561
  specification_version: 4
546
562
  summary: A library for interacting with the Spark web services.
547
563
  test_files:
548
- - spec/fixtures/fields/order_a.json
549
- - spec/fixtures/fields/settings.json
550
- - spec/fixtures/fields/order.json
551
- - spec/fixtures/errors/failure_with_msg.json
552
- - spec/fixtures/errors/failure.json
553
- - spec/fixtures/errors/expired.json
554
- - spec/fixtures/errors/failure_with_constraint.json
555
- - spec/fixtures/property_types/property_types.json
556
- - spec/fixtures/listing_carts/put.json
564
+ - spec/fixtures/idx_links/get.json
565
+ - spec/fixtures/session.json
566
+ - spec/fixtures/listing_carts/listing_portal_cart.json
567
+ - spec/fixtures/listing_carts/remove_listing.json
557
568
  - spec/fixtures/listing_carts/post.json
558
- - spec/fixtures/listing_carts/put_name.json
559
- - spec/fixtures/listing_carts/add_portal_cart_listings.json
560
- - spec/fixtures/listing_carts/listing_cart.json
561
- - spec/fixtures/listing_carts/new_portal_cart.json
562
569
  - spec/fixtures/listing_carts/put_ids.json
563
- - spec/fixtures/listing_carts/new.json
564
- - spec/fixtures/listing_carts/remove_listing.json
565
- - spec/fixtures/listing_carts/add_listing_post.json
566
- - spec/fixtures/listing_carts/add_listing.json
570
+ - spec/fixtures/listing_carts/new_portal_cart.json
567
571
  - spec/fixtures/listing_carts/add_portal_cart_listings_post.json
572
+ - spec/fixtures/listing_carts/listing_cart.json
573
+ - spec/fixtures/listing_carts/put_name.json
574
+ - spec/fixtures/listing_carts/new.json
575
+ - spec/fixtures/listing_carts/add_portal_cart_listings.json
568
576
  - spec/fixtures/listing_carts/empty.json
569
- - spec/fixtures/listing_carts/add_listings.json
570
577
  - spec/fixtures/listing_carts/post_portal_cart.json
571
- - spec/fixtures/listing_carts/listing_portal_cart.json
578
+ - spec/fixtures/listing_carts/add_listing.json
579
+ - spec/fixtures/listing_carts/put.json
572
580
  - spec/fixtures/listing_carts/add_listings_post.json
573
- - spec/fixtures/success.json
574
- - spec/fixtures/activities/get.json
575
- - spec/fixtures/generic_failure.json
576
- - spec/fixtures/search_templates/quick_searches/get.json
577
- - spec/fixtures/comments/get.json
578
- - spec/fixtures/comments/post.json
579
- - spec/fixtures/comments/new.json
580
- - spec/fixtures/contacts/vow_accounts/edit.json
581
- - spec/fixtures/contacts/vow_accounts/get.json
582
- - spec/fixtures/contacts/vow_accounts/post.json
583
- - spec/fixtures/contacts/vow_accounts/new.json
584
- - spec/fixtures/contacts/new_empty.json
585
- - spec/fixtures/contacts/post.json
586
- - spec/fixtures/contacts/my.json
587
- - spec/fixtures/contacts/new.json
588
- - spec/fixtures/contacts/contacts.json
589
- - spec/fixtures/contacts/new_notify.json
590
- - spec/fixtures/contacts/tags.json
591
- - spec/fixtures/oauth2/access_with_old_refresh.json
592
- - spec/fixtures/oauth2/error.json
593
- - spec/fixtures/oauth2/authorization_code_body.json
594
- - spec/fixtures/oauth2/refresh_body.json
595
- - spec/fixtures/oauth2/password_body.json
596
- - spec/fixtures/oauth2/access_with_refresh.json
597
- - spec/fixtures/oauth2/access.json
598
- - spec/fixtures/base.json
599
- - spec/fixtures/idx_links/get.json
600
- - spec/fixtures/saved_searches/with_inactive_newsfeed.json
601
- - spec/fixtures/saved_searches/get_provided.json
581
+ - spec/fixtures/listing_carts/add_listings.json
582
+ - spec/fixtures/listing_carts/add_listing_post.json
583
+ - spec/fixtures/property_types/property_types.json
584
+ - spec/fixtures/no_results.json
602
585
  - spec/fixtures/saved_searches/get.json
586
+ - spec/fixtures/saved_searches/update.json
603
587
  - spec/fixtures/saved_searches/post.json
604
- - spec/fixtures/saved_searches/without_newsfeed.json
605
588
  - spec/fixtures/saved_searches/with_newsfeed.json
606
589
  - spec/fixtures/saved_searches/new.json
607
- - spec/fixtures/saved_searches/update.json
608
- - spec/fixtures/no_results.json
609
- - spec/fixtures/notes/agent_shared_empty.json
610
- - spec/fixtures/notes/new.json
611
- - spec/fixtures/notes/add.json
612
- - spec/fixtures/notes/agent_shared.json
613
- - spec/fixtures/accounts/my_put.json
614
- - spec/fixtures/accounts/my_portal.json
615
- - spec/fixtures/accounts/my.json
616
- - spec/fixtures/accounts/office.json
617
- - spec/fixtures/accounts/password_save.json
618
- - spec/fixtures/accounts/my_save.json
619
- - spec/fixtures/accounts/all.json
620
- - spec/fixtures/sharedlinks/success.json
621
- - spec/fixtures/listings/put.json
622
- - spec/fixtures/listings/videos_index.json
623
- - spec/fixtures/listings/photos/index.json
624
- - spec/fixtures/listings/photos/post.json
625
- - spec/fixtures/listings/photos/rotate.json
626
- - spec/fixtures/listings/photos/rollback.json
627
- - spec/fixtures/listings/photos/new.json
628
- - spec/fixtures/listings/photos/batch_delete.json
629
- - spec/fixtures/listings/constraints_with_pagination.json
630
- - spec/fixtures/listings/with_rental_calendar.json
631
- - spec/fixtures/listings/floplans_index.json
632
- - spec/fixtures/listings/shared_listing_get.json
633
- - spec/fixtures/listings/with_documents.json
634
- - spec/fixtures/listings/tour_of_homes.json
590
+ - spec/fixtures/saved_searches/with_inactive_newsfeed.json
591
+ - spec/fixtures/saved_searches/without_newsfeed.json
592
+ - spec/fixtures/saved_searches/get_provided.json
593
+ - spec/fixtures/search_templates/quick_searches/get.json
594
+ - spec/fixtures/newsfeeds/get.json
595
+ - spec/fixtures/newsfeeds/inactive.json
596
+ - spec/fixtures/newsfeeds/meta.json
597
+ - spec/fixtures/sorts/get.json
598
+ - spec/fixtures/count.json
599
+ - spec/fixtures/base.json
600
+ - spec/fixtures/messages/get.json
601
+ - spec/fixtures/messages/post.json
602
+ - spec/fixtures/messages/count.json
603
+ - spec/fixtures/messages/new.json
604
+ - spec/fixtures/messages/new_with_recipients.json
605
+ - spec/fixtures/messages/new_empty.json
606
+ - spec/fixtures/success.json
607
+ - spec/fixtures/listings/open_houses.json
635
608
  - spec/fixtures/listings/with_supplement.json
609
+ - spec/fixtures/listings/reorder_photo.json
610
+ - spec/fixtures/listings/videos_index.json
611
+ - spec/fixtures/listings/with_photos.json
612
+ - spec/fixtures/listings/no_subresources.json
636
613
  - spec/fixtures/listings/with_videos.json
614
+ - spec/fixtures/listings/document_index.json
637
615
  - spec/fixtures/listings/shared_listing_post.json
616
+ - spec/fixtures/listings/constraints_with_pagination.json
617
+ - spec/fixtures/listings/floplans_index.json
618
+ - spec/fixtures/listings/multiple.json
619
+ - spec/fixtures/listings/with_permissions.json
638
620
  - spec/fixtures/listings/put_reorder_photo.json
639
- - spec/fixtures/listings/rental_calendar.json
640
621
  - spec/fixtures/listings/constraints.json
641
- - spec/fixtures/listings/no_subresources.json
642
- - spec/fixtures/listings/with_permissions.json
643
- - spec/fixtures/listings/open_houses.json
644
- - spec/fixtures/listings/with_photos.json
645
- - spec/fixtures/listings/with_vtour.json
646
- - spec/fixtures/listings/multiple.json
647
- - spec/fixtures/listings/document_index.json
648
- - spec/fixtures/listings/reorder_photo.json
622
+ - spec/fixtures/listings/put.json
649
623
  - spec/fixtures/listings/put_expiration_date.json
650
- - spec/fixtures/listings/virtual_tours_index.json
651
624
  - spec/fixtures/listings/tour_of_homes_search.json
625
+ - spec/fixtures/listings/with_rental_calendar.json
626
+ - spec/fixtures/listings/photos/rollback.json
627
+ - spec/fixtures/listings/photos/post.json
628
+ - spec/fixtures/listings/photos/batch_delete.json
629
+ - spec/fixtures/listings/photos/rotate.json
630
+ - spec/fixtures/listings/photos/new.json
631
+ - spec/fixtures/listings/photos/index.json
652
632
  - spec/fixtures/listings/shared_listing_new.json
653
- - spec/fixtures/authentication_failure.json
654
- - spec/fixtures/standardfields/city.json
655
- - spec/fixtures/standardfields/nearby.json
656
- - spec/fixtures/standardfields/standardfields.json
657
- - spec/fixtures/standardfields/stateorprovince.json
658
- - spec/fixtures/count.json
659
- - spec/fixtures/oauth2_error.json
660
- - spec/fixtures/finders.json
633
+ - spec/fixtures/listings/rental_calendar.json
634
+ - spec/fixtures/listings/virtual_tours_index.json
635
+ - spec/fixtures/listings/with_documents.json
636
+ - spec/fixtures/listings/tour_of_homes.json
637
+ - spec/fixtures/listings/shared_listing_get.json
638
+ - spec/fixtures/listings/with_vtour.json
661
639
  - spec/fixtures/portal/post.json
662
640
  - spec/fixtures/portal/my.json
663
- - spec/fixtures/portal/my_non_existant.json
641
+ - spec/fixtures/portal/disable.json
664
642
  - spec/fixtures/portal/new.json
643
+ - spec/fixtures/portal/my_non_existant.json
665
644
  - spec/fixtures/portal/enable.json
666
- - spec/fixtures/portal/disable.json
667
- - spec/fixtures/session.json
668
- - spec/fixtures/rules/get.json
669
- - spec/fixtures/newsfeeds/get.json
670
- - spec/fixtures/newsfeeds/inactive.json
671
- - spec/fixtures/newsfeeds/meta.json
672
- - spec/fixtures/listing_meta_translations/get.json
673
- - spec/fixtures/empty.json
674
- - spec/fixtures/sorts/get.json
675
- - spec/fixtures/notifications/new_empty.json
676
645
  - spec/fixtures/notifications/notifications.json
677
646
  - spec/fixtures/notifications/post.json
678
647
  - spec/fixtures/notifications/new.json
679
- - spec/fixtures/notifications/mark_read.json
680
648
  - spec/fixtures/notifications/unread.json
649
+ - spec/fixtures/notifications/mark_read.json
650
+ - spec/fixtures/notifications/new_empty.json
651
+ - spec/fixtures/rules/get.json
652
+ - spec/fixtures/empty.json
653
+ - spec/fixtures/activities/get.json
654
+ - spec/fixtures/errors/expired.json
655
+ - spec/fixtures/errors/failure_with_msg.json
656
+ - spec/fixtures/errors/failure_with_constraint.json
657
+ - spec/fixtures/errors/failure.json
658
+ - spec/fixtures/authentication_failure.json
659
+ - spec/fixtures/standardfields/standardfields.json
660
+ - spec/fixtures/standardfields/city.json
661
+ - spec/fixtures/standardfields/stateorprovince.json
662
+ - spec/fixtures/standardfields/nearby.json
663
+ - spec/fixtures/listing_meta_translations/get.json
664
+ - spec/fixtures/oauth2_error.json
665
+ - spec/fixtures/fields/order_a.json
666
+ - spec/fixtures/fields/order.json
667
+ - spec/fixtures/fields/settings.json
668
+ - spec/fixtures/notes/add.json
669
+ - spec/fixtures/notes/new.json
670
+ - spec/fixtures/notes/agent_shared.json
671
+ - spec/fixtures/notes/agent_shared_empty.json
672
+ - spec/fixtures/oauth2/access.json
673
+ - spec/fixtures/oauth2/access_with_old_refresh.json
674
+ - spec/fixtures/oauth2/password_body.json
675
+ - spec/fixtures/oauth2/access_with_refresh.json
676
+ - spec/fixtures/oauth2/error.json
677
+ - spec/fixtures/oauth2/authorization_code_body.json
678
+ - spec/fixtures/oauth2/refresh_body.json
681
679
  - spec/fixtures/logo_fbs.png
680
+ - spec/fixtures/generic_failure.json
681
+ - spec/fixtures/accounts/my.json
682
+ - spec/fixtures/accounts/office.json
683
+ - spec/fixtures/accounts/password_save.json
684
+ - spec/fixtures/accounts/all.json
685
+ - spec/fixtures/accounts/my_put.json
686
+ - spec/fixtures/accounts/my_portal.json
687
+ - spec/fixtures/accounts/my_save.json
688
+ - spec/fixtures/contacts/vow_accounts/get.json
689
+ - spec/fixtures/contacts/vow_accounts/post.json
690
+ - spec/fixtures/contacts/vow_accounts/edit.json
691
+ - spec/fixtures/contacts/vow_accounts/new.json
692
+ - spec/fixtures/contacts/post.json
693
+ - spec/fixtures/contacts/my.json
694
+ - spec/fixtures/contacts/new.json
695
+ - spec/fixtures/contacts/tags.json
696
+ - spec/fixtures/contacts/new_notify.json
697
+ - spec/fixtures/contacts/contacts.json
698
+ - spec/fixtures/contacts/new_empty.json
699
+ - spec/fixtures/finders.json
700
+ - spec/fixtures/sharedlinks/success.json
682
701
  - spec/fixtures/generic_delete.json
683
- - spec/fixtures/messages/new_empty.json
684
- - spec/fixtures/messages/get.json
685
- - spec/fixtures/messages/new_with_recipients.json
686
- - spec/fixtures/messages/post.json
687
- - spec/fixtures/messages/new.json
688
- - spec/fixtures/messages/count.json
702
+ - spec/fixtures/comments/get.json
703
+ - spec/fixtures/comments/post.json
704
+ - spec/fixtures/comments/new.json
689
705
  - spec/unit/spark_api_spec.rb
690
- - spec/unit/spark_api/paginate_spec.rb
691
- - spec/unit/spark_api/request_spec.rb
692
- - spec/unit/spark_api/options_hash_spec.rb
693
- - spec/unit/spark_api/authentication/base_auth_spec.rb
694
- - spec/unit/spark_api/authentication/oauth2_spec.rb
695
- - spec/unit/spark_api/authentication/api_auth_spec.rb
696
- - spec/unit/spark_api/authentication/oauth2_impl/single_session_provider_spec.rb
697
- - spec/unit/spark_api/authentication/oauth2_impl/grant_type_base_spec.rb
698
- - spec/unit/spark_api/authentication/oauth2_impl/faraday_middleware_spec.rb
699
- - spec/unit/spark_api/models/notification_spec.rb
706
+ - spec/unit/spark_api/configuration/yaml_spec.rb
700
707
  - spec/unit/spark_api/models/floplan_spec.rb
701
- - spec/unit/spark_api/models/fields_spec.rb
702
- - spec/unit/spark_api/models/open_house_spec.rb
703
- - spec/unit/spark_api/models/document_spec.rb
704
- - spec/unit/spark_api/models/newsfeed_spec.rb
705
- - spec/unit/spark_api/models/system_info_spec.rb
706
- - spec/unit/spark_api/models/tour_of_home_spec.rb
707
- - spec/unit/spark_api/models/vow_account_spec.rb
708
- - spec/unit/spark_api/models/activity_spec.rb
709
- - spec/unit/spark_api/models/listing_meta_translations_spec.rb
710
- - spec/unit/spark_api/models/news_feed_meta_spec.rb
711
- - spec/unit/spark_api/models/listing_spec.rb
708
+ - spec/unit/spark_api/models/email_link_spec.rb
709
+ - spec/unit/spark_api/models/property_types_spec.rb
712
710
  - spec/unit/spark_api/models/sort_spec.rb
713
- - spec/unit/spark_api/models/subresource_spec.rb
714
711
  - spec/unit/spark_api/models/connect_prefs_spec.rb
715
- - spec/unit/spark_api/models/rule_spec.rb
716
- - spec/unit/spark_api/models/video_spec.rb
712
+ - spec/unit/spark_api/models/contact_spec.rb
717
713
  - spec/unit/spark_api/models/virtual_tour_spec.rb
718
- - spec/unit/spark_api/models/listing_cart_spec.rb
719
- - spec/unit/spark_api/models/message_spec.rb
720
- - spec/unit/spark_api/models/email_link_spec.rb
721
- - spec/unit/spark_api/models/standard_fields_spec.rb
722
- - spec/unit/spark_api/models/dirty_spec.rb
723
- - spec/unit/spark_api/models/account_spec.rb
714
+ - spec/unit/spark_api/models/news_feed_meta_spec.rb
715
+ - spec/unit/spark_api/models/base_spec.rb
716
+ - spec/unit/spark_api/models/note_spec.rb
717
+ - spec/unit/spark_api/models/shared_listing_spec.rb
718
+ - spec/unit/spark_api/models/tour_of_home_spec.rb
719
+ - spec/unit/spark_api/models/video_spec.rb
720
+ - spec/unit/spark_api/models/rental_calendar_spec.rb
724
721
  - spec/unit/spark_api/models/photo_spec.rb
722
+ - spec/unit/spark_api/models/vow_account_spec.rb
725
723
  - spec/unit/spark_api/models/finders_spec.rb
726
- - spec/unit/spark_api/models/note_spec.rb
724
+ - spec/unit/spark_api/models/shared_link_spec.rb
727
725
  - spec/unit/spark_api/models/concerns/savable_spec.rb
728
726
  - spec/unit/spark_api/models/concerns/destroyable_spec.rb
729
- - spec/unit/spark_api/models/portal_spec.rb
727
+ - spec/unit/spark_api/models/listing_meta_translations_spec.rb
728
+ - spec/unit/spark_api/models/rule_spec.rb
730
729
  - spec/unit/spark_api/models/defaultable_spec.rb
731
- - spec/unit/spark_api/models/constraint_spec.rb
732
- - spec/unit/spark_api/models/shared_listing_spec.rb
733
- - spec/unit/spark_api/models/property_types_spec.rb
730
+ - spec/unit/spark_api/models/listing_spec.rb
731
+ - spec/unit/spark_api/models/dirty_spec.rb
732
+ - spec/unit/spark_api/models/subresource_spec.rb
733
+ - spec/unit/spark_api/models/open_house_spec.rb
734
+ - spec/unit/spark_api/models/portal_spec.rb
734
735
  - spec/unit/spark_api/models/search_template/quick_search_spec.rb
735
- - spec/unit/spark_api/models/contact_spec.rb
736
- - spec/unit/spark_api/models/rental_calendar_spec.rb
737
- - spec/unit/spark_api/models/saved_search_spec.rb
736
+ - spec/unit/spark_api/models/constraint_spec.rb
737
+ - spec/unit/spark_api/models/newsfeed_spec.rb
738
+ - spec/unit/spark_api/models/notification_spec.rb
739
+ - spec/unit/spark_api/models/standard_fields_spec.rb
740
+ - spec/unit/spark_api/models/fields_spec.rb
741
+ - spec/unit/spark_api/models/account_spec.rb
738
742
  - spec/unit/spark_api/models/account_report_spec.rb
739
- - spec/unit/spark_api/models/base_spec.rb
740
- - spec/unit/spark_api/models/shared_link_spec.rb
743
+ - spec/unit/spark_api/models/message_spec.rb
744
+ - spec/unit/spark_api/models/activity_spec.rb
745
+ - spec/unit/spark_api/models/system_info_spec.rb
746
+ - spec/unit/spark_api/models/document_spec.rb
747
+ - spec/unit/spark_api/models/listing_cart_spec.rb
748
+ - spec/unit/spark_api/models/saved_search_spec.rb
749
+ - spec/unit/spark_api/request_spec.rb
750
+ - spec/unit/spark_api/multi_client_spec.rb
751
+ - spec/unit/spark_api/authentication/oauth2_impl/grant_type_base_spec.rb
752
+ - spec/unit/spark_api/authentication/oauth2_impl/faraday_middleware_spec.rb
753
+ - spec/unit/spark_api/authentication/oauth2_impl/single_session_provider_spec.rb
754
+ - spec/unit/spark_api/authentication/oauth2_spec.rb
755
+ - spec/unit/spark_api/authentication/base_auth_spec.rb
756
+ - spec/unit/spark_api/authentication/api_auth_spec.rb
757
+ - spec/unit/spark_api/primary_array_spec.rb
741
758
  - spec/unit/spark_api/faraday_middleware_spec.rb
742
759
  - spec/unit/spark_api/configuration_spec.rb
743
- - spec/unit/spark_api/primary_array_spec.rb
744
- - spec/unit/spark_api/configuration/yaml_spec.rb
745
- - spec/unit/spark_api/multi_client_spec.rb
746
760
  - spec/unit/spark_api/authentication_spec.rb
761
+ - spec/unit/spark_api/paginate_spec.rb
762
+ - spec/unit/spark_api/options_hash_spec.rb
747
763
  - spec/spec_helper.rb