lita-gauth 0.1.0.3
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 +7 -0
- data/.gitignore +17 -0
- data/.travis.yml +8 -0
- data/Gemfile +3 -0
- data/Guardfile +72 -0
- data/README.md +22 -0
- data/Rakefile +6 -0
- data/lib/lita-gauth.rb +12 -0
- data/lib/lita/handlers/gauth.rb +89 -0
- data/lita-gauth.gemspec +27 -0
- data/locales/en.yml +4 -0
- data/spec/lita/handlers/gauth_spec.rb +128 -0
- data/spec/spec_helper.rb +18 -0
- data/templates/.gitkeep +0 -0
- data/templates/auth_redir.html.erb +58 -0
- data/templates/auth_root.html.erb +26 -0
- data/token_test.json +4 -0
- metadata +202 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: e7c5f8adac615e198fcfec3f1a28adfd29dcdaf2ccdfe74bb9a91e95eab6bd59
|
4
|
+
data.tar.gz: f0bdc68c06c242a7ab5b2e52e75d00b87e11b6aa55db0129f4a7fb18eff80927
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 0eaf21c4392ba194b2d6e85ff6d2fa8bf6ad717e4a6f15110027c3ad95978d932840bd9eac5845eb44f86c3229eb5832a747f4ed78fb2878661d6ad28aaf3145
|
7
|
+
data.tar.gz: 67416ffd8d73072ac5d80dea276d59ddfb754661d418b47f941587ff9da02192770d512f2a4e39ddd61c6856e8b875fa630c6af073e013615c26146528a647c2
|
data/.gitignore
ADDED
data/.travis.yml
ADDED
data/Gemfile
ADDED
data/Guardfile
ADDED
@@ -0,0 +1,72 @@
|
|
1
|
+
# A sample Guardfile
|
2
|
+
# More info at https://github.com/guard/guard#readme
|
3
|
+
|
4
|
+
## Uncomment and set this to only include directories you want to watch
|
5
|
+
# directories %w(app lib config test spec features) \
|
6
|
+
# .select{|d| Dir.exists?(d) ? d : UI.warning("Directory #{d} does not exist")}
|
7
|
+
|
8
|
+
## Note: if you are using the `directories` clause above and you are not
|
9
|
+
## watching the project directory ('.'), then you will want to move
|
10
|
+
## the Guardfile to a watched dir and symlink it back, e.g.
|
11
|
+
#
|
12
|
+
# $ mkdir config
|
13
|
+
# $ mv Guardfile config/
|
14
|
+
# $ ln -s config/Guardfile .
|
15
|
+
#
|
16
|
+
# and, you'll have to watch "config/Guardfile" instead of "Guardfile"
|
17
|
+
|
18
|
+
# Note: The cmd option is now required due to the increasing number of ways
|
19
|
+
# rspec may be run, below are examples of the most common uses.
|
20
|
+
# * bundler: 'bundle exec rspec'
|
21
|
+
# * bundler binstubs: 'bin/rspec'
|
22
|
+
# * spring: 'bin/rspec' (This will use spring if running and you have
|
23
|
+
# installed the spring binstubs per the docs)
|
24
|
+
# * zeus: 'zeus rspec' (requires the server to be started separately)
|
25
|
+
# * 'just' rspec: 'rspec'
|
26
|
+
|
27
|
+
guard :rspec, cmd: "bundle exec rspec" do
|
28
|
+
require "guard/rspec/dsl"
|
29
|
+
dsl = Guard::RSpec::Dsl.new(self)
|
30
|
+
|
31
|
+
# Feel free to open issues for suggestions and improvements
|
32
|
+
|
33
|
+
# RSpec files
|
34
|
+
rspec = dsl.rspec
|
35
|
+
watch(rspec.spec_helper) { rspec.spec_dir }
|
36
|
+
watch(rspec.spec_support) { rspec.spec_dir }
|
37
|
+
watch(rspec.spec_files)
|
38
|
+
|
39
|
+
watch(%r{^templates\/})
|
40
|
+
|
41
|
+
# Ruby files
|
42
|
+
ruby = dsl.ruby
|
43
|
+
dsl.watch_spec_files_for(ruby.lib_files)
|
44
|
+
|
45
|
+
# Rails files
|
46
|
+
rails = dsl.rails(view_extensions: %w(erb haml slim))
|
47
|
+
dsl.watch_spec_files_for(rails.app_files)
|
48
|
+
dsl.watch_spec_files_for(rails.views)
|
49
|
+
|
50
|
+
watch(rails.controllers) do |m|
|
51
|
+
[
|
52
|
+
rspec.spec.call("routing/#{m[1]}_routing"),
|
53
|
+
rspec.spec.call("controllers/#{m[1]}_controller"),
|
54
|
+
rspec.spec.call("acceptance/#{m[1]}")
|
55
|
+
]
|
56
|
+
end
|
57
|
+
|
58
|
+
# Rails config changes
|
59
|
+
watch(rails.spec_helper) { rspec.spec_dir }
|
60
|
+
watch(rails.routes) { "#{rspec.spec_dir}/routing" }
|
61
|
+
watch(rails.app_controller) { "#{rspec.spec_dir}/controllers" }
|
62
|
+
|
63
|
+
# Capybara features specs
|
64
|
+
watch(rails.view_dirs) { |m| rspec.spec.call("features/#{m[1]}") }
|
65
|
+
watch(rails.layouts) { |m| rspec.spec.call("features/#{m[1]}") }
|
66
|
+
|
67
|
+
# Turnip features and steps
|
68
|
+
watch(%r{^spec/acceptance/(.+)\.feature$})
|
69
|
+
watch(%r{^spec/acceptance/steps/(.+)_steps\.rb$}) do |m|
|
70
|
+
Dir[File.join("**/#{m[1]}.feature")][0] || "spec/acceptance"
|
71
|
+
end
|
72
|
+
end
|
data/README.md
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
# lita-gauth
|
2
|
+
|
3
|
+
[](https://travis-ci.org/axylos/lita-gauth)
|
4
|
+
[](https://coveralls.io/r/axylos/lita-gauth)
|
5
|
+
|
6
|
+
TODO: Add a description of the plugin.
|
7
|
+
|
8
|
+
## Installation
|
9
|
+
|
10
|
+
Add lita-gauth to your Lita instance's Gemfile:
|
11
|
+
|
12
|
+
``` ruby
|
13
|
+
gem "lita-gauth"
|
14
|
+
```
|
15
|
+
|
16
|
+
## Configuration
|
17
|
+
|
18
|
+
TODO: Describe any configuration attributes the plugin exposes.
|
19
|
+
|
20
|
+
## Usage
|
21
|
+
|
22
|
+
TODO: Describe the plugin's features and how to use them.
|
data/Rakefile
ADDED
data/lib/lita-gauth.rb
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
require "lita"
|
2
|
+
|
3
|
+
Lita.load_locales Dir[File.expand_path(
|
4
|
+
File.join("..", "..", "locales", "*.yml"), __FILE__
|
5
|
+
)]
|
6
|
+
|
7
|
+
require "lita/handlers/gauth"
|
8
|
+
|
9
|
+
Lita::Handlers::Gauth.template_root File.expand_path(
|
10
|
+
File.join("..", "..", "templates"),
|
11
|
+
__FILE__
|
12
|
+
)
|
@@ -0,0 +1,89 @@
|
|
1
|
+
require 'google_auth_box'
|
2
|
+
module Lita
|
3
|
+
module Handlers
|
4
|
+
class Gauth < Handler
|
5
|
+
config :secret_key, required: true
|
6
|
+
|
7
|
+
config :client_id_hash, required: true
|
8
|
+
|
9
|
+
config :scopes, required: true
|
10
|
+
|
11
|
+
config :data_file_path, required: true
|
12
|
+
|
13
|
+
config :base_uri, required: true
|
14
|
+
|
15
|
+
route(/^authed\?$/, :check_auth, command: true)
|
16
|
+
route(/^auth me$/, :request_auth, command: true)
|
17
|
+
|
18
|
+
route(/^foo$/, :bar)
|
19
|
+
http.get 'auth-redir', :auth_redir
|
20
|
+
http.get 'auth-root/:id', :auth_root
|
21
|
+
http.get 'auth-save/:user_id/', :auth_save
|
22
|
+
|
23
|
+
def bar(msg)
|
24
|
+
p 'called'
|
25
|
+
p config.secret_key
|
26
|
+
msg.reply "hey there"
|
27
|
+
end
|
28
|
+
|
29
|
+
def get_user_creds(user_id)
|
30
|
+
auth_client.get_creds user_id
|
31
|
+
end
|
32
|
+
|
33
|
+
def check_auth(msg)
|
34
|
+
credentials = get_user_creds msg.user.id
|
35
|
+
|
36
|
+
if credentials.nil?
|
37
|
+
url = auth_client.get_auth_url
|
38
|
+
msg.reply "You are not authed"
|
39
|
+
msg.reply "Please click the following link to register with the goog: #{url}"
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
def save_creds(user_id, code)
|
44
|
+
auth_client.save_creds user_id, code
|
45
|
+
end
|
46
|
+
|
47
|
+
def auth_redir(req, resp)
|
48
|
+
attrs = {
|
49
|
+
storage_key: 'lita_gauth_user_id',
|
50
|
+
code: req.params["code"],
|
51
|
+
base_url: config.base_uri
|
52
|
+
}
|
53
|
+
resp.body << render_template("auth_redir.html", attrs)
|
54
|
+
end
|
55
|
+
|
56
|
+
def auth_root(req, resp)
|
57
|
+
attrs = {
|
58
|
+
"auth_redir_url": auth_client.get_auth_url,
|
59
|
+
"user_id": JSON.parse(req.env["router.params"][:id]),
|
60
|
+
"storage_key": "lita_gauth_user_id"
|
61
|
+
}
|
62
|
+
|
63
|
+
resp.body << render_template('auth_root.html', attrs)
|
64
|
+
end
|
65
|
+
|
66
|
+
def auth_save(req, resp)
|
67
|
+
user_id = JSON.parse(req.env['router.params'][:user_id])
|
68
|
+
save_creds user_id, req.params["code"]
|
69
|
+
resp.write MultiJson.dump(msg: "ok")
|
70
|
+
end
|
71
|
+
|
72
|
+
def request_auth(msg)
|
73
|
+
url = "#{config.base_uri}/auth-root"
|
74
|
+
msg.reply "Click the followin link to do the thing! #{url}"
|
75
|
+
end
|
76
|
+
|
77
|
+
def auth_client
|
78
|
+
@_auth_client ||=GoogleAuthBox::Client.new(
|
79
|
+
client_id_hash: config.client_id_hash,
|
80
|
+
scopes: config.scopes,
|
81
|
+
data_file_path: config.data_file_path,
|
82
|
+
base_uri: config.base_uri
|
83
|
+
)
|
84
|
+
end
|
85
|
+
|
86
|
+
Lita.register_handler(self)
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|
data/lita-gauth.gemspec
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
Gem::Specification.new do |spec|
|
2
|
+
spec.name = "lita-gauth"
|
3
|
+
spec.version = "0.1.0.3"
|
4
|
+
spec.authors = ["Axylos"]
|
5
|
+
spec.email = ["robertdraketalley@gmail.com"]
|
6
|
+
spec.description = "auth with google api"
|
7
|
+
spec.summary = "client for google auth"
|
8
|
+
spec.metadata = { "lita_plugin_type" => "handler" }
|
9
|
+
|
10
|
+
spec.files = `git ls-files`.split($/)
|
11
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
12
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
13
|
+
spec.require_paths = ["lib"]
|
14
|
+
|
15
|
+
spec.add_runtime_dependency "lita", ">= 4.7"
|
16
|
+
spec.add_dependency "google_auth_box", ">= 0.1.0"
|
17
|
+
|
18
|
+
spec.add_development_dependency "bundler", "~> 1.3"
|
19
|
+
|
20
|
+
spec.add_development_dependency "pry-byebug"
|
21
|
+
spec.add_development_dependency "byebug"
|
22
|
+
spec.add_development_dependency "rake"
|
23
|
+
spec.add_development_dependency "rack-test"
|
24
|
+
spec.add_development_dependency "rspec", ">= 3.0.0"
|
25
|
+
spec.add_development_dependency "simplecov"
|
26
|
+
spec.add_development_dependency "coveralls"
|
27
|
+
end
|
data/locales/en.yml
ADDED
@@ -0,0 +1,128 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe Lita::Handlers::Gauth, lita_handler: true do
|
4
|
+
let(:robot) { Lita::Robot.new(registry) }
|
5
|
+
let(:file_path) { './test_file_path' }
|
6
|
+
let(:base_uri) { "http://uri.com/auth-redir" }
|
7
|
+
subject { Lita::Handlers::Gauth.new(robot) }
|
8
|
+
let(:handler) { subject }
|
9
|
+
|
10
|
+
before do
|
11
|
+
robot.config.handlers.gauth.client_id_hash = {
|
12
|
+
"web" => {
|
13
|
+
"client_id" => 3,
|
14
|
+
"client_secret" => "super secret",
|
15
|
+
}
|
16
|
+
}
|
17
|
+
|
18
|
+
robot.config.handlers.gauth.scopes = ["sheets"]
|
19
|
+
robot.config.handlers.gauth.base_uri = base_uri
|
20
|
+
File.delete file_path if File.exist? file_path
|
21
|
+
f = File.new file_path, 'w'
|
22
|
+
f.close
|
23
|
+
|
24
|
+
robot.config.handlers.gauth.data_file_path = file_path
|
25
|
+
end
|
26
|
+
|
27
|
+
after { File.delete file_path }
|
28
|
+
describe "#is_logged_in" do
|
29
|
+
let(:auth_spy) { spy('VirtualResp') }
|
30
|
+
|
31
|
+
it { is_expected.to route("Lita authed?").to :check_auth }
|
32
|
+
|
33
|
+
it 'responds true or false' do
|
34
|
+
send_message "Lita authed?"
|
35
|
+
expect(replies[-2]).to eq "You are not authed"
|
36
|
+
end
|
37
|
+
|
38
|
+
it 'can call methods directly' do
|
39
|
+
expect(auth_spy).to receive(:reply).with(/not auth/)
|
40
|
+
subject.check_auth auth_spy
|
41
|
+
end
|
42
|
+
|
43
|
+
it 'listens for authorization requests' do
|
44
|
+
send_message "Lita auth me"
|
45
|
+
expect(replies.last).to match(base_uri)
|
46
|
+
expect(replies.last).to match("auth-root")
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
describe "#auth-root" do
|
51
|
+
let(:user_id) { 5 }
|
52
|
+
let(:auth_url) { "/auth-root/#{user_id}" }
|
53
|
+
let(:storage_key) { "lita_gauth_user_id" }
|
54
|
+
it { is_expected.to route_http(:get, "/auth-root/#{user_id}").to :auth_root }
|
55
|
+
let(:resp) { resp = http.get auth_url }
|
56
|
+
|
57
|
+
subject { resp.body }
|
58
|
+
|
59
|
+
it { is_expected.not_to be_empty }
|
60
|
+
|
61
|
+
it { is_expected.to match user_id.to_s }
|
62
|
+
|
63
|
+
it { is_expected.to match storage_key }
|
64
|
+
|
65
|
+
it { is_expected.to match base_uri }
|
66
|
+
end
|
67
|
+
|
68
|
+
describe "#oauth_callback" do
|
69
|
+
let(:code) { '4/1asdfisafu334' }
|
70
|
+
let(:storage_key) { "lita_gauth_user_id" }
|
71
|
+
let(:redir_url) { "/auth-redir/?code=#{code}" }
|
72
|
+
let(:resp) { http.get redir_url }
|
73
|
+
let(:save_url) { "#{base_uri}/save-code/729/#{code}" }
|
74
|
+
subject { resp.body }
|
75
|
+
|
76
|
+
it { is_expected.to route_http(:get, redir_url).to(:auth_redir) }
|
77
|
+
|
78
|
+
it { is_expected.not_to be_empty }
|
79
|
+
|
80
|
+
it { is_expected.to match storage_key }
|
81
|
+
|
82
|
+
it { is_expected.to match code }
|
83
|
+
|
84
|
+
it { is_expected.to match base_uri }
|
85
|
+
|
86
|
+
xit 'saves the api code' do
|
87
|
+
code = '4/er7394sadfasdf'
|
88
|
+
resp = http.get("/auth_redir?code=#{code}")
|
89
|
+
resp;
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
describe '#auth-save' do
|
94
|
+
let(:user_id) { 1034834 }
|
95
|
+
let(:code) { "4/3498afjsdlkjf30/rue" }
|
96
|
+
let(:req_url) { "/auth-save/#{user_id}/?code=#{code}" }
|
97
|
+
it { is_expected.to route_http(:get, req_url).to :auth_save }
|
98
|
+
|
99
|
+
xdescribe 'handler' do
|
100
|
+
let(:client) { double 'client' }
|
101
|
+
let(:dbl) { handler }
|
102
|
+
before do
|
103
|
+
allow(dbl).to receive :auth_client { client }
|
104
|
+
subject { dbl }
|
105
|
+
end
|
106
|
+
|
107
|
+
it 'should not have an empty response' do
|
108
|
+
resp = http.get req_url
|
109
|
+
expect(resp.body).not_to be_empty
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
113
|
+
xdescribe 'persistence' do
|
114
|
+
let(:resp) { http.get req_url }
|
115
|
+
|
116
|
+
it 'should call save creds' do
|
117
|
+
http.get req_url
|
118
|
+
end
|
119
|
+
|
120
|
+
it 'should save the data' do
|
121
|
+
expect(robot).not_to be_falsy
|
122
|
+
expect(subject.get_user_creds(user_id)).to be_truthy
|
123
|
+
end
|
124
|
+
|
125
|
+
end
|
126
|
+
end
|
127
|
+
|
128
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
require "simplecov"
|
2
|
+
require "coveralls"
|
3
|
+
SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
|
4
|
+
SimpleCov::Formatter::HTMLFormatter,
|
5
|
+
Coveralls::SimpleCov::Formatter
|
6
|
+
]
|
7
|
+
SimpleCov.start { add_filter "/spec/" }
|
8
|
+
|
9
|
+
require "lita-gauth"
|
10
|
+
require "lita/rspec"
|
11
|
+
|
12
|
+
RSpec.configure do |config|
|
13
|
+
config.filter_run focus: true
|
14
|
+
config.run_all_when_everything_filtered = true
|
15
|
+
end
|
16
|
+
# A compatibility mode is provided for older plugins upgrading from Lita 3. Since this plugin
|
17
|
+
# was generated with Lita 4, the compatibility mode should be left disabled.
|
18
|
+
Lita.version_3_compatibility_mode = false
|
data/templates/.gitkeep
ADDED
File without changes
|
@@ -0,0 +1,58 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<meta charset="UTF-8" />
|
5
|
+
<meta name="viewport" content="width=device-width" />
|
6
|
+
<title>Auth Redir</title>
|
7
|
+
</head>
|
8
|
+
<body>
|
9
|
+
<img src="https://media.giphy.com/media/y0SJVYxf90J1u/giphy.gif" />
|
10
|
+
|
11
|
+
<script type="application/javascript">
|
12
|
+
function showWinner() {
|
13
|
+
const img_url = "https://t1.rbxcdn.com/2997bd147bbf3a8851fbf57339b0e177";
|
14
|
+
const tmpl = `
|
15
|
+
<div>
|
16
|
+
<img src="${img_url}" />
|
17
|
+
</div>`;
|
18
|
+
|
19
|
+
render(tmpl);
|
20
|
+
}
|
21
|
+
|
22
|
+
function showSad(err) {
|
23
|
+
const sad_img = "http://www.roadtoepic.com/wp-content/uploads/2013/07/Sad-by-Kate-Alexander1.jpg";
|
24
|
+
const tmpl = `
|
25
|
+
<div>
|
26
|
+
<p>Sorry something went wrong!</p>
|
27
|
+
<p>${JSON.stringify(err)}</p>
|
28
|
+
<img src="${img_url}" />
|
29
|
+
</div>
|
30
|
+
`;
|
31
|
+
|
32
|
+
render(tmpl);
|
33
|
+
}
|
34
|
+
|
35
|
+
function render(tmpl) {
|
36
|
+
const body = document.querySelector('body');
|
37
|
+
window.setTimeout(() => {
|
38
|
+
body.innerHTML = tmpl;
|
39
|
+
}, 3000);
|
40
|
+
}
|
41
|
+
|
42
|
+
const key = <%= @storage_key %>;
|
43
|
+
const userId = localStorage.getItem(key);
|
44
|
+
const code = <%= @code %>;
|
45
|
+
const base_url = <%= @base_url %>;
|
46
|
+
fetch("${base_url}/auth-save/${userId}/${code}")
|
47
|
+
.then(resp => {
|
48
|
+
if (resp.ok) {
|
49
|
+
return resp.json()
|
50
|
+
} else {
|
51
|
+
throw Error('Something went wrong with the server!');
|
52
|
+
}
|
53
|
+
}).then(showWinner)
|
54
|
+
.catch(showSad);
|
55
|
+
|
56
|
+
</script>
|
57
|
+
</body>
|
58
|
+
</html>
|
@@ -0,0 +1,26 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<meta charset="UTF-8" />
|
5
|
+
<meta name="viewport" content="width=device-width" />
|
6
|
+
<title>Auth_root.html</title>
|
7
|
+
</head>
|
8
|
+
<body>
|
9
|
+
<div>Nothing to see here!</div>
|
10
|
+
<iframe
|
11
|
+
src="https://giphy.com/embed/tWHk9WtvGC4Sc"
|
12
|
+
width="480"
|
13
|
+
height="361"
|
14
|
+
frameBorder="0"
|
15
|
+
class="giphy-embed"
|
16
|
+
allowFullScreen>
|
17
|
+
</iframe>
|
18
|
+
<script type="application/javascript">
|
19
|
+
const user_id = <%= @user_id %>;
|
20
|
+
const key = <%= @storage_key %>;
|
21
|
+
localStorage.setItem(key, JSON.stringify(user_id))
|
22
|
+
const auth_url = <%= @auth_redir_url %>
|
23
|
+
window.location.href = auth_url
|
24
|
+
</script>
|
25
|
+
</body>
|
26
|
+
</html>
|
data/token_test.json
ADDED
metadata
ADDED
@@ -0,0 +1,202 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: lita-gauth
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0.3
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Axylos
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2018-03-24 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: lita
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '4.7'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '4.7'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: google_auth_box
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 0.1.0
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 0.1.0
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: bundler
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '1.3'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '1.3'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: pry-byebug
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: byebug
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: rake
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: rack-test
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: rspec
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ">="
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: 3.0.0
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ">="
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: 3.0.0
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: simplecov
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - ">="
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - ">="
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: coveralls
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - ">="
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '0'
|
146
|
+
type: :development
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - ">="
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '0'
|
153
|
+
description: auth with google api
|
154
|
+
email:
|
155
|
+
- robertdraketalley@gmail.com
|
156
|
+
executables: []
|
157
|
+
extensions: []
|
158
|
+
extra_rdoc_files: []
|
159
|
+
files:
|
160
|
+
- ".gitignore"
|
161
|
+
- ".travis.yml"
|
162
|
+
- Gemfile
|
163
|
+
- Guardfile
|
164
|
+
- README.md
|
165
|
+
- Rakefile
|
166
|
+
- lib/lita-gauth.rb
|
167
|
+
- lib/lita/handlers/gauth.rb
|
168
|
+
- lita-gauth.gemspec
|
169
|
+
- locales/en.yml
|
170
|
+
- spec/lita/handlers/gauth_spec.rb
|
171
|
+
- spec/spec_helper.rb
|
172
|
+
- templates/.gitkeep
|
173
|
+
- templates/auth_redir.html.erb
|
174
|
+
- templates/auth_root.html.erb
|
175
|
+
- token_test.json
|
176
|
+
homepage:
|
177
|
+
licenses: []
|
178
|
+
metadata:
|
179
|
+
lita_plugin_type: handler
|
180
|
+
post_install_message:
|
181
|
+
rdoc_options: []
|
182
|
+
require_paths:
|
183
|
+
- lib
|
184
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
185
|
+
requirements:
|
186
|
+
- - ">="
|
187
|
+
- !ruby/object:Gem::Version
|
188
|
+
version: '0'
|
189
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
190
|
+
requirements:
|
191
|
+
- - ">="
|
192
|
+
- !ruby/object:Gem::Version
|
193
|
+
version: '0'
|
194
|
+
requirements: []
|
195
|
+
rubyforge_project:
|
196
|
+
rubygems_version: 2.7.6
|
197
|
+
signing_key:
|
198
|
+
specification_version: 4
|
199
|
+
summary: client for google auth
|
200
|
+
test_files:
|
201
|
+
- spec/lita/handlers/gauth_spec.rb
|
202
|
+
- spec/spec_helper.rb
|