spark_api 1.5.2 → 1.5.6

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9dfabf550d6eea2fb80a30b047b5c0fb4a5aa95f4bad6ee2fd9135acc21ce479
4
- data.tar.gz: 8587cc4fa49929d9286ec6ac37c9d97259e6fbdf2d7b583716edc5d67068d47f
3
+ metadata.gz: 3c3d4c9f45558cce85bffb176aec80b078549b79c6254aebf327ee6044e821eb
4
+ data.tar.gz: b64d5dbb122e21f47a8860b0c80f9d601ce2fbf212281a14dcaa0e6e69b85119
5
5
  SHA512:
6
- metadata.gz: 2e0467d03ebcac984dd9ba6dbd0b120e60d1ef1c340d1972145140678a84b405567114a4af2eaba8776c8e9a20cc556dafada327cb9d86c9ad95dbec8ca2a1f5
7
- data.tar.gz: 6b9107aa27eed9afd313b34144c1f2b22425fa421568d6b496edb7d96b9828313568651457b3cd3f71085c7b3d09ecfd7d7595cced256cdc0a01775edf46b308
6
+ metadata.gz: 6162c7da6c81aa3bf9e2e947ed32ce2632e8f8d15961ec63f1c1812a8e65b9730bbd081d3aff8c68306ae35590b4094ab99fcd77b5dca6e85b7b71e20e67e21b
7
+ data.tar.gz: 99fca35f709e59f97589eebc86206ec0f80c855103122e3101665cf6d6042b6c1d1de10e560d65d6e8d10e3b2a6925086857ae01c124c6531781d047754e3c6b
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.5.2
1
+ 1.5.6
@@ -63,6 +63,8 @@ module SparkApi
63
63
  # Perform an HTTP request (no data)
64
64
  def request(method, path, body, options)
65
65
  escaped_path = Addressable::URI.escape(path)
66
+ connection = @client.connection
67
+ connection.headers.merge!(options.delete(:override_headers) || {})
66
68
  request_opts = {
67
69
  :AuthToken => @session.auth_token
68
70
  }
@@ -76,10 +78,10 @@ module SparkApi
76
78
  request_path = "#{escaped_path}?#{build_url_parameters({"ApiSig"=>sig}.merge(request_opts))}"
77
79
  SparkApi.logger.debug { "Request: #{request_path}" }
78
80
  if body.nil?
79
- response = @client.connection.send(method, request_path)
81
+ response = connection.send(method, request_path)
80
82
  else
81
83
  SparkApi.logger.debug { "Data: #{body}" }
82
- response = @client.connection.send(method, request_path, body)
84
+ response = connection.send(method, request_path, body)
83
85
  end
84
86
  response
85
87
  end
@@ -42,6 +42,7 @@ module SparkApi
42
42
  def request(method, path, body, options={})
43
43
  escaped_path = Addressable::URI.escape(path)
44
44
  connection = @client.connection(true) # SSL Only!
45
+ connection.headers.merge!(options.delete(:override_headers) || {})
45
46
  connection.headers.merge!(self.auth_header)
46
47
 
47
48
  unless (@client.api_user.nil? || options[:ApiUser])
@@ -1,4 +1,4 @@
1
- require "highline/import"
1
+ require "highline"
2
2
 
3
3
  module SparkApi
4
4
  module Authentication
@@ -18,7 +18,7 @@ module SparkApi
18
18
  def redirect(url)
19
19
  puts "Missing OAuth2 session, redirecting..."
20
20
  puts "Please visit #{url}, login as a user, and paste the authorization code here:"
21
- self.code = ask("Authorization code?") do |q|
21
+ self.code = HighLine.ask("Authorization code?") do |q|
22
22
  q.whitespace = :strip_and_collapse
23
23
  q.validate = /^\w+$/
24
24
  end
@@ -15,14 +15,18 @@ module SparkApi
15
15
  def on_complete(env)
16
16
  body = MultiJson.decode(env[:body])
17
17
  SparkApi.logger.debug { "[oauth2] Response Body: #{body.inspect}" }
18
+
18
19
  unless body.is_a?(Hash)
19
20
  raise InvalidResponse, "The server response could not be understood"
20
21
  end
22
+
21
23
  case env[:status]
22
24
  when 200..299
23
25
  SparkApi.logger.debug{ "[oauth2] Success!" }
