google_spreadsheet_fetcher 1.8.1 → 1.9.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: 01317b3b4070bd85ad5c1348628e12d328ff48d14c043dd5d24ac6cfc2e9d6bc
4
- data.tar.gz: 28bfbd3c4cce51f95c99a741f398d73e8069834e69a09bd7cb11cfbb873fb86b
3
+ metadata.gz: 8b6d94fea13b2f79415f7f890b6286d427efc2510d583c166178ec873d6f7154
4
+ data.tar.gz: ed22e78b3d512387121ff938c8768319a2d3ba670f6ef3729683d314b2d5a552
5
5
  SHA512:
6
- metadata.gz: 7b3f1cab21db6c6f37894307559f16ba4c85a2a8a6b581845ce3cf3641c85b24be03efe54c67d9b12d06eecac259a6b7974e62aa891366236987b27dc212db80
7
- data.tar.gz: a3481761544d9b371cfdba6caf4e111921b8fddd6b6628c2e900d3d90bd00193a94385a9bb87c609a0ae324715ff2939e356d5f6b1c498587b961917e83fdf4e
6
+ metadata.gz: e6f43fc91a0613c39e79e09d0cc806202bab013f92b6926978439f492c3766fff71aa97779caf6d672f132ea9ead485188234f34c9e691b7b64108898ca93600
7
+ data.tar.gz: 1e64e297e726be3625750c72dd54187f9a48d64a6c257356b309ce79240d2e9c190e3a01bca4b0ba590de6083febe97720d544f7a631ae321c18bc44cbf087da
@@ -0,0 +1,40 @@
1
+ name: rspec
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - main
7
+
8
+ pull_request:
9
+ branches:
10
+ - main
11
+
12
+ env:
13
+ RAILS_ENV: test
14
+
15
+ jobs:
16
+ test:
17
+ runs-on: ubuntu-latest
18
+ strategy:
19
+ fail-fast: false
20
+
21
+ matrix:
22
+ ruby:
23
+ - 2.6
24
+ - 2.7
25
+ - 3.0
26
+ - 3.1
27
+
28
+ steps:
29
+ - uses: actions/checkout@v2
30
+
31
+ - name: Set up Ruby
32
+ uses: ruby/setup-ruby@v1
33
+ with:
34
+ ruby-version: ${{ matrix.ruby }}
35
+ bundler-cache: true
36
+
37
+ - name: Run tests
38
+ run: |
39
+ bundle exec rspec
40
+ continue-on-error: ${{ matrix.allow_failures == 'true' }}
@@ -0,0 +1,33 @@
1
+ name: Release gem
2
+
3
+ on:
4
+ workflow_dispatch:
5
+ inputs:
6
+ rubygems-otp-code:
7
+ description: RubyGems OTP code
8
+ required: true
9
+
10
+ permissions:
11
+ contents: write
12
+
13
+ jobs:
14
+ release-gem:
15
+ runs-on: ubuntu-latest
16
+ env:
17
+ GEM_HOST_API_KEY: ${{ secrets.RUBYGEMS_API_KEY }}
18
+ GEM_HOST_OTP_CODE: ${{ github.event.inputs.rubygems-otp-code }}
19
+ steps:
20
+ - uses: actions/checkout@v2
21
+ with:
22
+ fetch-depth: 0 # bundle exec rake release で git tag を見るため、tagをfetchするようにしている
23
+ - uses: ruby/setup-ruby@v1
24
+ with:
25
+ ruby-version: 3.1.1
26
+ - name: Bundle install
27
+ run: bundle install
28
+ - name: Setup git config # bundle exec rake release でgit tagが打たれていない場合、タグを打ってpushしてくれるため用意している
29
+ run: |
30
+ git config --global user.email "taka0125@gmail.com"
31
+ git config --global user.name "Takahiro Ooishi"
32
+ - name: Release gem
33
+ run: bundle exec rake release
data/.rspec CHANGED
@@ -1,2 +1,3 @@
1
1
  --format documentation
2
2
  --color
3
+ -r spec_helper
@@ -1,4 +1,5 @@
1
1
  module GoogleSpreadsheetFetcher
2
2
  class SpreadsheetNotFound < StandardError; end
3
3
  class SheetNotFound < StandardError; end
4
+ class InvalidSheetUrl < StandardError; end
4
5
  end
