google_drive_handler 0.1.0.pre.rc → 0.1.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: ae53725263a73043ffb1877d76eaf894b7403625
4
- data.tar.gz: be42728b3c55cff60d8289351ccf84b6d59a569f
3
+ metadata.gz: eecaad0fc5d9bd5f6a10efadd27a85fc3d1e62c3
4
+ data.tar.gz: 7b4b1fde6791fe9c31963b80a4fa301db36cd146
5
5
  SHA512:
6
- metadata.gz: 690d937e591eba9d82354dc8c812419e7376a7ecdc682b8ceeae5c9066186760e5ec8f788d2732dc699d942a4989e2a17dd6c91454d058e12543837dec718f88
7
- data.tar.gz: 53e7e1c6705b888e0f45d34836f5248676d32bd0fd2bf5a9885db8e991bbd63c1cef7a84bae8e56edc136e744358ad2595de3835c4ab1ef86f4a3365470dc771
6
+ metadata.gz: 28103f06fadd0de45188d85b7f66ee5c9fddd7d4030c66db73dba5e8079f034a522922abff2afccf78fa7cde9f050873851eeab35680cc0787270d244689be64
7
+ data.tar.gz: 893b55e77e0ee95c78c63cac833abb886934fb9f0eef902983f1e7ca7f0c764381703e5b435ed581b4a0dc431a9e8ec4ccbc32cab951574a89701281de97b492
data/.gitignore CHANGED
@@ -9,5 +9,7 @@
9
9
 
10
10
  # rspec failure tracking
11
11
  .rspec_status
12
- .sw*
12
+ *.sw*
13
13
  .env
14
+ *~
15
+ .byebug_history
@@ -0,0 +1 @@
1
+ 2.4.2
@@ -0,0 +1,86 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ google_drive_handler (0.1.0)
5
+ dotenv (~> 2.2)
6
+ google-api-client (~> 0.18)
7
+
8
+ GEM
9
+ remote: https://rubygems.org/
10
+ specs:
11
+ addressable (2.5.2)
12
+ public_suffix (>= 2.0.2, < 4.0)
13
+ byebug (9.1.0)
14
+ declarative (0.0.10)
15
+ declarative-option (0.1.0)
16
+ diff-lcs (1.3)
17
+ dotenv (2.2.1)
18
+ faraday (0.13.1)
19
+ multipart-post (>= 1.2, < 3)
20
+ google-api-client (0.18.0)
21
+ addressable (~> 2.5, >= 2.5.1)
22
+ googleauth (>= 0.5, < 0.7.0)
23
+ httpclient (>= 2.8.1, < 3.0)
24
+ mime-types (~> 3.0)
25
+ representable (~> 3.0)
26
+ retriable (>= 2.0, < 4.0)
27
+ googleauth (0.6.2)
28
+ faraday (~> 0.12)
29
+ jwt (>= 1.4, < 3.0)
30
+ logging (~> 2.0)
31
+ memoist (~> 0.12)
32
+ multi_json (~> 1.11)
33
+ os (~> 0.9)
34
+ signet (~> 0.7)
35
+ httpclient (2.8.3)
36
+ jwt (2.1.0)
37
+ little-plugger (1.1.4)
38
+ logging (2.2.2)
39
+ little-plugger (~> 1.1)
40
+ multi_json (~> 1.10)
41
+ memoist (0.16.0)
42
+ mime-types (3.1)
43
+ mime-types-data (~> 3.2015)
44
+ mime-types-data (3.2016.0521)
45
+ multi_json (1.12.2)
46
+ multipart-post (2.0.0)
47
+ os (0.9.6)
48
+ public_suffix (3.0.1)
49
+ rake (10.5.0)
50
+ representable (3.0.4)
51
+ declarative (< 0.1.0)
52
+ declarative-option (< 0.2.0)
53
+ uber (< 0.2.0)
54
+ retriable (3.1.1)
55
+ rspec (3.7.0)
56
+ rspec-core (~> 3.7.0)
57
+ rspec-expectations (~> 3.7.0)
58
+ rspec-mocks (~> 3.7.0)
59
+ rspec-core (3.7.0)
60
+ rspec-support (~> 3.7.0)
61
+ rspec-expectations (3.7.0)
62
+ diff-lcs (>= 1.2.0, < 2.0)
63
+ rspec-support (~> 3.7.0)
64
+ rspec-mocks (3.7.0)
65
+ diff-lcs (>= 1.2.0, < 2.0)
66
+ rspec-support (~> 3.7.0)
67
+ rspec-support (3.7.0)
68
+ signet (0.8.1)
69
+ addressable (~> 2.3)
70
+ faraday (~> 0.9)
71
+ jwt (>= 1.5, < 3.0)
72
+ multi_json (~> 1.10)
73
+ uber (0.1.0)
74
+
75
+ PLATFORMS
76
+ ruby
77
+
78
+ DEPENDENCIES
79
+ bundler (~> 1.16)
80
+ byebug (~> 9.1)
81
+ google_drive_handler!
82
+ rake (~> 10.0)
83
+ rspec (~> 3.0)
84
+
85
+ BUNDLED WITH
86
+ 1.16.0
data/README.md CHANGED
@@ -2,7 +2,9 @@
2
2
 