24
26
  session = OAuthSession.new(body)
25
- else
27
+ else
28
+ SparkApi.logger.warn { "[oauth2] failure #{body.inspect}" }
29
+
26
30
  # Handle the WWW-Authenticate Response Header Field if present. This can be returned by
27
31
  # OAuth2 implementations and wouldn't hurt to log.
28
32
  auth_header_error = env[:request_headers]["WWW-Authenticate"]
@@ -29,7 +29,11 @@ module SparkApi
29
29
  if paging.nil?
30
30
  results = response
31
31
  else
32
- q = CGI.parse(env[:url].query)
32
+ q = if http_method_override_request?(env)
33
+ CGI.parse(env[:request_body])
34
+ else
35
+ CGI.parse(env[:url].query)
36
+ end
33
37
  if q.key?("_pagination") && q["_pagination"].first == "count"
34
38
  results = paging['TotalRows']
35
39
  else
@@ -87,7 +91,13 @@ module SparkApi
87
91
 
88
92
  env[:body]
89
93
  end
90
-
94
+
95
+ private
96
+
97
+ def http_method_override_request?(env)
98
+ env[:request_headers]["X-HTTP-Method-Override"] == "GET"
99
+ end
100
+
91
101
  end
92
102
 
93
103
  Faraday::Response.register_middleware :spark_api => FaradayMiddleware
@@ -61,6 +61,22 @@ module SparkApi
61
61
  unless authenticated?
62
62
  authenticate
63
63
  end
64
+
65
+ # Allow use of the X-HTTP-Method-Override header to disguise excessively
66
+ # large GET/DELETE/HEAD requests as POST requests.
67
+ if options[:http_method_override]
68
+ options = options.clone
69
+ options.delete(:http_method_override)
70
+ body = URI.encode_www_form(options)
71
+ options = {
72
+ override_headers: {
73
+ "X-HTTP-Method-Override" => method.to_s.upcase,
74
+ "Content-Type" => "application/x-www-form-urlencoded"
75
+ }
76
+ }
77
+ method = :post
78
+ end
79
+
64
80
  attempts = 0
65
81
  begin
66
82
  request_opts = {}
@@ -119,6 +119,25 @@ describe SparkApi::Authentication::ApiAuth do
119
119
  :status=>201)
120
120
  expect(subject.request(:post, "/#{SparkApi.version}/contacts", contact, args).status).to eq(201)
121
121
  end
122
+ it "should incorporate any override_headers it is given while excluding them from the resulting request" do
123
+ stub_auth_request
124
+ args = {
125
+ override_headers: {
126
+ "Some-Header" => "Some-Value"
127
+ },
128
+ ApiUser: "foobar",
129
+ some_other_param: "some_other_value"
130
+ }
131
+ body = "somerequestbodytext"
132
+ stub_request(:post, "https://api.sparkapi.com/v1/someservice?ApiSig=856f5c036137c0cef5d4d223cd0f42be&ApiUser=foobar&AuthToken=1234&some_other_param=some_other_value").
133
+ with(body: "somerequestbodytext", headers: args[:override_headers]).
134
+ to_return(body: '{"D": {
135
+ "Success": true,
136
+ "Results": []
137
+ }',
138
+ status: 200)
139
+ expect(subject.request(:post, "/#{SparkApi.version}/someservice", body, args).status).to eq(200)
140
+ end
122
141
  end
123
142
 
124
143
  describe "sign" do
@@ -97,6 +97,24 @@ describe SparkApi::Authentication::OAuth2 do
97
97
  :status=>201)
98
98
  expect(subject.request(:post, "/#{SparkApi.version}/contacts", contact, args).status).to eq(201)
99
99
  end
100
+ it "should incorporate any override_headers it is given while excluding them from the resulting request" do
101
+ subject.session = session
102
+ args = {
103
+ override_headers: {
104
+ "Some-Header" => "Some-Value"
105
+ },
106
+ some_other_param: "some_other_value"
107
+ }
108
+ body = "somerequestbodytext"
109
+ stub_request(:post, "https://api.sparkapi.com/#{SparkApi.version}/someservice?some_other_param=some_other_value").
110
+ with(body: body, headers: args[:override_headers]).
111
+ to_return(body: '{"D": {
112
+ "Success": true,
113
+ "Results": []
114
+ }',
115
+ status: 200)
116
+ expect(subject.request(:post, "/#{SparkApi.version}/someservice", body, args).status).to eq(200)
117
+ end
100
118
  end