@@ -0,0 +1,58 @@
1
+ require 'uri'
2
+
3
+ module GoogleSpreadsheetFetcher
4
+ class SheetUrl
5
+ HOST = 'docs.google.com'.freeze
6
+ PATH_PATTERN = %r{spreadsheets/d/(?<spreadsheet_id>[^/]+)/edit}.freeze
7
+
8
+ attr_reader :spreadsheet_id, :sheet_id
9
+
10
+ private_class_method :new
11
+
12
+ def initialize(spreadsheet_id, sheet_id)
13
+ @spreadsheet_id = spreadsheet_id
14
+ @sheet_id = sheet_id
15
+ freeze
16
+ end
17
+
18
+ def url
19
+ "https://#{self.class::HOST}/spreadsheets/d/#{spreadsheet_id}/edit#gid=#{sheet_id}"
20
+ end
21
+
22
+ def ==(other)
23
+ return false unless other.class == self.class
24
+
25
+ other.hash == hash
26
+ end
27
+
28
+ alias eql? ==
29
+
30
+ def hash
31
+ [spreadsheet_id, sheet_id].join.hash
32
+ end
33
+
34
+ class << self
35
+ def parse!(url)
36
+ uri = URI.parse(url)
37
+ raise InvalidSheetUrl unless uri.host == HOST
38
+
39
+ path_matched_result = uri.path.match(PATH_PATTERN)
40
+ raise InvalidSheetUrl unless path_matched_result
41
+
42
+ spreadsheet_id = path_matched_result[:spreadsheet_id]
43
+ sheet_id = extract_sheet_id(uri.fragment)
44
+
45
+ new(spreadsheet_id, sheet_id)
46
+ end
47
+
48
+ private
49
+
50
+ def extract_sheet_id(fragment)
51
+ return 0 if fragment.blank?
52
+
53
+ results = Hash[*fragment.split('=')]
54
+ results.dig('gid')&.to_i || 0
55
+ end
56
+ end
57
+ end
58
+ end
@@ -1,3 +1,3 @@
1
1
  module GoogleSpreadsheetFetcher
2
- VERSION = "1.8.1"
2
+ VERSION = "1.9.0"
3
3
  end
@@ -1,9 +1,11 @@
1
+ require "active_support"
1
2
  require "active_support/json"
2
3
  require "active_support/core_ext"
3
4
  require "google_spreadsheet_fetcher/version"
4
5
  require "google_spreadsheet_fetcher/config"
5
6
  require "google_spreadsheet_fetcher/error"
6
7
  require "google_spreadsheet_fetcher/fetcher"
8
+ require "google_spreadsheet_fetcher/sheet_url"
7
9
  require "google_spreadsheet_fetcher/bulk_fetcher"
8
10
  require "google_spreadsheet_fetcher/sheets_service_builder"
9
11
 
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: google_spreadsheet_fetcher
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.8.1
4
+ version: 1.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Takahiro Ooishi
8
8
  - Yuya Yokosuka
9
- autorequire:
9
+ autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2021-12-09 00:00:00.000000000 Z
12
+ date: 2022-08-11 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: google-api-client
@@ -89,6 +89,8 @@ executables: []
89
89
  extensions: []
90
90
  extra_rdoc_files: []
91
91
  files:
92
+ - ".github/workflows/main.yml"
93
+ - ".github/workflows/release.yml"
92
94
  - ".gitignore"
93
95
  - ".rspec"
94
96
  - ".travis.yml"
@@ -103,12 +105,13 @@ files:
103
105
  - lib/google_spreadsheet_fetcher/config.rb
104
106
  - lib/google_spreadsheet_fetcher/error.rb
105
107
  - lib/google_spreadsheet_fetcher/fetcher.rb
108
+ - lib/google_spreadsheet_fetcher/sheet_url.rb
106
109
  - lib/google_spreadsheet_fetcher/sheets_service_builder.rb
107
110
  - lib/google_spreadsheet_fetcher/version.rb
108
111
  homepage: https://github.com/taka0125/google_spreadsheet_fetcher
109
112
  licenses: []
110
113
  metadata: {}
111
- post_install_message:
114
+ post_install_message:
112
115
  rdoc_options: []
113
116
  require_paths:
114
117
  - lib
@@ -123,8 +126,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
123
126
  - !ruby/object:Gem::Version
124
127
  version: '0'
125
128
  requirements: []
126
- rubygems_version: 3.2.22
127
- signing_key:
129
+ rubygems_version: 3.3.7
130
+ signing_key:
128
131
  specification_version: 4
129
132
  summary: Google Spreadsheet fetcher
130
133
  test_files: []