3
3
  Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/google_drive_handler`. To experiment with that code, run `bin/console` for an interactive prompt.
4
4
 
5
- TODO: Delete this and the text above, and describe your gem
5
+ This gem helps you to create and save different credentials and scope setup using dot environment to setup the scopes and the credentials folders.
6
+ By default is ~/.credentials/
7
+
6
8
 
7
9
  ## Installation
8
10
 
@@ -22,7 +24,14 @@ Or install it yourself as:
22
24
 
23
25
  ## Usage
24
26
 
25
- TODO: Write usage instructions here
27
+ To create the credentials the first time, you need to save in the credetital directory the client_secret.json. You have to create a project and enable apis Google Drive, Sheets, Google+ and then create a credentials and download the client_secret.json
28
+ By default the value is ~/.credentials/client_secret.json
29
+ But you could overwrite using the envirnoment variable CLIENT_SECRET_PATH in the .env file.
30
+
31
+ The command google_drive_auth is to help you to save the credentials. You can generate the credential for your scopes, running the command.
32
+ You will get a url to authorize and get the autorization code. Paste in the terminal to save the credentials for the selected scopes.
33
+
34
+
26
35
 
27
36
  ## Development
28
37
 
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "google_drive_handler"
4
+
5
+ auth=GoogleDriveHandler::Auth.new
6
+ auth.save_credentials
7
+
@@ -1,4 +1,6 @@
1
1
  require "google_drive_handler/version"
2
+ require "google_drive_handler/auth"
3
+ require "dotenv/load"
2
4
 
3
5
  module GoogleDriveHandler
4
6
  # Your code goes here...
@@ -0,0 +1,130 @@
1
+ require 'googleauth'
2
+ require 'googleauth/stores/file_token_store'
3
+ require 'fileutils'
4
+
5
+ module GoogleDriveHandler
6
+
7
+ class Auth
8
+
9
+ class << self
10
+
11
+ def default_credential_path
12
+ File.join(Dir.home,'.credentials')
13
+ end
14
+
15
+ end
16
+
17
+ OOB_URI = 'urn:ietf:wg:oauth:2.0:oob'
18
+ CLIENT_SECRETS_PATH = ENV['CLIENT_SECRETS_PATH'] || File.join(Auth::default_credential_path,'client_secret.json')
19
+ INVALID_SCOPE_ERROR = "Sorry, this is an invalid scope"
20
+
21
+ attr_accessor :service, :response, :spreadsheet
22
+ attr_reader :scope, :user_id
23
+
24
+ def initialize
25
+ @scope=ENV['SCOPE'].split.map(&:to_i)
26
+ @user_id='default'
27
+ end
28
+
29
+ def authorize
30
+ client_id = Google::Auth::ClientId.from_file(CLIENT_SECRETS_PATH)
31
+ token_store = Google::Auth::Stores::FileTokenStore.new(file: credentials_path)
32
+ authorizer = Google::Auth::UserAuthorizer.new(client_id, scope_url, token_store)
33
+ authorizer.get_credentials(user_id)
34
+ end
35
+
36
+ def choose_scope
37
+
38
+ puts "Choose one (typing the number) or more scopes (typing the numbers with one space between them):"
39
+ scopes.each_pair do |k,v|
40
+ puts "#{k}.- #{v[:name]}"
41
+ puts "\t#{v[:desc]}"
42
+ end
43
+
44
+ s=gets(chomp: true)
45
+
46
+ s=s.split
47
+ @scope=s.map do |option|
48
+ raise INVALID_SCOPE_ERROR if !scopes.keys.include?(option.to_i)
49
+ option.to_i
50
+ end
51
+
52
+ end
53
+
54
+ def save_credentials
55
+
56
+ choose_scope
57
+
58
+ FileUtils.mkdir_p(File.dirname(credentials_path))
59
+
60
+ client_id = Google::Auth::ClientId.from_file(CLIENT_SECRETS_PATH)
61
+ token_store = Google::Auth::Stores::FileTokenStore.new(file: credentials_path)
62
+ authorizer = Google::Auth::UserAuthorizer.new( client_id, scope_url, token_store)
63
+ url = authorizer.get_authorization_url(base_url: OOB_URI)
64
+ puts "Visit #{url} to get the code"
65
+
66
+ code=gets(chomp: true)
67
+
68
+ authorizer.get_and_store_credentials_from_code(user_id: user_id, code: code, base_url: OOB_URI)
69
+
70
+ puts "the credentials have been saved in #{credentials_path}"
71
+
72
+ end
73
+
74
+ def scopes
75
+ {
76
+ 1 => {
77
+ name: 'AUTH_DRIVE',
78
+ desc: 'View and manage the files in your Google Drive',
79
+ url: 'https://www.googleapis.com/auth/drive'
80
+ },
81
+ 2 => {
82
+ name: 'AUTH_DRIVE_FILE',
83
+ desc: 'View and manage Google Drive files and folders that you have opened or created with this app',
84
+ url: 'https://www.googleapis.com/auth/drive.file'
85
+ },
86
+ 3 => {
87
+ name: 'AUTH_DRIVE_READONLY',
88
+ desc: 'View the files in your Google Drive',
89
+ url: 'https://www.googleapis.com/auth/drive.readonly'
90
+ },
91
+ 4 => {
92
+ name: 'AUTH_SPREADSHEETS',
93
+ desc: 'View and manage your spreadsheets in Google Drive',
94
+ url: 'https://www.googleapis.com/auth/spreadsheets'
95
+ },
96
+ 5 => {
97
+ name: 'AUTH_SPREADSHEETS_READONLY',
98
+ desc: 'View your Google Spreadsheets',
99
+ url: 'https://www.googleapis.com/auth/spreadsheets.readonly'
100
+ }
101
+ }
102
+ end
103
+
104
+ def credentials_path
105
+ path=ENV['CREDENTIALS_PATH'] || Auth::default_credential_path
106
+ name=scope_url.map { |a| a.split('/').last }.join('.and.')
107
+ File.join(path, "sheets.googleapis.#{name}.yaml")
108
+ end
109
+
110
+ private
111
+
112
+ def scope_url
113
+ if @scope.count<1
114
+ scopes[@scope.first.to_i][:url]
115
+ else
116
+ @scope.map { |option| scopes[option.to_i][:url] }
117
+ end
118
+ end
119
+
120
+ def save_code code
121
+ name=@scope.map { |a| scopes[a][:name] }.join('_AND_')
122
+ name="GOOGLE_#{name}"
123
+ File.open('.env','a') do |f|
124
+ f.write "#{name}=#{code}"
125
+ f.close
126
+ end
127
+ end
128
+
129
+ end
130
+ end
@@ -1,3 +1,3 @@
1
1
  module GoogleDriveHandler
2
- VERSION = "0.1.0-rc"
2
+ VERSION = "0.1.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: google_drive_handler
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0.pre.rc
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Diego H Piccinini Lagos
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-12-13 00:00:00.000000000 Z
11
+ date: 2017-12-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -97,21 +97,26 @@ dependencies:
97
97
  description: To set up the scope in a easy way with a dotenv setup
98
98
  email:
99
99
  - dlagos@bookingbug.com
100
- executables: []
100
+ executables:
101
+ - google_drive_auth
101
102
  extensions: []
102
103
  extra_rdoc_files: []
103
104
  files:
104
105
  - ".gitignore"
105
106
  - ".rspec"
107
+ - ".ruby-version"
106
108
  - ".travis.yml"
107
109
  - CODE_OF_CONDUCT.md
108
110
  - Gemfile
111
+ - Gemfile.lock
109
112
  - README.md
110
113
  - Rakefile
111
114
  - bin/console
112
115
  - bin/setup
116
+ - exe/google_drive_auth
113
117
  - google_drive_handler.gemspec
114
118
  - lib/google_drive_handler.rb
119
+ - lib/google_drive_handler/auth.rb
115
120
  - lib/google_drive_handler/version.rb
116
121
  homepage: https://github.com/diegopiccinini/google_drive_handler
117
122
  licenses: []
@@ -128,9 +133,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
128
133
  version: '0'
129
134
  required_rubygems_version: !ruby/object:Gem::Requirement
130
135
  requirements:
131
- - - ">"
136
+ - - ">="
132
137
  - !ruby/object:Gem::Version
133
- version: 1.3.1
138
+ version: '0'
134
139
  requirements: []
135
140
  rubyforge_project:
136
141
  rubygems_version: 2.6.13