browse-everything 1.5.0 → 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 75a514ad33ec151f78c54fd74220a6d385bde4107894e2b6beb69e30eab6c27e
4
- data.tar.gz: e688ee1ba6a0a9b8f519ca33077acda6bbc062033fc122c33876da850ff36146
3
+ metadata.gz: eedf3447096af5429b239653b707bf23e881fcd43a097cbe25804c7d48bc16e2
4
+ data.tar.gz: 1ccf9adb1e189a413ae6ceb9a4e67bccfae3a5179c84f583c1b165f4e051cf00
5
5
  SHA512:
6
- metadata.gz: 8b3b2068517c326ca832b8adf020dff2e297576bb19189f0707e5f812cc01b09ceef932cc8903fd1f60d6d0031d02d66685d5ba72829c89c22ee84474c2527d4
7
- data.tar.gz: cf3298fd572ca0666e9a808ffb1d359cc48050ad6a512d8777d2c9fb0635b8546c0fa7c9312198ea2113440cfc24d4a6ef28302c98d343c2dde7b5edefcae260
6
+ metadata.gz: 58511d9c04085a4a9d72246c906bb20cb46bac2e980d17bf90276807b67fe4c38eab79dbae89c10a69e735da6ee2e0acffe0399fe7993526a0454886cc3555ee
7
+ data.tar.gz: 5484761c6ed0b148ba8a10852dea363a1c6860b146271dd0b8bedbad65f37dfb50b0644f3da2ae533c0b84c782fadea9d808f8d1f2d10d1acb00e3ee8f9d6b34
data/Gemfile CHANGED
@@ -45,6 +45,10 @@ if ENV['RAILS_VERSION']
45
45
 
46
46
  # sprockets is optional for rails 7, but we currently require it, and test with it.
47
47
  gem "sprockets-rails"
48
+
49
+ # workaround bug in old rails
50
+ # https://github.com/rails/rails/pull/54264
51
+ gem "concurrent-ruby", "< 1.3.5"
48
52
  when /^6\.1\./
49
53
  # rails previous to 7.1 can't use sqlite 2
50
54
  gem "sqlite3", "~> 1.4"
@@ -53,17 +57,18 @@ if ENV['RAILS_VERSION']
53
57
  # Once mail 2.8.0 final is released this will not be required.
54
58
  # https://github.com/mikel/mail/pull/1472
55
59
  gem "mail", ">= 2.8.0.rc1"
60
+
61
+ # workaround bug in old rails
62
+ # https://github.com/rails/rails/pull/54264
63
+ gem "concurrent-ruby", "< 1.3.5"
56
64
  when /^6\.0\./
57
65
  # rails previous to 7.1 can't use sqlite 2
58
66
  gem "sqlite3", "~> 1.4"
59
67
 
60
68
  gem 'sass-rails', '>= 6'
61
- when /^5\.[12]\./
62
- # rails previous to 7.1 can't use sqlite 2
63
- gem "sqlite3", "~> 1.4"
64
69
 
65
- gem 'sass-rails', '~> 5.0'
66
- gem 'sprockets', '~> 3.7'
67
- gem 'thor', '~> 0.20'
70
+ # workaround bug in old rails
71
+ # https://github.com/rails/rails/pull/54264
72
+ gem "concurrent-ruby", "< 1.3.5"
68
73
  end
69
74
  end
@@ -26,7 +26,7 @@ Gem::Specification.new do |spec|
26
26
  spec.add_dependency 'rails', '>= 4.2', '< 8.1'
27
27
  spec.add_dependency 'ruby-box'
28
28
  spec.add_dependency 'signet', '~> 0.8'
29
- spec.add_dependency 'typhoeus'
29
+ spec.add_dependency 'faraday', "~> 2.0"
30
30
 
31
31
  # Development dependencies include dependencies necessary for running
32
32
  # the dummy test app at ./spec/dummy_test_app
@@ -70,7 +70,7 @@ module BrowseEverything
70
70
  # @param path [String] the path (default to the root)
