g_sheets 0.2.0 → 0.3.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
  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