101
119
 
102
120
  describe "sparkbar_token" do
@@ -181,6 +181,12 @@ describe Listing do
181
181
  count = Listing.count()
182
182
  expect(count).to eq(2001)
183
183
  end
184
+
185
+ on_get_it "should return the count even if http_method_override: true is passed" do
186
+ stub_api_post('/listings', '_pagination=count', 'count.json')
187
+ count = Listing.count(http_method_override: true)
188
+ expect(count).to eq(2001)
189
+ end
184
190
  end
185
191
 
186
192
  context "/listings/<listing_id>", :support do
@@ -160,7 +160,13 @@ describe SparkApi do
160
160
  }
161
161
  }']
162
162
  }
163
-
163
+ # For testing http_method_override. See associated test for more details.
164
+ stub.post('/v1/routetoproveweareposting?ApiSig=SignedToken&AuthToken=1234', 'some_param=some_value') { [200, {}, '{"D": {
165
+ "Success": true,
166
+ "Results": []
167
+ }
168
+ }']
169
+ }
164
170
  end
165
171
  @connection = test_connection(stubs)
166
172
  end
@@ -230,7 +236,7 @@ describe SparkApi do
230
236
  end
231
237
 
232
238
  it "should allow response object to be returned instead of body" do
233
- r = subject.get('/system', { full_response: true })
239
+ r = subject.get('/system', { some_param: 'something', full_response: true })
234
240
 
235
241
  expect(r.is_a?(Faraday::Response)).to be(true)
236
242
  expect(r.status).to eq(200)
@@ -248,7 +254,17 @@ describe SparkApi do
248
254
  expect(number.to_s).to eq(BigDecimal.new("9999999999999999999999999.99").to_s)
249
255
  end
250
256
  end
251
-
257
+
258
+ # This is a weird feature and it also gets a weird test that probably
259
+ # merits explanation:
260
+ #
261
+ # We have only stubbed POST for this route, so the below succeeding
262
+ # proves that we have converted our GET into a POST. It is additionally
263
+ # stubbed to prove that we turn the params into a body which excludes the
264
+ # http_method_override options as well as the override_headers options.
265
+ it "should convert GET to POST if http_method_override: true is supplied" do
266
+ expect(subject.get('/routetoproveweareposting', { http_method_override: true, some_param: "some_value" }).success?).to be true
267
+ end
252
268
  end
253
269
 
254
270
  context "when unauthenticated" 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.5.2
4
+ version: 1.5.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brandon Hornseth
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2021-06-03 00:00:00.000000000 Z
12
+ date: 2022-01-03 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: faraday
@@ -539,203 +539,203 @@ signing_key:
539
539
  specification_version: 4
540
540
  summary: A library for interacting with the Spark web services.
541
541
  test_files:
542
- - spec/fixtures/generic_delete.json
543
- - spec/fixtures/base.json
544
- - spec/fixtures/authentication_failure.json
545
- - spec/fixtures/errors/failure_with_constraint.json
542
+ - spec/fixtures/fields/order_a.json
543
+ - spec/fixtures/fields/settings.json
544
+ - spec/fixtures/fields/order.json
545
+ - spec/fixtures/errors/failure_with_msg.json
546
546
  - spec/fixtures/errors/failure.json
547
547
  - spec/fixtures/errors/expired.json
548
- - spec/fixtures/errors/failure_with_msg.json
549
- - spec/fixtures/listing_carts/add_listings.json
550
- - spec/fixtures/listing_carts/post_portal_cart.json
551
- - spec/fixtures/listing_carts/add_listing_post.json
552
- - spec/fixtures/listing_carts/new_portal_cart.json
553
- - spec/fixtures/listing_carts/add_listing.json
554
- - spec/fixtures/listing_carts/add_portal_cart_listings_post.json
555
- - spec/fixtures/listing_carts/listing_portal_cart.json
556
- - spec/fixtures/listing_carts/add_portal_cart_listings.json
557
- - spec/fixtures/listing_carts/empty.json
558
- - spec/fixtures/listing_carts/post.json
559
- - spec/fixtures/listing_carts/new.json
548
+ - spec/fixtures/errors/failure_with_constraint.json
549
+ - spec/fixtures/property_types/property_types.json
560
550
  - spec/fixtures/listing_carts/put.json
551
+ - spec/fixtures/listing_carts/post.json
552
+ - spec/fixtures/listing_carts/put_name.json
553
+ - spec/fixtures/listing_carts/add_portal_cart_listings.json
561
554
  - spec/fixtures/listing_carts/listing_cart.json
555
+ - spec/fixtures/listing_carts/new_portal_cart.json
562
556
  - spec/fixtures/listing_carts/put_ids.json
557
+ - spec/fixtures/listing_carts/new.json
563
558
  - spec/fixtures/listing_carts/remove_listing.json
564
- - spec/fixtures/listing_carts/put_name.json
559
+ - spec/fixtures/listing_carts/add_listing_post.json
560
+ - spec/fixtures/listing_carts/add_listing.json
561
+ - spec/fixtures/listing_carts/add_portal_cart_listings_post.json
562
+ - spec/fixtures/listing_carts/empty.json
563
+ - spec/fixtures/listing_carts/add_listings.json
564
+ - spec/fixtures/listing_carts/post_portal_cart.json
565
+ - spec/fixtures/listing_carts/listing_portal_cart.json
565
566
  - spec/fixtures/listing_carts/add_listings_post.json
566
- - spec/fixtures/fields/order_a.json
567
- - spec/fixtures/fields/settings.json
568
- - spec/fixtures/fields/order.json
569
- - spec/fixtures/newsfeeds/inactive.json
570
- - spec/fixtures/newsfeeds/get.json
571
- - spec/fixtures/newsfeeds/meta.json
567
+ - spec/fixtures/success.json
568
+ - spec/fixtures/activities/get.json
569
+ - spec/fixtures/generic_failure.json
570
+ - spec/fixtures/search_templates/quick_searches/get.json
571
+ - spec/fixtures/comments/get.json
572
+ - spec/fixtures/comments/post.json
573
+ - spec/fixtures/comments/new.json
574
+ - spec/fixtures/contacts/vow_accounts/edit.json
575
+ - spec/fixtures/contacts/vow_accounts/get.json
576
+ - spec/fixtures/contacts/vow_accounts/post.json
577
+ - spec/fixtures/contacts/vow_accounts/new.json
578
+ - spec/fixtures/contacts/new_empty.json
579
+ - spec/fixtures/contacts/post.json
580
+ - spec/fixtures/contacts/my.json
581
+ - spec/fixtures/contacts/new.json
582
+ - spec/fixtures/contacts/contacts.json
583
+ - spec/fixtures/contacts/new_notify.json
584
+ - spec/fixtures/contacts/tags.json
585
+ - spec/fixtures/oauth2/access_with_old_refresh.json
586
+ - spec/fixtures/oauth2/error.json
587
+ - spec/fixtures/oauth2/authorization_code_body.json
588
+ - spec/fixtures/oauth2/refresh_body.json
589
+ - spec/fixtures/oauth2/password_body.json
590
+ - spec/fixtures/oauth2/access_with_refresh.json
591
+ - spec/fixtures/oauth2/access.json
592
+ - spec/fixtures/base.json
572
593
  - spec/fixtures/idx_links/get.json