71
71
  # @return [Array<BrowseEverything::FileEntry>] file entries for the path
72
72
  def list_files(drive, request_params, path: '')
73
- drive.list_files(request_params.to_h) do |file_list, error|
73
+ drive.list_files(**request_params.to_h) do |file_list, error|
74
74
  # Raise an exception if there was an error Google API's
75
75
  if error.present?
76
76
  # In order to properly trigger reauthentication, the token must be cleared
@@ -2,25 +2,25 @@
2
2
 
3
3
  require 'addressable'
4
4
  require 'tempfile'
5
- require 'typhoeus'
5
+ require 'faraday'
6
6
 
7
7
  module BrowseEverything
8
8
  # Class for raising errors when a download is invalid
9
9
  class DownloadError < StandardError
10
- attr_reader :response
10
+ attr_accessor :response_body
11
11
 
12
12
  # Constructor
13
13
  # @param msg [String]
14
- # @param response [Typhoeus::Response] response from the server
15
- def initialize(msg, response)
16
- @response = response
14
+ # @param response [String] response from the server
15
+ def initialize(msg, response_body)
16
+ @response_body = response_body
17
17
  super(msg)
18
18
  end
19
19
 
20
20
  # Generate the message for the exception
21
21
  # @return [String]
22
22
  def message
23
- "#{super}: #{response.body}"
23
+ "#{super}: #{response_body}"
24
24
  end
25
25
  end
26
26
 
@@ -36,7 +36,7 @@ module BrowseEverything
36
36
  # @param headers [Hash] any custom headers required to transit the request
37
37
  def can_retrieve?(uri, headers = {})
38
38
  request_headers = headers.merge(Range: 'bytes=0-0')
39
- response = Typhoeus.get(uri, headers: request_headers)
39
+ response = Faraday.get(uri, headers: request_headers)
40
40
  response.success?
41
41
  end
42
42
  end
@@ -133,17 +133,23 @@ module BrowseEverything
133
133
  file_size = options.fetch(:file_size)
134
134
  headers = options.fetch(:headers)
135
135
  url = options.fetch(:url)
136
- retrieved = 0
137
-
138
- request = Typhoeus::Request.new(url.to_s, method: :get, headers: headers)
139
- request.on_headers do |response|
140
- raise DownloadError.new("#{self.class}: Failed to download #{url}: Status Code: #{response.code}", response) unless response.code == 200
136
+ error_response = +""
137
+
138
+ conn = Faraday.new(url.to_s, headers: headers)
139
+ response = conn.get do |req|
140
+ req.options.on_data = proc do |chunk, overall_received_bytes, env|
141
+ if env.status == 200
142
+ # will yield to block passed in to outer retrieve_http, amazing.
143
+ yield(chunk, overall_received_bytes, file_size)
144
+ else
145
+ error_response << chunk
146
+ end
147
+ end
141
148
  end
142
- request.on_body do |chunk|
143
- retrieved += chunk.bytesize
144
- yield(chunk, retrieved, file_size)
149
+
150
+ unless response.status == 200
151
+ raise DownloadError.new("#{self.class}: Failed to download #{url}: Status Code: #{response.status}", error_response)
145
152
  end
146
- request.run
147
153
  end
148
154
 
149
155
  # Retrieve the file size
@@ -158,7 +164,7 @@ module BrowseEverything
158
164
  when 'file'
159
165
  File.size(url.path)
160
166
  when /https?/
161
- response = Typhoeus.head(url.to_s, headers: headers)
167
+ response = Faraday.head(url.to_s, headers: headers)
162
168
  length_value = response.headers['Content-Length'] || file_size
163
169
  length_value.to_i
164
170
  else
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module BrowseEverything
4
- VERSION = '1.5.0'
4
+ VERSION = '1.6.0'
5
5
  end
