google_spreadsheet_fetcher 1.8.0 → 1.9.1

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: cff3e92433c66cea9ef0c7b38034a0a1dc8b60147d23b79b8fdd8c63b75d410b
4
- data.tar.gz: 3990a45e68356829594c4efe28ca5e5d22930e960276a66787c85e8746aef0a8
3
+ metadata.gz: a3660f6d65df012ef4f8dab6b94a6546c5fff27c188728228af19733f21d5114
4
+ data.tar.gz: ac69095de2b42ca87b8f4cc94a1789ef06a6daed653864fc731f4c258fcaa4b8
5
5
  SHA512:
6
- metadata.gz: a89913bd36f9d02448d8705e5b28e901306ab65d7abaa56879d1bfd961939e5a7978a4169a9e9b49ceee0b90b38fda03435e230fe00a25c3cfd05487161e7c18
7
- data.tar.gz: 1378109ec133abfbb2caed2022cd3b31fe472a4ca9ec1ee7a9c4c3532df045f70c917e3adc38c00d47d4d56519aefc96f8d0a065d019de8c568163ab35f20cc2
6
+ metadata.gz: 5e384e728280389bc97dde41209c092f4a7fc5260b90fcbdbb98791265845d1873bddb4ddb30bf8dae170de548a32812ba7635e802beb5fec1e10aa4c2ab5473
7
+ data.tar.gz: 3e924a4be7fbef426b1ec35102145c9cb19148794ee1452256b8ddbaadfcdecb2be6cdc815064b5664478622f72c2e380a1ee0586fa57716212b68edcdcf91ee
@@ -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
data/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2022 Takahiro Ooishi
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -12,6 +12,7 @@ Gem::Specification.new do |spec|
12
12
  spec.summary = %q{Google Spreadsheet fetcher}
13
13
  spec.description = %q{Google Spreadsheet fetcher}
14
14
  spec.homepage = "https://github.com/taka0125/google_spreadsheet_fetcher"
15
+ spec.licenses = ['MIT']
15
16
 
16
17
  spec.files = `git ls-files -z`.split("\x0").reject do |f|
17
18
  f.match(%r{^(test|spec|features)/})
@@ -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
@@ -14,7 +14,7 @@ module GoogleSpreadsheetFetcher
14
14
  @user_id = user_id
15
15
  @config = config || GoogleSpreadsheetFetcher.config
16
16
  @application_name = application_name
17
- @token_store = config.token_store || Google::Auth::Stores::FileTokenStore.new(file: @config.credential_store_file)
17
+ @token_store = @config.token_store || Google::Auth::Stores::FileTokenStore.new(file: @config.credential_store_file)
18
18
  end
19
19
 
20
20
  def build
@@ -1,3 +1,3 @@
1
1
  module GoogleSpreadsheetFetcher
2
- VERSION = "1.8.0"
2
+ VERSION = "1.9.1"
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,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: google_spreadsheet_fetcher
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.8.0
4
+ version: 1.9.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Takahiro Ooishi
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2021-11-12 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,10 +89,13 @@ 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"
95
97
  - Gemfile
98
+ - LICENSE
96
99
  - README.md
97
100
  - Rakefile
98
101
  - bin/console
@@ -103,10 +106,12 @@ files:
103
106
  - lib/google_spreadsheet_fetcher/config.rb
104
107
  - lib/google_spreadsheet_fetcher/error.rb
105
108
  - lib/google_spreadsheet_fetcher/fetcher.rb
109
+ - lib/google_spreadsheet_fetcher/sheet_url.rb
106
110
  - lib/google_spreadsheet_fetcher/sheets_service_builder.rb
107
111
  - lib/google_spreadsheet_fetcher/version.rb
108
112
  homepage: https://github.com/taka0125/google_spreadsheet_fetcher
109
- licenses: []
113
+ licenses:
114
+ - MIT
110
115
  metadata: {}
111
116
  post_install_message:
112
117
  rdoc_options: []
@@ -123,7 +128,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
123
128
  - !ruby/object:Gem::Version
124
129
  version: '0'
125
130
  requirements: []
126
- rubygems_version: 3.0.3
131
+ rubygems_version: 3.3.7
127
132
  signing_key:
128
133
  specification_version: 4
129
134
  summary: Google Spreadsheet fetcher