573
- - spec/fixtures/listings/document_index.json
574
- - spec/fixtures/listings/with_documents.json
575
- - spec/fixtures/listings/photos/batch_delete.json
576
- - spec/fixtures/listings/photos/rollback.json
577
- - spec/fixtures/listings/photos/post.json
578
- - spec/fixtures/listings/photos/index.json
579
- - spec/fixtures/listings/photos/new.json
580
- - spec/fixtures/listings/photos/rotate.json
581
- - spec/fixtures/listings/multiple.json
582
- - spec/fixtures/listings/tour_of_homes_search.json
583
- - spec/fixtures/listings/put_expiration_date.json
584
- - spec/fixtures/listings/videos_index.json
585
- - spec/fixtures/listings/with_permissions.json
586
- - spec/fixtures/listings/reorder_photo.json
587
- - spec/fixtures/listings/virtual_tours_index.json
588
- - spec/fixtures/listings/put_reorder_photo.json
589
- - spec/fixtures/listings/no_subresources.json
590
- - spec/fixtures/listings/with_photos.json
591
- - spec/fixtures/listings/shared_listing_post.json
592
- - spec/fixtures/listings/with_vtour.json
593
- - spec/fixtures/listings/put.json
594
- - spec/fixtures/listings/with_rental_calendar.json
595
- - spec/fixtures/listings/constraints.json
596
- - spec/fixtures/listings/constraints_with_pagination.json
597
- - spec/fixtures/listings/tour_of_homes.json
598
- - spec/fixtures/listings/open_houses.json
599
- - spec/fixtures/listings/shared_listing_get.json
600
- - spec/fixtures/listings/with_supplement.json
601
- - spec/fixtures/listings/shared_listing_new.json
602
- - spec/fixtures/listings/rental_calendar.json
603
- - spec/fixtures/listings/floplans_index.json
604
- - spec/fixtures/listings/with_videos.json
605
- - spec/fixtures/notes/agent_shared.json
594
+ - spec/fixtures/saved_searches/with_inactive_newsfeed.json
595
+ - spec/fixtures/saved_searches/get_provided.json
596
+ - spec/fixtures/saved_searches/get.json
597
+ - spec/fixtures/saved_searches/post.json
598
+ - spec/fixtures/saved_searches/without_newsfeed.json
599
+ - spec/fixtures/saved_searches/with_newsfeed.json
600
+ - spec/fixtures/saved_searches/new.json
601
+ - spec/fixtures/saved_searches/update.json
602
+ - spec/fixtures/no_results.json
606
603
  - spec/fixtures/notes/agent_shared_empty.json
607
604
  - spec/fixtures/notes/new.json
608
605
  - spec/fixtures/notes/add.json
609
- - spec/fixtures/accounts/office.json
606
+ - spec/fixtures/notes/agent_shared.json
607
+ - spec/fixtures/accounts/my_put.json
610
608
  - spec/fixtures/accounts/my_portal.json
609
+ - spec/fixtures/accounts/my.json
610
+ - spec/fixtures/accounts/office.json
611
611
  - spec/fixtures/accounts/password_save.json
612
612
  - spec/fixtures/accounts/my_save.json
613
613
  - spec/fixtures/accounts/all.json
614
- - spec/fixtures/accounts/my_put.json
615
- - spec/fixtures/accounts/my.json
616
- - spec/fixtures/notifications/mark_read.json
617
- - spec/fixtures/notifications/post.json
618
- - spec/fixtures/notifications/new.json
619
- - spec/fixtures/notifications/notifications.json
620
- - spec/fixtures/notifications/new_empty.json
621
- - spec/fixtures/notifications/unread.json
622
- - spec/fixtures/search_templates/quick_searches/get.json
623
- - spec/fixtures/standardfields/nearby.json
624
- - spec/fixtures/standardfields/stateorprovince.json
614
+ - spec/fixtures/sharedlinks/success.json
615
+ - spec/fixtures/listings/put.json
616
+ - spec/fixtures/listings/videos_index.json
617
+ - spec/fixtures/listings/photos/index.json
618
+ - spec/fixtures/listings/photos/post.json
619
+ - spec/fixtures/listings/photos/rotate.json
620
+ - spec/fixtures/listings/photos/rollback.json
621
+ - spec/fixtures/listings/photos/new.json
622
+ - spec/fixtures/listings/photos/batch_delete.json
623
+ - spec/fixtures/listings/constraints_with_pagination.json
624
+ - spec/fixtures/listings/with_rental_calendar.json
625
+ - spec/fixtures/listings/floplans_index.json
626
+ - spec/fixtures/listings/shared_listing_get.json
627
+ - spec/fixtures/listings/with_documents.json
628
+ - spec/fixtures/listings/tour_of_homes.json
629
+ - spec/fixtures/listings/with_supplement.json
630
+ - spec/fixtures/listings/with_videos.json
631
+ - spec/fixtures/listings/shared_listing_post.json
632
+ - spec/fixtures/listings/put_reorder_photo.json
633
+ - spec/fixtures/listings/rental_calendar.json
634
+ - spec/fixtures/listings/constraints.json
635
+ - spec/fixtures/listings/no_subresources.json
636
+ - spec/fixtures/listings/with_permissions.json
637
+ - spec/fixtures/listings/open_houses.json
638
+ - spec/fixtures/listings/with_photos.json
639
+ - spec/fixtures/listings/with_vtour.json
640
+ - spec/fixtures/listings/multiple.json
641
+ - spec/fixtures/listings/document_index.json
642
+ - spec/fixtures/listings/reorder_photo.json
643
+ - spec/fixtures/listings/put_expiration_date.json
644
+ - spec/fixtures/listings/virtual_tours_index.json
645
+ - spec/fixtures/listings/tour_of_homes_search.json
646
+ - spec/fixtures/listings/shared_listing_new.json
647
+ - spec/fixtures/authentication_failure.json
625
648
  - spec/fixtures/standardfields/city.json
649
+ - spec/fixtures/standardfields/nearby.json
626
650
  - spec/fixtures/standardfields/standardfields.json
627
- - spec/fixtures/oauth2/authorization_code_body.json
628
- - spec/fixtures/oauth2/access_with_refresh.json
629
- - spec/fixtures/oauth2/password_body.json
630
- - spec/fixtures/oauth2/access_with_old_refresh.json
631
- - spec/fixtures/oauth2/refresh_body.json
632
- - spec/fixtures/oauth2/error.json
633
- - spec/fixtures/oauth2/access.json
634
- - spec/fixtures/empty.json
635
- - spec/fixtures/generic_failure.json
636
- - spec/fixtures/rules/get.json
637
- - spec/fixtures/property_types/property_types.json
638
- - spec/fixtures/success.json
651
+ - spec/fixtures/standardfields/stateorprovince.json
639
652
  - spec/fixtures/count.json
640
- - spec/fixtures/sorts/get.json
641
- - spec/fixtures/comments/post.json
642
- - spec/fixtures/comments/new.json
643
- - spec/fixtures/comments/get.json
653
+ - spec/fixtures/oauth2_error.json
644
654
  - spec/fixtures/finders.json
655
+ - spec/fixtures/portal/post.json
656
+ - spec/fixtures/portal/my.json
657
+ - spec/fixtures/portal/my_non_existant.json
658
+ - spec/fixtures/portal/new.json
659
+ - spec/fixtures/portal/enable.json
660
+ - spec/fixtures/portal/disable.json
661
+ - spec/fixtures/session.json
662
+ - spec/fixtures/rules/get.json
663
+ - spec/fixtures/newsfeeds/get.json
664
+ - spec/fixtures/newsfeeds/inactive.json
665
+ - spec/fixtures/newsfeeds/meta.json
666
+ - spec/fixtures/listing_meta_translations/get.json
667
+ - spec/fixtures/empty.json
668
+ - spec/fixtures/sorts/get.json
669
+ - spec/fixtures/notifications/new_empty.json
670
+ - spec/fixtures/notifications/notifications.json
671
+ - spec/fixtures/notifications/post.json
672
+ - spec/fixtures/notifications/new.json
673
+ - spec/fixtures/notifications/mark_read.json
674
+ - spec/fixtures/notifications/unread.json
645
675
  - spec/fixtures/logo_fbs.png
646
- - spec/fixtures/activities/get.json
647
- - spec/fixtures/saved_searches/get_provided.json
648
- - spec/fixtures/saved_searches/without_newsfeed.json
649
- - spec/fixtures/saved_searches/update.json
650
- - spec/fixtures/saved_searches/post.json
651
- - spec/fixtures/saved_searches/new.json
652
- - spec/fixtures/saved_searches/get.json
653
- - spec/fixtures/saved_searches/with_newsfeed.json
654
- - spec/fixtures/saved_searches/with_inactive_newsfeed.json
655
- - spec/fixtures/sharedlinks/success.json
676
+ - spec/fixtures/generic_delete.json
677
+ - spec/fixtures/messages/new_empty.json
678
+ - spec/fixtures/messages/get.json
656
679
  - spec/fixtures/messages/new_with_recipients.json
657
680
  - spec/fixtures/messages/post.json
658
681
  - spec/fixtures/messages/new.json
659
682
  - spec/fixtures/messages/count.json