@@ -160,12 +160,13 @@ describe BrowseEverything::Retriever do
160
160
  stub_request(
161
161
  :get, "https://retrieve.cloud.example.com/some/dir/file_error.pdf"
162
162
  ).and_return(
163
- status: 403
163
+ status: 403,
164
+ body: "Did not like this"
164
165
  )
165
166
  end
166
167
 
167
168
  it 'raises an exception' do
168
- expect { retriever.download(download_options) }.to raise_error(BrowseEverything::DownloadError, /BrowseEverything::Retriever: Failed to download/)
169
+ expect { retriever.download(download_options) }.to raise_error(BrowseEverything::DownloadError, /BrowseEverything::Retriever: Failed to download.* Status Code: 403.*Did not like this/)
169
170
  end
170
171
  end
171
172
  end
@@ -234,7 +235,7 @@ describe BrowseEverything::Retriever do
234
235
  let(:url) { 'https://retrieve.cloud.example.com/some/dir/can_retrieve.pdf' }
235
236
  before do
236
237
  stub_request(
237
- :get, "https://retrieve.cloud.example.com/some/dir/can_retrieve.pdf"
238
+ :get, %r{^https://retrieve.cloud.example.com/some/dir/can_retrieve.pdf\?}
238
239
  ).to_return(
239
240
  status: 206,
240
241
  body: '%'
@@ -250,7 +251,7 @@ describe BrowseEverything::Retriever do
250
251
  let(:url) { 'https://retrieve.cloud.example.com/some/dir/cannot_retrieve.pdf' }
251
252
  before do
252
253
  stub_request(
253
- :get, "https://retrieve.cloud.example.com/some/dir/cannot_retrieve.pdf"
254
+ :get, %r{^https://retrieve.cloud.example.com/some/dir/cannot_retrieve.pdf\?}
254
255
  ).to_return(
255
256
  status: 403
256
257
  )
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: browse-everything
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.0
4
+ version: 1.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Carolyn Cole
@@ -10,10 +10,9 @@ authors:
10
10
  - Thomas Scherz
11
11
  - Xiaoming Wang
12
12
  - Jeremy Friesen
13
- autorequire:
14
13
  bindir: bin
15
14
  cert_chain: []
16
- date: 2024-12-12 00:00:00.000000000 Z
15
+ date: 1980-01-02 00:00:00.000000000 Z
17
16
  dependencies:
18
17
  - !ruby/object:Gem::Dependency
19
18
  name: addressable
@@ -140,19 +139,19 @@ dependencies:
140
139
  - !ruby/object:Gem::Version
141
140
  version: '0.8'
142
141
  - !ruby/object:Gem::Dependency
143
- name: typhoeus
142
+ name: faraday
144
143
  requirement: !ruby/object:Gem::Requirement
145
144
  requirements:
146
- - - ">="
145
+ - - "~>"
147
146
  - !ruby/object:Gem::Version
148
- version: '0'
147
+ version: '2.0'
149
148
  type: :runtime
150
149
  prerelease: false
151
150
  version_requirements: !ruby/object:Gem::Requirement
152
151
  requirements:
153
- - - ">="
152
+ - - "~>"
154
153
  - !ruby/object:Gem::Version
155
- version: '0'
154
+ version: '2.0'
156
155
  - !ruby/object:Gem::Dependency
157
156
  name: bixby
158
157
  requirement: !ruby/object:Gem::Requirement
@@ -616,7 +615,6 @@ homepage: https://github.com/projecthydra/browse-everything
616
615
  licenses:
617
616
  - Apache 2
618
617
  metadata: {}
619
- post_install_message:
620
618
  rdoc_options: []
621
619
  require_paths:
622
620
  - lib
@@ -631,8 +629,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
631
629
  - !ruby/object:Gem::Version
632
630
  version: '0'
633
631
  requirements: []
634
- rubygems_version: 3.5.9
635
- signing_key:
632
+ rubygems_version: 3.7.1
636
633
  specification_version: 4
637
634
  summary: AJAX/Rails engine file browser for cloud storage services
638
635
  test_files: