omniauth-google-api 1.0.1 → 1.0.2
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.
- data/Gemfile +17 -0
- data/README +0 -0
- data/README.md +1 -1
- data/Rakefile +45 -0
- data/VERSION +1 -0
- data/lib/omniauth-google-api.rb +3 -0
- data/lib/omniauth-google-api/version.rb +5 -0
- data/lib/omniauth/strategies/google_api.rb +69 -0
- data/note +7 -0
- data/spec/omniauth/strategies/google_api_spec.rb +155 -0
- data/spec/spec_helper.rb +12 -0
- metadata +45 -20
data/Gemfile
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
source "http://rubygems.org"
|
|
2
|
+
|
|
3
|
+
gem 'omniauth', "~> 1.0.0"
|
|
4
|
+
gem 'omniauth-oauth2'
|
|
5
|
+
gem 'multi_json'
|
|
6
|
+
gem 'cyaml'
|
|
7
|
+
|
|
8
|
+
group :development do
|
|
9
|
+
gem "bundler"
|
|
10
|
+
gem "jeweler"
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
group :development, :test do
|
|
14
|
+
gem "rack-test"
|
|
15
|
+
gem "rspec"
|
|
16
|
+
gem "webmock"
|
|
17
|
+
end
|
data/README
ADDED
|
File without changes
|
data/README.md
CHANGED
|
@@ -18,7 +18,7 @@ Add the middleware to a Rails app in `config/initializers/omniauth.rb`:
|
|
|
18
18
|
|
|
19
19
|
```ruby
|
|
20
20
|
Rails.application.config.middleware.use OmniAuth::Builder do
|
|
21
|
-
provider :
|
|
21
|
+
provider :googlei_api, CONSUMER_KEY, CONSUMER_SECRET, REDIRECT_URL
|
|
22
22
|
end
|
|
23
23
|
```
|
|
24
24
|
|
data/Rakefile
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
require 'rubygems'
|
|
4
|
+
require 'bundler'
|
|
5
|
+
begin
|
|
6
|
+
Bundler.setup(:default, :development)
|
|
7
|
+
rescue Bundler::BundlerError => e
|
|
8
|
+
$stderr.puts e.message
|
|
9
|
+
$stderr.puts "Run `bundle install` to install missing gems"
|
|
10
|
+
exit e.status_code
|
|
11
|
+
end
|
|
12
|
+
require 'rake'
|
|
13
|
+
|
|
14
|
+
require 'jeweler'
|
|
15
|
+
Jeweler::Tasks.new do |gem|
|
|
16
|
+
gem.name = "omniauth-google-api"
|
|
17
|
+
gem.homepage = "http://github.com/sterlingmichel/omniauth-google-api"
|
|
18
|
+
gem.license = "MIT"
|
|
19
|
+
gem.summary = %Q{A Google+ OAuth strategy for OmniAuth 1.0}
|
|
20
|
+
gem.description = "This tool will enable you to pull google+ and eventual all of its api"
|
|
21
|
+
gem.email = "sterlingmichel@gmail.com"
|
|
22
|
+
gem.authors = ["Sterling Michel"]
|
|
23
|
+
# dependencies defined in Gemfile
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
#Jeweler::RubygemsDotOrgTasks.new
|
|
28
|
+
|
|
29
|
+
#require 'rspec/core'
|
|
30
|
+
#require 'rspec/core/rake_task'
|
|
31
|
+
#RSpec::Core::RakeTask.new(:spec) do |spec|
|
|
32
|
+
# spec.pattern = FileList['spec/**/*_spec.rb']
|
|
33
|
+
#end
|
|
34
|
+
|
|
35
|
+
#task :default => :sds
|
|
36
|
+
|
|
37
|
+
#require 'rdoc/task'
|
|
38
|
+
#Rake::RDocTask.new do |rdoc|
|
|
39
|
+
# version = File.exist?('VERSION') ? File.read('VERSION') : ""
|
|
40
|
+
|
|
41
|
+
# rdoc.rdoc_dir = 'rdoc'
|
|
42
|
+
# rdoc.title = "omniauth-google-api #{version}"
|
|
43
|
+
# rdoc.rdoc_files.include('README*')
|
|
44
|
+
# rdoc.rdoc_files.include('lib/**/*.rb')
|
|
45
|
+
##end
|
data/VERSION
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
1.0.2
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
require 'omniauth/strategies/oauth2'
|
|
2
|
+
|
|
3
|
+
module OmniAuth
|
|
4
|
+
module Strategies
|
|
5
|
+
class GoogleApi < OmniAuth::Strategies::OAuth2
|
|
6
|
+
|
|
7
|
+
# Possible scopes: userinfo.email,userinfo.profile,plus.me
|
|
8
|
+
DEFAULT_SCOPE = "userinfo.email,userinfo.profile,plus.me"
|
|
9
|
+
|
|
10
|
+
option :name, 'google_api'
|
|
11
|
+
option :authorize_options, [:scope, :approval_prompt, :access_type]
|
|
12
|
+
|
|
13
|
+
option :client_options, {
|
|
14
|
+
:site => 'https://accounts.google.com',
|
|
15
|
+
:authorize_url => '/o/oauth2/auth',
|
|
16
|
+
:token_url => '/o/oauth2/token'
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
def authorize_params
|
|
20
|
+
base_scope_url = "https://www.googleapis.com/auth/"
|
|
21
|
+
super.tap do |params|
|
|
22
|
+
scopes = (params[:scope] || DEFAULT_SCOPE).split(",")
|
|
23
|
+
scopes.map! { |s| s =~ /^https?:\/\// ? s : "#{base_scope_url}#{s}" }
|
|
24
|
+
params[:scope] = scopes.join(' ')
|
|
25
|
+
params[:access_type] = 'offline' if params[:access_type].nil?
|
|
26
|
+
params[:approval_prompt] = 'force' if params[:approval_prompt].nil?
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
uid{ raw_info['id'] || verified_email }
|
|
31
|
+
|
|
32
|
+
info do
|
|
33
|
+
prune!({
|
|
34
|
+
:name => raw_info['name'],
|
|
35
|
+
:email => verified_email,
|
|
36
|
+
:first_name => raw_info['given_name'],
|
|
37
|
+
:last_name => raw_info['family_name'],
|
|
38
|
+
:image => raw_info['picture'],
|
|
39
|
+
})
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
extra do
|
|
43
|
+
prune!({
|
|
44
|
+
'raw_info' => raw_info
|
|
45
|
+
})
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
protected
|
|
49
|
+
|
|
50
|
+
def raw_info
|
|
51
|
+
@raw_info ||= access_token.get('https://www.googleapis.com/oauth2/v1/userinfo').parsed
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
private
|
|
55
|
+
|
|
56
|
+
def prune!(hash)
|
|
57
|
+
hash.delete_if do |_, value|
|
|
58
|
+
prune!(value) if value.is_a?(Hash)
|
|
59
|
+
value.nil? || (value.respond_to?(:empty?) && value.empty?)
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
def verified_email
|
|
64
|
+
raw_info['verified_email'] ? raw_info['email'] : nil
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
end
|
data/note
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
Sign up for an account on Gemcutter
|
|
2
|
+
Make sure you’re running at least RubyGems 1.3.3. gem -v
|
|
3
|
+
Create your gem. Get started with Jeweler
|
|
4
|
+
Install the gemcutter gem with: gem install gemcutter
|
|
5
|
+
Build your gem with: gem build yourgem.gemspec
|
|
6
|
+
Push it! gem push yourgem-0.0.1.gem
|
|
7
|
+
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
RSpec.configure do |config|
|
|
4
|
+
config.include WebMock::API
|
|
5
|
+
config.include Rack::Test::Methods
|
|
6
|
+
config.extend OmniAuth::Test::StrategyMacros, :type => :strategy
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
describe "OmniAuth::Strategies::GoogleApi" do
|
|
10
|
+
|
|
11
|
+
def app
|
|
12
|
+
Rack::Builder.new {
|
|
13
|
+
use OmniAuth::Test::PhonySession
|
|
14
|
+
use OmniAuth::Builder do
|
|
15
|
+
provider :googleApi
|
|
16
|
+
end
|
|
17
|
+
run lambda { |env| [404, {'Content-Type' => 'text/plain'}, [env.key?('omniauth.auth').to_s]] }
|
|
18
|
+
}.to_app
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def session
|
|
22
|
+
last_request.env['rack.session']
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
before do
|
|
26
|
+
stub_request(:post, 'https://www.google.com/accounts/OAuthGetRequestToken').
|
|
27
|
+
to_return(:body => "oauth_token=yourtoken&oauth_token_secret=yoursecret&oauth_callback_confirmed=true")
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
describe '/auth/google' do
|
|
31
|
+
context 'successful' do
|
|
32
|
+
before do
|
|
33
|
+
get '/auth/google'
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
it 'should redirect to authorize_url' do
|
|
37
|
+
last_response.should be_redirect
|
|
38
|
+
last_response.headers['Location'].should == 'https://www.google.com/accounts/OAuthAuthorizeToken?oauth_token=yourtoken'
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
# it 'should redirect to authorize_url with authorize_params when set' do
|
|
42
|
+
# # get '/auth/example.org_with_authorize_params'
|
|
43
|
+
# get '/auth/google_with_authorize_params'
|
|
44
|
+
# last_response.should be_redirect
|
|
45
|
+
# [
|
|
46
|
+
# 'https://api.example.org/oauth/authorize?abc=def&oauth_token=yourtoken',
|
|
47
|
+
# 'https://api.example.org/oauth/authorize?oauth_token=yourtoken&abc=def'
|
|
48
|
+
# ].should be_include(last_response.headers['Location'])
|
|
49
|
+
# end
|
|
50
|
+
|
|
51
|
+
it 'should set appropriate session variables' do
|
|
52
|
+
session['oauth'].should == {"google" => {'callback_confirmed' => true, 'request_token' => 'yourtoken', 'request_secret' => 'yoursecret'}}
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
context 'unsuccessful' do
|
|
57
|
+
before do
|
|
58
|
+
stub_request(:post, 'https://www.google.com/accounts/OAuthGetRequestToken').
|
|
59
|
+
to_raise(::Net::HTTPFatalError.new(%Q{502 "Bad Gateway"}, nil))
|
|
60
|
+
get '/auth/google'
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
it 'should call fail! with :service_unavailable' do
|
|
64
|
+
last_request.env['omniauth.error'].should be_kind_of(::Net::HTTPFatalError)
|
|
65
|
+
last_request.env['omniauth.error.type'] = :service_unavailable
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
context "SSL failure" do
|
|
69
|
+
before do
|
|
70
|
+
stub_request(:post, 'https://www.google.com/accounts/OAuthGetRequestToken').
|
|
71
|
+
to_raise(::OpenSSL::SSL::SSLError.new("SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed"))
|
|
72
|
+
get '/auth/google'
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
it 'should call fail! with :service_unavailable' do
|
|
76
|
+
last_request.env['omniauth.error'].should be_kind_of(::OpenSSL::SSL::SSLError)
|
|
77
|
+
last_request.env['omniauth.error.type'] = :service_unavailable
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
describe '/auth/google/callback' do
|
|
84
|
+
before do
|
|
85
|
+
body =<<BODY
|
|
86
|
+
{
|
|
87
|
+
"feed" : {
|
|
88
|
+
"id" : {
|
|
89
|
+
"$t" : "http://www.google.com/m8/feeds/contacts/dudeman%example.com/base/6d45af48e519ef7"
|
|
90
|
+
},
|
|
91
|
+
"author" : [
|
|
92
|
+
{
|
|
93
|
+
"name" : {"$t" : "Dude Man"}
|
|
94
|
+
}
|
|
95
|
+
]
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
BODY
|
|
99
|
+
|
|
100
|
+
stub_request(:post, 'https://www.google.com/accounts/OAuthGetAccessToken').
|
|
101
|
+
to_return(:body => "oauth_token=yourtoken&oauth_token_secret=yoursecret")
|
|
102
|
+
stub_request(:get, "https://www.google.com/m8/feeds/contacts/default/full?alt=json&max-results=1").
|
|
103
|
+
to_return(:status => 200, :body => body, :headers => {})
|
|
104
|
+
get '/auth/google/callback', {:oauth_verifier => 'dudeman'}, {'rack.session' => {'oauth' => {"google" => {'callback_confirmed' => true, 'request_token' => 'yourtoken', 'request_secret' => 'yoursecret'}}}}
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
it 'should exchange the request token for an access token' do
|
|
108
|
+
last_request.env['omniauth.auth']['provider'].should == 'google'
|
|
109
|
+
last_request.env['omniauth.auth']['extra']['access_token'].should be_kind_of(OAuth::AccessToken)
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
it 'should call through to the master app' do
|
|
113
|
+
last_response.body.should == 'true'
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
context "bad gateway (or any 5xx) for access_token" do
|
|
117
|
+
before do
|
|
118
|
+
stub_request(:post, 'https://www.google.com/accounts/OAuthGetAccessToken').
|
|
119
|
+
to_raise(::Net::HTTPFatalError.new(%Q{502 "Bad Gateway"}, nil))
|
|
120
|
+
get '/auth/google/callback', {:oauth_verifier => 'dudeman'}, {'rack.session' => {'oauth' => {"google" => {'callback_confirmed' => true, 'request_token' => 'yourtoken', 'request_secret' => 'yoursecret'}}}}
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
it 'should call fail! with :service_unavailable' do
|
|
124
|
+
last_request.env['omniauth.error'].should be_kind_of(::Net::HTTPFatalError)
|
|
125
|
+
last_request.env['omniauth.error.type'] = :service_unavailable
|
|
126
|
+
end
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
context "SSL failure" do
|
|
130
|
+
before do
|
|
131
|
+
stub_request(:post, 'https://www.google.com/accounts/OAuthGetAccessToken').
|
|
132
|
+
to_raise(::OpenSSL::SSL::SSLError.new("SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed"))
|
|
133
|
+
get '/auth/google/callback', {:oauth_verifier => 'dudeman'}, {'rack.session' => {'oauth' => {"google-api" => {'callback_confirmed' => true, 'request_token' => 'yourtoken', 'request_secret' => 'yoursecret'}}}}
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
it 'should call fail! with :service_unavailable' do
|
|
137
|
+
last_request.env['omniauth.error'].should be_kind_of(::OpenSSL::SSL::SSLError)
|
|
138
|
+
last_request.env['omniauth.error.type'] = :service_unavailable
|
|
139
|
+
end
|
|
140
|
+
end
|
|
141
|
+
end
|
|
142
|
+
|
|
143
|
+
describe '/auth/google/callback with expired session' do
|
|
144
|
+
before do
|
|
145
|
+
stub_request(:post, 'https://www.google.com/accounts/OAuthGetAccessToken').
|
|
146
|
+
to_return(:body => "oauth_token=yourtoken&oauth_token_secret=yoursecret")
|
|
147
|
+
get '/auth/google/callback', {:oauth_verifier => 'dudeman'}, {'rack.session' => {}}
|
|
148
|
+
end
|
|
149
|
+
|
|
150
|
+
it 'should call fail! with :session_expired' do
|
|
151
|
+
last_request.env['omniauth.error'].should be_kind_of(::OmniAuth::NoSessionError)
|
|
152
|
+
last_request.env['omniauth.error.type'] = :session_expired
|
|
153
|
+
end
|
|
154
|
+
end
|
|
155
|
+
end
|
data/spec/spec_helper.rb
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
|
2
|
+
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
|
3
|
+
require 'rspec'
|
|
4
|
+
require 'webmock/rspec'
|
|
5
|
+
require 'rack/test'
|
|
6
|
+
require 'omniauth'
|
|
7
|
+
require 'omniauth-google-api'
|
|
8
|
+
|
|
9
|
+
Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
|
|
10
|
+
|
|
11
|
+
RSpec.configure do |config|
|
|
12
|
+
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: omniauth-google-api
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.0.
|
|
4
|
+
version: 1.0.2
|
|
5
5
|
prerelease:
|
|
6
6
|
platform: ruby
|
|
7
7
|
authors:
|
|
@@ -9,11 +9,11 @@ authors:
|
|
|
9
9
|
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date: 2012-01-
|
|
12
|
+
date: 2012-01-25 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: omniauth
|
|
16
|
-
requirement: &
|
|
16
|
+
requirement: &2158387940 !ruby/object:Gem::Requirement
|
|
17
17
|
none: false
|
|
18
18
|
requirements:
|
|
19
19
|
- - ~>
|
|
@@ -21,10 +21,10 @@ dependencies:
|
|
|
21
21
|
version: 1.0.0
|
|
22
22
|
type: :runtime
|
|
23
23
|
prerelease: false
|
|
24
|
-
version_requirements: *
|
|
24
|
+
version_requirements: *2158387940
|
|
25
25
|
- !ruby/object:Gem::Dependency
|
|
26
|
-
name: omniauth-
|
|
27
|
-
requirement: &
|
|
26
|
+
name: omniauth-oauth2
|
|
27
|
+
requirement: &2158387140 !ruby/object:Gem::Requirement
|
|
28
28
|
none: false
|
|
29
29
|
requirements:
|
|
30
30
|
- - ! '>='
|
|
@@ -32,10 +32,10 @@ dependencies:
|
|
|
32
32
|
version: '0'
|
|
33
33
|
type: :runtime
|
|
34
34
|
prerelease: false
|
|
35
|
-
version_requirements: *
|
|
35
|
+
version_requirements: *2158387140
|
|
36
36
|
- !ruby/object:Gem::Dependency
|
|
37
37
|
name: multi_json
|
|
38
|
-
requirement: &
|
|
38
|
+
requirement: &2158385940 !ruby/object:Gem::Requirement
|
|
39
39
|
none: false
|
|
40
40
|
requirements:
|
|
41
41
|
- - ! '>='
|
|
@@ -43,10 +43,21 @@ dependencies:
|
|
|
43
43
|
version: '0'
|
|
44
44
|
type: :runtime
|
|
45
45
|
prerelease: false
|
|
46
|
-
version_requirements: *
|
|
46
|
+
version_requirements: *2158385940
|
|
47
|
+
- !ruby/object:Gem::Dependency
|
|
48
|
+
name: cyaml
|
|
49
|
+
requirement: &2158401260 !ruby/object:Gem::Requirement
|
|
50
|
+
none: false
|
|
51
|
+
requirements:
|
|
52
|
+
- - ! '>='
|
|
53
|
+
- !ruby/object:Gem::Version
|
|
54
|
+
version: '0'
|
|
55
|
+
type: :runtime
|
|
56
|
+
prerelease: false
|
|
57
|
+
version_requirements: *2158401260
|
|
47
58
|
- !ruby/object:Gem::Dependency
|
|
48
59
|
name: bundler
|
|
49
|
-
requirement: &
|
|
60
|
+
requirement: &2158400640 !ruby/object:Gem::Requirement
|
|
50
61
|
none: false
|
|
51
62
|
requirements:
|
|
52
63
|
- - ! '>='
|
|
@@ -54,10 +65,10 @@ dependencies:
|
|
|
54
65
|
version: '0'
|
|
55
66
|
type: :development
|
|
56
67
|
prerelease: false
|
|
57
|
-
version_requirements: *
|
|
68
|
+
version_requirements: *2158400640
|
|
58
69
|
- !ruby/object:Gem::Dependency
|
|
59
70
|
name: jeweler
|
|
60
|
-
requirement: &
|
|
71
|
+
requirement: &2158399880 !ruby/object:Gem::Requirement
|
|
61
72
|
none: false
|
|
62
73
|
requirements:
|
|
63
74
|
- - ! '>='
|
|
@@ -65,10 +76,10 @@ dependencies:
|
|
|
65
76
|
version: '0'
|
|
66
77
|
type: :development
|
|
67
78
|
prerelease: false
|
|
68
|
-
version_requirements: *
|
|
79
|
+
version_requirements: *2158399880
|
|
69
80
|
- !ruby/object:Gem::Dependency
|
|
70
81
|
name: rack-test
|
|
71
|
-
requirement: &
|
|
82
|
+
requirement: &2158398800 !ruby/object:Gem::Requirement
|
|
72
83
|
none: false
|
|
73
84
|
requirements:
|
|
74
85
|
- - ! '>='
|
|
@@ -76,10 +87,10 @@ dependencies:
|
|
|
76
87
|
version: '0'
|
|
77
88
|
type: :development
|
|
78
89
|
prerelease: false
|
|
79
|
-
version_requirements: *
|
|
90
|
+
version_requirements: *2158398800
|
|
80
91
|
- !ruby/object:Gem::Dependency
|
|
81
92
|
name: rspec
|
|
82
|
-
requirement: &
|
|
93
|
+
requirement: &2158398180 !ruby/object:Gem::Requirement
|
|
83
94
|
none: false
|
|
84
95
|
requirements:
|
|
85
96
|
- - ! '>='
|
|
@@ -87,10 +98,10 @@ dependencies:
|
|
|
87
98
|
version: '0'
|
|
88
99
|
type: :development
|
|
89
100
|
prerelease: false
|
|
90
|
-
version_requirements: *
|
|
101
|
+
version_requirements: *2158398180
|
|
91
102
|
- !ruby/object:Gem::Dependency
|
|
92
103
|
name: webmock
|
|
93
|
-
requirement: &
|
|
104
|
+
requirement: &2158397200 !ruby/object:Gem::Requirement
|
|
94
105
|
none: false
|
|
95
106
|
requirements:
|
|
96
107
|
- - ! '>='
|
|
@@ -98,16 +109,27 @@ dependencies:
|
|
|
98
109
|
version: '0'
|
|
99
110
|
type: :development
|
|
100
111
|
prerelease: false
|
|
101
|
-
version_requirements: *
|
|
102
|
-
description:
|
|
112
|
+
version_requirements: *2158397200
|
|
113
|
+
description: This tool will enable you to pull google+ and eventual all of its api
|
|
103
114
|
email: sterlingmichel@gmail.com
|
|
104
115
|
executables: []
|
|
105
116
|
extensions: []
|
|
106
117
|
extra_rdoc_files:
|
|
107
118
|
- LICENSE.txt
|
|
119
|
+
- README
|
|
108
120
|
- README.md
|
|
109
121
|
files:
|
|
122
|
+
- Gemfile
|
|
110
123
|
- LICENSE.txt
|
|
124
|
+
- README
|
|
125
|
+
- Rakefile
|
|
126
|
+
- VERSION
|
|
127
|
+
- lib/omniauth-google-api.rb
|
|
128
|
+
- lib/omniauth-google-api/version.rb
|
|
129
|
+
- lib/omniauth/strategies/google_api.rb
|
|
130
|
+
- note
|
|
131
|
+
- spec/omniauth/strategies/google_api_spec.rb
|
|
132
|
+
- spec/spec_helper.rb
|
|
111
133
|
- README.md
|
|
112
134
|
homepage: http://github.com/sterlingmichel/omniauth-google-api
|
|
113
135
|
licenses:
|
|
@@ -122,6 +144,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
122
144
|
- - ! '>='
|
|
123
145
|
- !ruby/object:Gem::Version
|
|
124
146
|
version: '0'
|
|
147
|
+
segments:
|
|
148
|
+
- 0
|
|
149
|
+
hash: -2215161885211397943
|
|
125
150
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
126
151
|
none: false
|
|
127
152
|
requirements:
|