660
- - spec/fixtures/messages/get.json
661
- - spec/fixtures/messages/new_empty.json
662
- - spec/fixtures/oauth2_error.json
663
- - spec/fixtures/no_results.json
664
- - spec/fixtures/contacts/tags.json
665
- - spec/fixtures/contacts/new_notify.json
666
- - spec/fixtures/contacts/vow_accounts/post.json
667
- - spec/fixtures/contacts/vow_accounts/new.json
668
- - spec/fixtures/contacts/vow_accounts/get.json
669
- - spec/fixtures/contacts/vow_accounts/edit.json
670
- - spec/fixtures/contacts/post.json
671
- - spec/fixtures/contacts/new.json
672
- - spec/fixtures/contacts/contacts.json
673
- - spec/fixtures/contacts/new_empty.json
674
- - spec/fixtures/contacts/my.json
675
- - spec/fixtures/session.json
676
- - spec/fixtures/listing_meta_translations/get.json
677
- - spec/fixtures/portal/my_non_existant.json
678
- - spec/fixtures/portal/post.json
679
- - spec/fixtures/portal/enable.json
680
- - spec/fixtures/portal/new.json
681
- - spec/fixtures/portal/disable.json
682
- - spec/fixtures/portal/my.json
683
683
  - spec/unit/spark_api_spec.rb
684
- - spec/unit/spark_api/options_hash_spec.rb
685
684
  - spec/unit/spark_api/paginate_spec.rb
686
- - spec/unit/spark_api/configuration/yaml_spec.rb
687
- - spec/unit/spark_api/faraday_middleware_spec.rb
688
- - spec/unit/spark_api/configuration_spec.rb
689
- - spec/unit/spark_api/authentication/oauth2_impl/faraday_middleware_spec.rb
690
- - spec/unit/spark_api/authentication/oauth2_impl/single_session_provider_spec.rb
691
- - spec/unit/spark_api/authentication/oauth2_impl/grant_type_base_spec.rb
685
+ - spec/unit/spark_api/request_spec.rb
686
+ - spec/unit/spark_api/options_hash_spec.rb
692
687
  - spec/unit/spark_api/authentication/base_auth_spec.rb
693
- - spec/unit/spark_api/authentication/api_auth_spec.rb
694
688
  - spec/unit/spark_api/authentication/oauth2_spec.rb
695
- - spec/unit/spark_api/request_spec.rb
696
- - spec/unit/spark_api/multi_client_spec.rb
697
- - spec/unit/spark_api/authentication_spec.rb
698
- - spec/unit/spark_api/primary_array_spec.rb
699
- - spec/unit/spark_api/models/search_template/quick_search_spec.rb
700
- - spec/unit/spark_api/models/contact_spec.rb
701
- - spec/unit/spark_api/models/note_spec.rb
702
- - spec/unit/spark_api/models/listing_meta_translations_spec.rb
703
- - spec/unit/spark_api/models/concerns/destroyable_spec.rb
704
- - spec/unit/spark_api/models/concerns/savable_spec.rb
705
- - spec/unit/spark_api/models/account_spec.rb
706
- - spec/unit/spark_api/models/photo_spec.rb
707
- - spec/unit/spark_api/models/constraint_spec.rb
708
- - spec/unit/spark_api/models/rental_calendar_spec.rb
709
- - spec/unit/spark_api/models/newsfeed_spec.rb
710
- - spec/unit/spark_api/models/fields_spec.rb
711
- - spec/unit/spark_api/models/listing_cart_spec.rb
712
- - spec/unit/spark_api/models/account_report_spec.rb
713
- - spec/unit/spark_api/models/shared_listing_spec.rb
714
- - spec/unit/spark_api/models/system_info_spec.rb
715
- - spec/unit/spark_api/models/base_spec.rb
716
- - spec/unit/spark_api/models/saved_search_spec.rb
717
- - spec/unit/spark_api/models/subresource_spec.rb
718
- - spec/unit/spark_api/models/floplan_spec.rb
689
+ - spec/unit/spark_api/authentication/api_auth_spec.rb
690
+ - spec/unit/spark_api/authentication/oauth2_impl/single_session_provider_spec.rb
691
+ - spec/unit/spark_api/authentication/oauth2_impl/grant_type_base_spec.rb
692
+ - spec/unit/spark_api/authentication/oauth2_impl/faraday_middleware_spec.rb
719
693
  - spec/unit/spark_api/models/notification_spec.rb
