sheets_db 0.13.0 → 0.14.0

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: a6eb0913dc274c00619b8de23c709d73676e64e233294469c00c2eb549afcfbb
4
- data.tar.gz: ffeaa1616416edd4fa9529c982fce59f39594ec27b6d43eb7da16c5c086824cb
3
+ metadata.gz: d020639fc0646a740ab9afda00ac3bf8098835cc64c83789a08e323e4021f365
4
+ data.tar.gz: 6e9eed146d5b2e450f98830a02c6b882a9e415ba04a8c702a4df4757c6d2a1aa
5
5
  SHA512:
6
- metadata.gz: 06d3c6c10ed9009cfd370de72fd9afc8b4393b77512149fa6043a04c787086822b9c5fd165f21666c3c6612417a77c279ea6fa2023046b6a565dfe7532264f30
7
- data.tar.gz: 73b8d7c1d5a7b79061af23414984597a66d1e2accf9e7a59c84a8e58e7e53726e66869dc258f60a74b036993156f14c889583be95cf8eb2f8e18176705113edf
6
+ metadata.gz: a82534bb2ee225da6656ce6a511e97fc3174376bde01af3c414e37d6336a756f0658b36f6c0b87426ac83bb38fed4874334fdc878ea02adcf7465d217789d223
7
+ data.tar.gz: 30012de7ca8856ef2b345e6e728585d53fa1e2e1a786424b62ed62053ebae67f1acf2afd0659fc9600f03764e951bf8084bde66eb73df0f392fb04f12ff723cd
@@ -16,10 +16,26 @@ module SheetsDB
16
16
  @resource_type = resource_type
17
17
  end
18
18
 
19
+ def find(id_or_url, session: SheetsDB::Session.default)
20
+ find_by_url(id_or_url, session: session)
21
+ rescue SheetsDB::Session::InvalidGoogleDriveUrlError
22
+ find_by_id(id_or_url, session: session)
23
+ end
24
+
25
+ def find_by_url(url, session: SheetsDB::Session.default)
26
+ wrap_google_drive_resource(session.raw_file_by_url(url))
27
+ end
28
+
19
29
  def find_by_id(id, session: SheetsDB::Session.default)
20
- google_drive_resource = session.raw_file_by_id(id)
30
+ wrap_google_drive_resource(session.raw_file_by_id(id))
31
+ end
32
+
33
+ def wrap_google_drive_resource(google_drive_resource)
21
34
  if resource_type && !google_drive_resource.is_a?(resource_type)
22
- fail(ResourceTypeMismatchError, "The file with id #{id} is not a #{resource_type}")
35
+ fail(
36
+ ResourceTypeMismatchError,
37
+ "The file #{google_drive_resource.human_url} is not a #{resource_type}"
38
+ )
23
39
  end
24
40
  new(google_drive_resource)
25
41
  end
@@ -4,6 +4,7 @@ module SheetsDB
4
4
  class Session
5
5
  class IllegalDefaultError < StandardError; end
6
6
  class NoDefaultSetError < StandardError; end
7
+ class InvalidGoogleDriveUrlError < ArgumentError; end
7
8
 
8
9
  def self.default=(default)
9
10
  unless default.is_a?(self)
@@ -30,5 +31,12 @@ module SheetsDB
30
31
  def raw_file_by_id(id)
31
32
  @google_drive_session.file_by_id(id)
32
33
  end
34
+
35
+ def raw_file_by_url(url)
36
+ @google_drive_session.file_by_url(url)
37
+ rescue GoogleDrive::Error => e
38
+ (raise InvalidGoogleDriveUrlError, url) if e.message.match(/not a known Google Drive URL/)
39
+ raise
40
+ end
33
41
  end
34
- end
42
+ end
@@ -1,3 +1,3 @@
1
1
  module SheetsDB
2
- VERSION = "0.13.0"
2
+ VERSION = "0.14.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sheets_db
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.13.0
4
+ version: 0.14.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ravi Gadad
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-05-21 00:00:00.000000000 Z
11
+ date: 2024-08-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: google_drive