omniauth-gplus 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.coveralls.yml +1 -0
- data/.gitignore +34 -0
- data/.rvmrc +53 -0
- data/.travis.yml +5 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +141 -0
- data/Rakefile +31 -0
- data/lib/omniauth/gplus/version.rb +5 -0
- data/lib/omniauth/strategies/gplus.rb +67 -0
- data/lib/omniauth-gplus.rb +5 -0
- data/omniauth-gplus.gemspec +29 -0
- data/test/helper.rb +24 -0
- data/test/lib/omniauth/strategies/gplus_test.rb +52 -0
- metadata +197 -0
data/.coveralls.yml
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
repo_token: CA3ezvdrDihX9GCLdNFqdXzUqK3ach32x
|
data/.gitignore
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
# See http://help.github.com/ignore-files/ for more about ignoring files.
|
2
|
+
#
|
3
|
+
# If you find yourself ignoring temporary files generated by your text editor
|
4
|
+
# or operating system, you probably want to add a global ignore instead:
|
5
|
+
# git config --global core.excludesfile ~/.gitignore
|
6
|
+
|
7
|
+
# Ignore all of the generated gem stuff
|
8
|
+
/pkg
|
9
|
+
/*.gem
|
10
|
+
|
11
|
+
# Ignore bundler config
|
12
|
+
/.bundle
|
13
|
+
/Gemfile.lock
|
14
|
+
|
15
|
+
# Ignore all bundler caching
|
16
|
+
/vendor/cache
|
17
|
+
/vendor/ruby
|
18
|
+
|
19
|
+
# Ignore all tempfiles
|
20
|
+
/tmp
|
21
|
+
|
22
|
+
# Ignores that should be in the global gitignore
|
23
|
+
# /*.rbc
|
24
|
+
# /.config
|
25
|
+
/.yardoc
|
26
|
+
# /InstalledFiles
|
27
|
+
/_yardoc
|
28
|
+
/coverage/
|
29
|
+
/doc/
|
30
|
+
# /lib/bundler/man/
|
31
|
+
# /rdoc/
|
32
|
+
# /spec/reports/
|
33
|
+
# /test/tmp/
|
34
|
+
# /test/version_tmp/
|
data/.rvmrc
ADDED
@@ -0,0 +1,53 @@
|
|
1
|
+
#!/usr/bin/env bash
|
2
|
+
|
3
|
+
# This is an RVM Project .rvmrc file, used to automatically load the ruby
|
4
|
+
# development environment upon cd'ing into the directory
|
5
|
+
|
6
|
+
# First we specify our desired <ruby>[@<gemset>], the @gemset name is optional,
|
7
|
+
# Only full ruby name is supported here, for short names use:
|
8
|
+
# echo "rvm use 1.9.3" > .rvmrc
|
9
|
+
environment_id="ruby-1.9.3-p385@omniauth-gplus"
|
10
|
+
|
11
|
+
# Uncomment the following lines if you want to verify rvm version per project
|
12
|
+
# rvmrc_rvm_version="1.18.6 ()" # 1.10.1 seams as a safe start
|
13
|
+
# eval "$(echo ${rvm_version}.${rvmrc_rvm_version} | awk -F. '{print "[[ "$1*65536+$2*256+$3" -ge "$4*65536+$5*256+$6" ]]"}' )" || {
|
14
|
+
# echo "This .rvmrc file requires at least RVM ${rvmrc_rvm_version}, aborting loading."
|
15
|
+
# return 1
|
16
|
+
# }
|
17
|
+
|
18
|
+
# First we attempt to load the desired environment directly from the environment
|
19
|
+
# file. This is very fast and efficient compared to running through the entire
|
20
|
+
# CLI and selector. If you want feedback on which environment was used then
|
21
|
+
# insert the word 'use' after --create as this triggers verbose mode.
|
22
|
+
if [[ -d "${rvm_path:-$HOME/.rvm}/environments"
|
23
|
+
&& -s "${rvm_path:-$HOME/.rvm}/environments/$environment_id" ]]
|
24
|
+
then
|
25
|
+
\. "${rvm_path:-$HOME/.rvm}/environments/$environment_id"
|
26
|
+
for __hook in "${rvm_path:-$HOME/.rvm}/hooks/after_use"*
|
27
|
+
do
|
28
|
+
if [[ -f "${__hook}" && -x "${__hook}" && -s "${__hook}" ]]
|
29
|
+
then \. "${__hook}" || true
|
30
|
+
fi
|
31
|
+
done
|
32
|
+
unset __hook
|
33
|
+
else
|
34
|
+
# If the environment file has not yet been created, use the RVM CLI to select.
|
35
|
+
rvm --create "$environment_id" || {
|
36
|
+
echo "Failed to create RVM environment '${environment_id}'."
|
37
|
+
return 1
|
38
|
+
}
|
39
|
+
fi
|
40
|
+
|
41
|
+
# If you use bundler, this might be useful to you:
|
42
|
+
# if [[ -s Gemfile ]] && {
|
43
|
+
# ! builtin command -v bundle >/dev/null ||
|
44
|
+
# builtin command -v bundle | GREP_OPTIONS= \grep $rvm_path/bin/bundle >/dev/null
|
45
|
+
# }
|
46
|
+
# then
|
47
|
+
# printf "%b" "The rubygem 'bundler' is not installed. Installing it now.\n"
|
48
|
+
# gem install bundler
|
49
|
+
# fi
|
50
|
+
# if [[ -s Gemfile ]] && builtin command -v bundle >/dev/null
|
51
|
+
# then
|
52
|
+
# bundle install | GREP_OPTIONS= \grep -vE '^Using|Your bundle is complete'
|
53
|
+
# fi
|
data/.travis.yml
ADDED
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2013 Kurtis Rainbolt-Greene
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,141 @@
|
|
1
|
+
omniauth-gplus
|
2
|
+
=========
|
3
|
+
|
4
|
+
- [![Code Climate](https://codeclimate.com/github/krainboltgreene/omniauth-gplus.png)](https://codeclimate.com/github/krainboltgreene/omniauth-gplus)
|
5
|
+
- [![Build Status](https://travis-ci.org/krainboltgreene/omniauth-gplus.png)](https://travis-ci.org/krainboltgreene/omniauth-gplus)
|
6
|
+
|
7
|
+
`omniauth-gplus` is a Google+ strategy for OmniAuth.
|
8
|
+
It allows you to easily interact with the Google+ OAuth2 endpoint.
|
9
|
+
|
10
|
+
|
11
|
+
Examples
|
12
|
+
--------
|
13
|
+
|
14
|
+
To use `omniauth-gplus` in Rails you only need to put this in a initializer:
|
15
|
+
|
16
|
+
``` ruby
|
17
|
+
Rails.application.config.middleware.use OmniAuth::Builder do
|
18
|
+
provider :gplus, ENV['GPLUS_KEY'], ENV['GPLUS_SECRET']
|
19
|
+
end
|
20
|
+
```
|
21
|
+
|
22
|
+
By default the gem uses the `email` scope, but you can get more information with:
|
23
|
+
|
24
|
+
``` ruby
|
25
|
+
provider :gplus, ENV['GPLUS_KEY'], ENV['GPLUS_SECRET'], scope: 'email, profile'
|
26
|
+
```
|
27
|
+
|
28
|
+
The information schema looks like this:
|
29
|
+
|
30
|
+
``` ruby
|
31
|
+
info do
|
32
|
+
{
|
33
|
+
'email' => 'kurtisrainboltgreene@gmail.com',
|
34
|
+
'name' => 'Kurtis Rainbolt-Greene',
|
35
|
+
'first_name' => 'Kurtis',
|
36
|
+
'last_name' => 'Rainbolt-Greene',
|
37
|
+
'image' => 'http://somelongurl.png',
|
38
|
+
'urls' => {
|
39
|
+
"Google+" => 'http://urltouserprofile.com'
|
40
|
+
}
|
41
|
+
}
|
42
|
+
end
|
43
|
+
|
44
|
+
extra do
|
45
|
+
{
|
46
|
+
'locale' => 'en',
|
47
|
+
'gender' => 'male',
|
48
|
+
'birthday' => '2013-12-24',
|
49
|
+
'raw_info' => # huge hash
|
50
|
+
}
|
51
|
+
end
|
52
|
+
```
|
53
|
+
|
54
|
+
|
55
|
+
Installing
|
56
|
+
----------
|
57
|
+
|
58
|
+
**Requirements**:
|
59
|
+
|
60
|
+
1. Ruby 1.9 OR Rubinius 1.9 OR JRuby 1.9
|
61
|
+
2. A GPlus API key/secret
|
62
|
+
|
63
|
+
You can either install manually:
|
64
|
+
|
65
|
+
``` bash
|
66
|
+
$ gem install omniauth-gplus
|
67
|
+
```
|
68
|
+
|
69
|
+
Or put it in your `Gemfile`:
|
70
|
+
|
71
|
+
``` ruby
|
72
|
+
source 'https://rubygems.org'
|
73
|
+
|
74
|
+
gem 'omniauth-gplus', '~> 1.0'
|
75
|
+
```
|
76
|
+
|
77
|
+
|
78
|
+
Issues & Documentation
|
79
|
+
----------------------
|
80
|
+
|
81
|
+
* [Documentation](https://github.com/krainboltgreene/omniauth-gplus/wiki)
|
82
|
+
* [Issues](https://github.com/krainboltgreene/omniauth-gplus/issues)
|
83
|
+
|
84
|
+
Absolutely feel free to contribute, please!
|
85
|
+
|
86
|
+
|
87
|
+
Changelog
|
88
|
+
---------
|
89
|
+
|
90
|
+
**v1.0.0**
|
91
|
+
|
92
|
+
* Initial release
|
93
|
+
|
94
|
+
|
95
|
+
Contributing
|
96
|
+
------------
|
97
|
+
|
98
|
+
* **Fork** the repository
|
99
|
+
* **Clone the repository** locally, or **edit via Github**
|
100
|
+
* Create a **new branch** using the [Git Flow Standard](http://yakiloo.com/getting-started-git-flow/) conventions
|
101
|
+
* Commit **often** and **when important**
|
102
|
+
* **DO NOT CHANGE** ANY OF THESE (without making a new branch for *that* change):
|
103
|
+
* `*.gemspec`
|
104
|
+
* `Rakefile`
|
105
|
+
* `.rvmrc`
|
106
|
+
* `.gitignore`
|
107
|
+
* Any part of the git history
|
108
|
+
* **Write tests** specifically for the changes you've made, if no test exist
|
109
|
+
* **Push** your feature or hotfix branch to Github.
|
110
|
+
* Make a **Pull Request**
|
111
|
+
|
112
|
+
|
113
|
+
Credits
|
114
|
+
-------
|
115
|
+
|
116
|
+
|
117
|
+
License
|
118
|
+
-------
|
119
|
+
|
120
|
+
Copyright (c) 2013 Kurtis Rainbolt-Greene
|
121
|
+
|
122
|
+
MIT License
|
123
|
+
|
124
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
125
|
+
a copy of this software and associated documentation files (the
|
126
|
+
"Software"), to deal in the Software without restriction, including
|
127
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
128
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
129
|
+
permit persons to whom the Software is furnished to do so, subject to
|
130
|
+
the following conditions:
|
131
|
+
|
132
|
+
The above copyright notice and this permission notice shall be
|
133
|
+
included in all copies or substantial portions of the Software.
|
134
|
+
|
135
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
136
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
137
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
138
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
139
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
140
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
141
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/Rakefile
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
require 'bundler/gem_tasks'
|
3
|
+
require 'rake/clean'
|
4
|
+
require 'rake/testtask'
|
5
|
+
require 'yard'
|
6
|
+
|
7
|
+
begin
|
8
|
+
Bundler.setup :default, :development
|
9
|
+
rescue Bundler::BundlerError => error
|
10
|
+
$stderr.puts error.message
|
11
|
+
$stderr.puts "Run `bundle install` to install missing gems"
|
12
|
+
exit error.status_code
|
13
|
+
end
|
14
|
+
|
15
|
+
Bundler::GemHelper.install_tasks
|
16
|
+
|
17
|
+
desc "Run all of the tests"
|
18
|
+
Rake::TestTask.new do |config|
|
19
|
+
config.libs << 'test'
|
20
|
+
config.pattern = 'test/**/*_test*'
|
21
|
+
# config.verbose = true
|
22
|
+
# config.warning = true
|
23
|
+
end
|
24
|
+
|
25
|
+
desc "Generate all of the docs"
|
26
|
+
YARD::Rake::YardocTask.new do |config|
|
27
|
+
config.files = Dir['lib/**/*.rb']
|
28
|
+
end
|
29
|
+
|
30
|
+
desc 'Default: run tests, and generate docs'
|
31
|
+
task :default => [ :test, :yard ]
|
@@ -0,0 +1,67 @@
|
|
1
|
+
module OmniAuth
|
2
|
+
module Strategies
|
3
|
+
class GPlus < OAuth2
|
4
|
+
option :client_options, {
|
5
|
+
site: 'https://www.googleapis.com/oauth2/v1',
|
6
|
+
authorize_url: 'https://www.google.com/accounts/o8/oauth2/authorization',
|
7
|
+
token_url: 'https://www.google.com/accounts/o8/oauth2/token'
|
8
|
+
}
|
9
|
+
|
10
|
+
option :scope, 'email'
|
11
|
+
|
12
|
+
option :uid_field, :uid
|
13
|
+
|
14
|
+
info do
|
15
|
+
{
|
16
|
+
'email' => raw_info['email'],
|
17
|
+
'name' => raw_info['name'],
|
18
|
+
'first_name' => raw_info['given_name'],
|
19
|
+
'last_name' => raw_info['family_name'],
|
20
|
+
'image' => raw_info['picture'],
|
21
|
+
'urls' => {
|
22
|
+
"Google+" => raw_info['link']
|
23
|
+
}
|
24
|
+
}
|
25
|
+
end
|
26
|
+
|
27
|
+
extra do
|
28
|
+
{
|
29
|
+
'locale' => raw_info['locale'],
|
30
|
+
'gender' => raw_info['gender'],
|
31
|
+
'birthday' => raw_info['birthday'],
|
32
|
+
'raw_info' => raw_info
|
33
|
+
}
|
34
|
+
end
|
35
|
+
|
36
|
+
def authorize_params
|
37
|
+
super.tap do |params|
|
38
|
+
params['scope'] = format_scopes(params['scope'])
|
39
|
+
custom_parameters(params)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
private
|
44
|
+
|
45
|
+
def format_scopes(scopes)
|
46
|
+
scopes.split(/,\s*/).map(&method(:format_scope)).join(" ")
|
47
|
+
end
|
48
|
+
|
49
|
+
def format_scope(scope)
|
50
|
+
"https://www.googleapis.com/auth/userinfo.#{scope}"
|
51
|
+
end
|
52
|
+
|
53
|
+
def custom_parameters(params)
|
54
|
+
["scope", "client_options"].each { |k| add_key_to_params(params, k) }
|
55
|
+
end
|
56
|
+
|
57
|
+
def add_key_to_params(params, key)
|
58
|
+
params[key] = request.params[key] if request.params[key]
|
59
|
+
end
|
60
|
+
|
61
|
+
def raw_info
|
62
|
+
access_token.options[:mode] = :query
|
63
|
+
@raw_info ||= access_token.get('userinfo').parsed
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'omniauth/gplus/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "omniauth-gplus"
|
8
|
+
spec.version = OmniAuth::GPlus::VERSION
|
9
|
+
spec.authors = ["Kurtis Rainbolt-Greene"]
|
10
|
+
spec.email = ["me@kurtisrainboltgreene.name"]
|
11
|
+
spec.summary = %q{A Google+ OAuth2 solution for Omniauth}
|
12
|
+
spec.description = spec.summary
|
13
|
+
spec.homepage = "http://krainboltgreene.github.com/omniauth-gplus"
|
14
|
+
spec.license = "MIT"
|
15
|
+
|
16
|
+
spec.files = `git ls-files`.split($/)
|
17
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
|
+
spec.require_paths = ["lib"]
|
20
|
+
|
21
|
+
spec.add_runtime_dependency "omniauth-oauth2", '~> 1.1'
|
22
|
+
spec.add_development_dependency "bundler"
|
23
|
+
spec.add_development_dependency "rake"
|
24
|
+
spec.add_development_dependency "mocha"
|
25
|
+
spec.add_development_dependency 'yard'
|
26
|
+
spec.add_development_dependency 'kramdown'
|
27
|
+
spec.add_development_dependency 'pry'
|
28
|
+
spec.add_development_dependency 'coveralls'
|
29
|
+
end
|
data/test/helper.rb
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'coveralls'
|
2
|
+
Coveralls.wear!
|
3
|
+
|
4
|
+
require 'omniauth-gplus'
|
5
|
+
require 'minitest/autorun'
|
6
|
+
require 'minitest/pride'
|
7
|
+
|
8
|
+
OmniAuth.config.test_mode = true
|
9
|
+
|
10
|
+
def application
|
11
|
+
->(env) { [200, {}, ["Hello World."]]}
|
12
|
+
end
|
13
|
+
|
14
|
+
def strategy
|
15
|
+
@strategy ||= begin
|
16
|
+
OmniAuth::Strategies::GPlus.new(nil, *strategy_arguments).tap do |strategy|
|
17
|
+
strategy.stubs(:request).returns(@request)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def strategy_arguments
|
23
|
+
[@client_id, @client_secret, @options].compact
|
24
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
require 'helper'
|
2
|
+
require 'mocha/setup'
|
3
|
+
|
4
|
+
class TestOmniAuthGPlus < MiniTest::Unit::TestCase
|
5
|
+
def setup
|
6
|
+
@request = mock('Request')
|
7
|
+
@request.stubs(:params).returns({})
|
8
|
+
@request.stubs(:cookies).returns({})
|
9
|
+
@request.stubs(:env).returns({})
|
10
|
+
|
11
|
+
@client_id = '123'
|
12
|
+
@client_secret = '53cr3tz'
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_site_is_valid
|
16
|
+
expected = 'https://www.googleapis.com/oauth2/v1'
|
17
|
+
actual = strategy.client.site
|
18
|
+
assert_equal(expected, actual)
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_authoirze_url_is_valid
|
22
|
+
expected = 'https://www.google.com/accounts/o8/oauth2/authorization'
|
23
|
+
actual = strategy.options.client_options.authorize_url
|
24
|
+
assert_equal(expected, actual)
|
25
|
+
end
|
26
|
+
|
27
|
+
def test_token_url_is_valid
|
28
|
+
expected = 'https://www.google.com/accounts/o8/oauth2/token'
|
29
|
+
actual = strategy.options.client_options.token_url
|
30
|
+
assert_equal(expected, actual)
|
31
|
+
end
|
32
|
+
|
33
|
+
def test_default_scope_is_email
|
34
|
+
expected = 'email'
|
35
|
+
actual = strategy.options['scope']
|
36
|
+
assert_equal(expected, actual)
|
37
|
+
end
|
38
|
+
|
39
|
+
def test_that_it_has_a_version_number
|
40
|
+
refute_nil OmniAuth::GPlus::VERSION
|
41
|
+
end
|
42
|
+
|
43
|
+
def new_oauth
|
44
|
+
OmniAuth::Strategies::GPlus.new(application)
|
45
|
+
end
|
46
|
+
|
47
|
+
def test_has_uid
|
48
|
+
expected = :uid
|
49
|
+
actual = new_oauth.options.uid_field
|
50
|
+
assert_equal(expected, actual)
|
51
|
+
end
|
52
|
+
end
|
metadata
ADDED
@@ -0,0 +1,197 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: omniauth-gplus
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Kurtis Rainbolt-Greene
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2013-02-27 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: omniauth-oauth2
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ~>
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '1.1'
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ~>
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '1.1'
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: bundler
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
38
|
+
type: :development
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: rake
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ! '>='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
54
|
+
type: :development
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: mocha
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ! '>='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
70
|
+
type: :development
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
78
|
+
- !ruby/object:Gem::Dependency
|
79
|
+
name: yard
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
82
|
+
requirements:
|
83
|
+
- - ! '>='
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: '0'
|
86
|
+
type: :development
|
87
|
+
prerelease: false
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ! '>='
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: '0'
|
94
|
+
- !ruby/object:Gem::Dependency
|
95
|
+
name: kramdown
|
96
|
+
requirement: !ruby/object:Gem::Requirement
|
97
|
+
none: false
|
98
|
+
requirements:
|
99
|
+
- - ! '>='
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
version: '0'
|
102
|
+
type: :development
|
103
|
+
prerelease: false
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ! '>='
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0'
|
110
|
+
- !ruby/object:Gem::Dependency
|
111
|
+
name: pry
|
112
|
+
requirement: !ruby/object:Gem::Requirement
|
113
|
+
none: false
|
114
|
+
requirements:
|
115
|
+
- - ! '>='
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
none: false
|
122
|
+
requirements:
|
123
|
+
- - ! '>='
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: '0'
|
126
|
+
- !ruby/object:Gem::Dependency
|
127
|
+
name: coveralls
|
128
|
+
requirement: !ruby/object:Gem::Requirement
|
129
|
+
none: false
|
130
|
+
requirements:
|
131
|
+
- - ! '>='
|
132
|
+
- !ruby/object:Gem::Version
|
133
|
+
version: '0'
|
134
|
+
type: :development
|
135
|
+
prerelease: false
|
136
|
+
version_requirements: !ruby/object:Gem::Requirement
|
137
|
+
none: false
|
138
|
+
requirements:
|
139
|
+
- - ! '>='
|
140
|
+
- !ruby/object:Gem::Version
|
141
|
+
version: '0'
|
142
|
+
description: A Google+ OAuth2 solution for Omniauth
|
143
|
+
email:
|
144
|
+
- me@kurtisrainboltgreene.name
|
145
|
+
executables: []
|
146
|
+
extensions: []
|
147
|
+
extra_rdoc_files: []
|
148
|
+
files:
|
149
|
+
- .coveralls.yml
|
150
|
+
- .gitignore
|
151
|
+
- .rvmrc
|
152
|
+
- .travis.yml
|
153
|
+
- Gemfile
|
154
|
+
- LICENSE.txt
|
155
|
+
- README.md
|
156
|
+
- Rakefile
|
157
|
+
- lib/omniauth-gplus.rb
|
158
|
+
- lib/omniauth/gplus/version.rb
|
159
|
+
- lib/omniauth/strategies/gplus.rb
|
160
|
+
- omniauth-gplus.gemspec
|
161
|
+
- test/helper.rb
|
162
|
+
- test/lib/omniauth/strategies/gplus_test.rb
|
163
|
+
homepage: http://krainboltgreene.github.com/omniauth-gplus
|
164
|
+
licenses:
|
165
|
+
- MIT
|
166
|
+
post_install_message:
|
167
|
+
rdoc_options: []
|
168
|
+
require_paths:
|
169
|
+
- lib
|
170
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
171
|
+
none: false
|
172
|
+
requirements:
|
173
|
+
- - ! '>='
|
174
|
+
- !ruby/object:Gem::Version
|
175
|
+
version: '0'
|
176
|
+
segments:
|
177
|
+
- 0
|
178
|
+
hash: -1689882291510446331
|
179
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
180
|
+
none: false
|
181
|
+
requirements:
|
182
|
+
- - ! '>='
|
183
|
+
- !ruby/object:Gem::Version
|
184
|
+
version: '0'
|
185
|
+
segments:
|
186
|
+
- 0
|
187
|
+
hash: -1689882291510446331
|
188
|
+
requirements: []
|
189
|
+
rubyforge_project:
|
190
|
+
rubygems_version: 1.8.25
|
191
|
+
signing_key:
|
192
|
+
specification_version: 3
|
193
|
+
summary: A Google+ OAuth2 solution for Omniauth
|
194
|
+
test_files:
|
195
|
+
- test/helper.rb
|
196
|
+
- test/lib/omniauth/strategies/gplus_test.rb
|
197
|
+
has_rdoc:
|