bearcat 1.6.3 → 1.6.5.beta1

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: 61578b9d07a934224a2406667ff332035159d40ff2dda83bb2225e8976ea0160
4
- data.tar.gz: b0a1c470e8b62266ff4cc2d0015cbfbaf63cc2166f8ecaa31d96abc21c02ff08
3
+ metadata.gz: cd97acc800c267140f131ef12af13e3e2303b1fd440f146a0889ba40fcb47c9b
4
+ data.tar.gz: 57518d64fcca4a308711f63488ee51ba946eb10eccc2d7b956874282ad65329b
5
5
  SHA512:
6
- metadata.gz: 9ddeeb8f8baedc464fbc53e4be7769d761ee2161516d81cf709865c538413ad5fcb28c702a6c626979b04f35af27476d1d6edbb7fe9e7f2b3141257597212b6f
7
- data.tar.gz: 90c95f69ecc2f51949d978bbe46df9e77bf2e4686d1c9eac07f1e1be2da6ce9f2a12e3d5d630bf95891c8faa9c0e7ee9616c9f9d7ce70cef036d591c32257df7
6
+ metadata.gz: e9c543b8d57865beebf6a86c6f505b620ff85196050ae8883ca3b84c63c94e7442a33c31ca47d4daf61f749e559d8bfa97b1ce0cd901345f18f533abf74cd94f
7
+ data.tar.gz: 0db04f590f1437e072d0ecc40e003fc664b4b8fb56fccb81ae701e0891ac25db92689cc536b6fd481db38bfbd6914561f62eed8719e5ab484d20370acffc3af3
@@ -36,6 +36,9 @@ module Bearcat
36
36
  super
37
37
  connection.builder.insert(Footrest::RaiseFootrestErrors, ExtendedRaiseFootrestErrors)
38
38
  connection.builder.delete(Footrest::RaiseFootrestErrors)
39
+
40
+ connection.builder.insert(Faraday::Request::UrlEncoded, LegacyContentTypeMiddleware)
41
+ connection.builder.delete(Faraday::Request::UrlEncoded)
39
42
  end
40
43
 
41
44
  def self.cache_on_self(key, &block)
@@ -121,6 +124,29 @@ module Bearcat
121
124
  end
122
125
  end
123
126
 
127
+ # This is unfortunate... Some of the specs pass URL-Encoded keys
128
+ # (eg `{ "x[y]" => 3 }`) themselves, leading me to believe that
129
+ # some apps may as well. Bearcat itself (outside of specs) does
130
+ # not participate in this, but CanvasSync does.
131
+ #
132
+ # This Regex can be used to find most cases fairly reliably: ["']\w+\[
133
+ class LegacyContentTypeMiddleware < Faraday::Middleware
134
+ def initialize(*args)
135
+ super
136
+ @json_middleware = Faraday::Request::Json.new(*args)
137
+ @urlenc_middleware = Faraday::Request::UrlEncoded.new(*args)
138
+ end
139
+
140
+ def call(env)
141
+ b = env[:body]
142
+ if b.is_a?(Hash) && b.keys.any? {|k| k.to_s.include?("[") }
143
+ @urlenc_middleware.call(env)
144
+ else
145
+ @json_middleware.call(env)
146
+ end
147
+ end
148
+ end
149
+
124
150
  # Overridden response error middleware that, if an error code doesn't map to an exception, raises a more generic exception
125
151
  class ExtendedRaiseFootrestErrors < Footrest::RaiseFootrestErrors
126
152
  def on_complete(response)
@@ -1,3 +1,3 @@
1
1
  module Bearcat
2
- VERSION = '1.6.3' unless defined?(Bearcat::VERSION)
2
+ VERSION = '1.6.5.beta1' unless defined?(Bearcat::VERSION)
3
3
  end
@@ -7,7 +7,7 @@ describe Bearcat::Client::CanvasFiles do
7
7
 
8
8
  it 'uploads a file' do
9
9
  stub_post(@client, "/my/upload/path").
10
- with(:body => {"name" => "bearcat.jpg", "size" => "121363"}).
10
+ with(:body => {"name" => "bearcat.jpg", "size" => 121363}).
11
11
  to_return(json_response('canvas_files', 'declare_file.json'))
12
12
 
13
13
  stub_request(:post, "https://upload-url.invalid/").
@@ -21,7 +21,7 @@ describe Bearcat::Client::CanvasFiles do
21
21
 
22
22
  it 'throws an error on a failed file upload' do
23
23
  stub_post(@client, "/my/upload/path").
24
- with(:body => {"name" => "bearcat.jpg", "size" => "121363"}).
24
+ with(:body => {"name" => "bearcat.jpg", "size" => 121363}).
25
25
  to_return(json_response('canvas_files', 'declare_file.json'))
26
26
 
27
27
  stub_request(:post, "https://upload-url.invalid/").
@@ -7,7 +7,7 @@ describe Bearcat::Client::GroupMemberships do
7
7
 
8
8
  it "creates a group membership" do
9
9
  stub_post(@client, "/api/v1/groups/3/memberships").with(:body => {"user_id"=>"6"}).to_return(json_response("created_group_membership.json"))
10
- created_group_membership = @client.create_group_membership(3, { user_id: 6 })
10
+ created_group_membership = @client.create_group_membership(3, { user_id: "6" })
11
11
  created_group_membership['id'] == 14
12
12
  created_group_membership['group_id'] == 3
13
13
  created_group_membership['workflow_state'] == 'accepted'
@@ -10,7 +10,7 @@ describe Bearcat::Client::Enrollments do
10
10
 
11
11
  it "sets the auth_token" do
12
12
  stub_post(client, "/login/oauth2/token").
13
- with(:body => {"client_id"=>"10000000000002", "client_secret"=>"secret", "code"=>"code", "redirect_url"=>"http://localhost:9393", 'grant_type' => 'authorization_code'}).
13
+ with(:body => {"client_id"=>10000000000002, "client_secret"=>"secret", "code"=>"code", "redirect_url"=>"http://localhost:9393", 'grant_type' => 'authorization_code'}).
14
14
  to_return(json_response('access_token.json'))
15
15
  client.retrieve_token(10000000000002, 'http://localhost:9393', 'secret', 'code')
16
16
  client.config.token.should == "foo_bar_token"
File without changes
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bearcat
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.6.3
4
+ version: 1.6.5.beta1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Instructure CustomDev
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-12-08 00:00:00.000000000 Z
11
+ date: 2025-12-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -437,9 +437,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
437
437
  version: '0'
438
438
  required_rubygems_version: !ruby/object:Gem::Requirement
439
439
  requirements:
440
- - - ">="
440
+ - - ">"
441
441
  - !ruby/object:Gem::Version
442
- version: '0'
442
+ version: 1.3.1
443
443
  requirements: []
444
444
  rubygems_version: 3.1.6
445
445
  signing_key: