g_sheets 0.2.0 → 0.3.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
  SHA1:
3
- metadata.gz: cc92b3a82cf114ffe7d27920a57e044c63df59b6
4
- data.tar.gz: 4c01053def903df907b56746493d1067914a182e
3
+ metadata.gz: c85033de590976ff3bc361972aa2e635e13da8e4
4
+ data.tar.gz: 29435f9306488155d643f2d234f3a527782c3b60
5
5
  SHA512:
6
- metadata.gz: dd009be75e2ab073a9750dd8ddd5f82739829d96d05569cffbf49087780c71d7447b80d3950237746a5e6b10f47ce09da58b163b83461d77d7e39a08c60b4348
7
- data.tar.gz: 5b8e72be57bd46cd6f18b5af7d41f334c7ebbc8a47d571842e761ccfde70a6fd769ae5d8f38402df2fe33e2439da172e8681273aff1c7208d8434666ddc5c20b
6
+ metadata.gz: 4aff6638a034c4f1c20f1d9cc216f8066c8122465e20a3b74bd0d511445116903b5a8a1c128498070f5ef33815b0250496492c9b5955b6ae86ad83aad68a1611
7
+ data.tar.gz: 800c0ab8d9a3a2c0cc10057c57652c7156ac9ac24cb1864cb4534c643a2b79c320e35afc8018999543047f02dc93ff8fc7777c53bc93586e55a26434a57dac5f
data/.gitignore CHANGED
@@ -12,4 +12,4 @@
12
12
  .rspec_status
13
13
 
14
14
  .env
15
-
15
+ scratch
data/g_sheets.gemspec CHANGED
@@ -29,7 +29,7 @@ Gem::Specification.new do |spec|
29
29
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
30
30
  spec.require_paths = ["lib"]
31
31
 
32
- spec.add_development_dependency "bundler", "~> 1.14"
32
+ spec.add_development_dependency "bundler", "~> 1"
33
33
  spec.add_development_dependency "rake", "~> 10.0"
34
34
  spec.add_development_dependency "rspec", "~> 3.0"
35
35
 
data/lib/g_sheets.rb CHANGED
@@ -12,3 +12,4 @@ require "g_sheets/oauth/offline"
12
12
  require "g_sheets/session"
13
13
  require "g_sheets/spread_sheet"
14
14
  require "g_sheets/sheet"
15
+ require "g_sheets/row"
@@ -0,0 +1,6 @@
1
+ require "g_sheets/v4/row"
2
+
3
+ module GSheets
4
+ class Row < V4::Row
5
+ end
6
+ end
@@ -0,0 +1,9 @@
1
+ module GSheets
2
+ module V4
3
+ class Row
4
+ def initialize(row_as_hash)
5
+ @data = row_as_hash
6
+ end
7
+ end
8
+ end
9
+ end
@@ -20,6 +20,13 @@ module GSheets
20
20
  )
21
21
  end
22
22
 
23
+ def get_spreadsheet_values(id:, sheet_name:)
24
+ service.get_spreadsheet_values(
25
+ id,
26
+ sheet_name
27
+ )
28
+ end
29
+
23
30
  def service
24
31
  @service
25
32
  end
@@ -15,6 +15,20 @@ module GSheets
15
15
  row: row
16
16
  )
17
17
  end
18
+
19
+ def rows
20
+ all_rows = @session.get_spreadsheet_values(
21
+ id: @spread_sheet.id,
22
+ sheet_name: @sheet_name
23
+ ).values
24
+
25
+ headers = all_rows[0]
26
+ all_rows.drop(1).map { |row|
27
+ row_as_hash = {}
28
+ headers.zip(row) { |k, v| row_as_hash[k] = v }
29
+ Row.new(row_as_hash)
30
+ }
31
+ end
18
32
  end
19
33
  end
20
34
  end
@@ -1,3 +1,3 @@
1
1
  module GSheets
2
- VERSION = "0.2.0"
2
+ VERSION = "0.3.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: g_sheets
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - parasquid
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-02-16 00:00:00.000000000 Z
11
+ date: 2017-02-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.14'
19
+ version: '1'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '1.14'
26
+ version: '1'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -169,12 +169,11 @@ files:
169
169
  - g_sheets.gemspec
170
170
  - lib/g_sheets.rb
171
171
  - lib/g_sheets/oauth/offline.rb
172
+ - lib/g_sheets/row.rb
172
173
  - lib/g_sheets/session.rb
173
174
  - lib/g_sheets/sheet.rb
174
175
  - lib/g_sheets/spread_sheet.rb
175
- - lib/g_sheets/v3/session.rb
176
- - lib/g_sheets/v3/spread_sheet.rb
177
- - lib/g_sheets/v3/work_sheet.rb
176
+ - lib/g_sheets/v4/row.rb
178
177
  - lib/g_sheets/v4/session.rb
179
178
  - lib/g_sheets/v4/sheet.rb
180
179
  - lib/g_sheets/v4/spread_sheet.rb
@@ -198,7 +197,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
198
197
  version: '0'
199
198
  requirements: []
200
199
  rubyforge_project:
201
- rubygems_version: 2.6.8
200
+ rubygems_version: 2.5.1
202
201
  signing_key:
203
202
  specification_version: 4
204
203
  summary: Database like API for Google Spreadsheets
@@ -1,33 +0,0 @@
1
- module GSheets
2
- module V3
3
- class Session
4
- def initialize(access_token:, http_client: Faraday, alt: "json")
5
- @access_token = access_token
6
- @alt = alt
7
- @http_client = http_client
8
- end
9
-
10
- def get_cells(id:, grid_id: "default", options:[])
11
- connection.get "cells/#{id}/#{grid_id}/private/full?#{options.join('&')}"
12
- end
13
-
14
- def get_list(id:, grid_id: "default", options:[])
15
- connection.get "list/#{id}/#{grid_id}/private/full?#{options.join('&')}"
16
- end
17
-
18
- def get_worksheets(id:)
19
- connection.get "worksheets/#{id}/private/full"
20
- end
21
-
22
- def connection
23
- @http_client.new "#{sheets_api_endpoint}?access_token=#{@access_token}&alt=#{@alt}"
24
- end
25
-
26
- private
27
-
28
- def sheets_api_endpoint
29
- "https://spreadsheets.google.com/feeds"
30
- end
31
- end
32
- end
33
- end
@@ -1,47 +0,0 @@
1
- module GSheets
2
- module V3
3
- class SpreadSheet
4
- def initialize(session:, id:)
5
- @id = id
6
- @session = session
7
- end
8
-
9
- def worksheets
10
- list_work_sheets.keys.map do |title|
11
- WorkSheet.new(session: @session, id: @id, grid_id: list_work_sheets[title])
12
- end
13
- end
14
-
15
- private
16
-
17
- def list_work_sheets
18
- result = {}
19
- document["feed"]["entry"].each do |e|
20
- result[get_title(e)] = get_grid_id_from_link(e["link"])
21
- end
22
- result
23
- end
24
-
25
- def document
26
- JSON.parse(@session.get_worksheets(id: @id).body)
27
- end
28
-
29
- def get_title(entry)
30
- entry["title"]["$t"]
31
- end
32
-
33
- def get_self_link(link)
34
- link.select { |l| l["rel"] == "self" }.first["href"]
35
- end
36
-
37
- def get_grid_id(self_link)
38
- self_link.split("/").last
39
- end
40
-
41
- def get_grid_id_from_link(link)
42
- self_link = get_self_link(link)
43
- get_grid_id(self_link)
44
- end
45
- end
46
- end
47
- end
@@ -1,50 +0,0 @@
1
- module GSheets
2
- module V3
3
- class WorkSheet
4
- def initialize(session:, grid_id: " default", id:)
5
- @grid_id = grid_id
6
- @session = session
7
- @id = id
8
- end
9
-
10
- def headers
11
- cells_first_row["feed"]["entry"].map {|e| e["content"]["$t"]}
12
- end
13
-
14
- def rows
15
- data_list = worksheet_as_list["feed"]["entry"]
16
- list = data_list.map {|entry|
17
- [
18
- "title: #{entry['title']['$t']}",
19
- entry["content"]["$t"]
20
- ].join(", ")
21
- }
22
-
23
- result = []
24
- list.each do |l|
25
- row = {}
26
- l.split(",").each do |elem|
27
- e = elem.split(":")
28
- row[e.first.strip.freeze] = e.last.strip.freeze
29
- end
30
- result << row
31
- end
32
- result.map(&:values)
33
- end
34
-
35
- private
36
-
37
- def cells_first_row
38
- JSON.parse(@session.get_cells(id: @id, grid_id: @grid_id, options: header_row_options).body)
39
- end
40
-
41
- def worksheet_as_list
42
- JSON.parse(@session.get_list(id: @id, grid_id: @grid_id).body)
43
- end
44
-
45
- def header_row_options
46
- ["min-row=1", "max-row=1"]
47
- end
48
- end
49
- end
50
- end