694
+ - spec/unit/spark_api/models/floplan_spec.rb
695
+ - spec/unit/spark_api/models/fields_spec.rb
696
+ - spec/unit/spark_api/models/open_house_spec.rb
720
697
  - spec/unit/spark_api/models/document_spec.rb
698
+ - spec/unit/spark_api/models/newsfeed_spec.rb
699
+ - spec/unit/spark_api/models/system_info_spec.rb
700
+ - spec/unit/spark_api/models/tour_of_home_spec.rb
701
+ - spec/unit/spark_api/models/vow_account_spec.rb
721
702
  - spec/unit/spark_api/models/activity_spec.rb
722
- - spec/unit/spark_api/models/standard_fields_spec.rb
703
+ - spec/unit/spark_api/models/listing_meta_translations_spec.rb
704
+ - spec/unit/spark_api/models/news_feed_meta_spec.rb
705
+ - spec/unit/spark_api/models/listing_spec.rb
723
706
  - spec/unit/spark_api/models/sort_spec.rb
724
- - spec/unit/spark_api/models/finders_spec.rb
725
- - spec/unit/spark_api/models/tour_of_home_spec.rb
726
- - spec/unit/spark_api/models/email_link_spec.rb
707
+ - spec/unit/spark_api/models/subresource_spec.rb
708
+ - spec/unit/spark_api/models/connect_prefs_spec.rb
709
+ - spec/unit/spark_api/models/rule_spec.rb
727
710
  - spec/unit/spark_api/models/video_spec.rb
728
- - spec/unit/spark_api/models/message_spec.rb
729
711
  - spec/unit/spark_api/models/virtual_tour_spec.rb
730
- - spec/unit/spark_api/models/open_house_spec.rb
731
- - spec/unit/spark_api/models/property_types_spec.rb
732
- - spec/unit/spark_api/models/defaultable_spec.rb
733
- - spec/unit/spark_api/models/news_feed_meta_spec.rb
734
- - spec/unit/spark_api/models/vow_account_spec.rb
735
- - spec/unit/spark_api/models/listing_spec.rb
712
+ - spec/unit/spark_api/models/listing_cart_spec.rb
713
+ - spec/unit/spark_api/models/message_spec.rb
714
+ - spec/unit/spark_api/models/email_link_spec.rb
715
+ - spec/unit/spark_api/models/standard_fields_spec.rb
736
716
  - spec/unit/spark_api/models/dirty_spec.rb
737
- - spec/unit/spark_api/models/connect_prefs_spec.rb
738
- - spec/unit/spark_api/models/shared_link_spec.rb
717
+ - spec/unit/spark_api/models/account_spec.rb
718
+ - spec/unit/spark_api/models/photo_spec.rb
719
+ - spec/unit/spark_api/models/finders_spec.rb
720
+ - spec/unit/spark_api/models/note_spec.rb
721
+ - spec/unit/spark_api/models/concerns/savable_spec.rb
722
+ - spec/unit/spark_api/models/concerns/destroyable_spec.rb
739
723
  - spec/unit/spark_api/models/portal_spec.rb
740
- - spec/unit/spark_api/models/rule_spec.rb
724
+ - spec/unit/spark_api/models/defaultable_spec.rb
725
+ - spec/unit/spark_api/models/constraint_spec.rb
726
+ - spec/unit/spark_api/models/shared_listing_spec.rb
727
+ - spec/unit/spark_api/models/property_types_spec.rb
728
+ - spec/unit/spark_api/models/search_template/quick_search_spec.rb
729
+ - spec/unit/spark_api/models/contact_spec.rb
730
+ - spec/unit/spark_api/models/rental_calendar_spec.rb
731
+ - spec/unit/spark_api/models/saved_search_spec.rb
732
+ - spec/unit/spark_api/models/account_report_spec.rb
733
+ - spec/unit/spark_api/models/base_spec.rb
734
+ - spec/unit/spark_api/models/shared_link_spec.rb
735
+ - spec/unit/spark_api/faraday_middleware_spec.rb
736
+ - spec/unit/spark_api/configuration_spec.rb
737
+ - spec/unit/spark_api/primary_array_spec.rb
738
+ - spec/unit/spark_api/configuration/yaml_spec.rb
739
+ - spec/unit/spark_api/multi_client_spec.rb
740
+ - spec/unit/spark_api/authentication_spec.rb
741
741
  - spec/spec_helper.rb