omniauth-qiita 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +11 -0
- data/Gemfile +8 -0
- data/README.md +91 -0
- data/Rakefile +8 -0
- data/example/Gemfile +4 -0
- data/example/config.ru +30 -0
- data/lib/omniauth/qiita.rb +5 -0
- data/lib/omniauth/qiita/version.rb +5 -0
- data/lib/omniauth/strategies/qiita.rb +56 -0
- data/lib/omniauth/strategies/qiita/access_token.rb +21 -0
- data/lib/omniauth/strategies/qiita/client.rb +26 -0
- data/omniauth-qiita.gemspec +30 -0
- data/spec/omniauth/qiita_spec.rb +7 -0
- data/spec/spec_helper.rb +18 -0
- data/spec/strategies/qiita/access_token_spec.rb +32 -0
- data/spec/strategies/qiita_spec.rb +119 -0
- metadata +190 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: b2dfbf3a56dd2309c6d1d70780fb178e1cf13f63
|
4
|
+
data.tar.gz: d0bc1e56408b01831407250731764797aa0ac852
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: d1b85fbf3ada3b16dcd8f63c939edcbd429a0bc3879ff54792b21c59d8fcfff538a925f57240a77522d2744a33e3f0490559aa0da2df7a9dc2ef5c75872867e3
|
7
|
+
data.tar.gz: 53060afe930d815d5f95a827d9e83fcf1adb06c49c16dfe202351e8ef14ed6af043acdfcc90d226d083e5df7e6c8ee72cfcbec50a1185ff885ad5024e2b17aa3
|
data/.gitignore
ADDED
data/Gemfile
ADDED
data/README.md
ADDED
@@ -0,0 +1,91 @@
|
|
1
|
+
# Omniauth::Qiita
|
2
|
+
|
3
|
+
This gem contains the Qiita strategy for OmniAuth.
|
4
|
+
|
5
|
+
## Before Use
|
6
|
+
|
7
|
+
First you'll sign in into the [Qiita](https://qiita.com) and [create an application](https://qiita.com/settings/applications/new). Make a written note of API Key and API Secret.
|
8
|
+
|
9
|
+
## How to Use
|
10
|
+
|
11
|
+
Add this line to your application's Gemfile:
|
12
|
+
|
13
|
+
```ruby
|
14
|
+
gem 'omniauth-qiita', :github => 'kazu69/omniauth-qiita'
|
15
|
+
```
|
16
|
+
|
17
|
+
```ruby
|
18
|
+
use OmniAuth::Builder do
|
19
|
+
provider :qiita, 'QIITA_CLIENT_ID', 'QIITA_CLIENT_SECRET'
|
20
|
+
end
|
21
|
+
```
|
22
|
+
|
23
|
+
If use this gem on your rails app, config/initializers/omniauth.rb file should look like this:
|
24
|
+
|
25
|
+
```ruby
|
26
|
+
Rails.application.config.middleware.use OmniAuth::Builder do
|
27
|
+
provider :qiita, 'QIITA_CLIENT_ID', 'QIITA_CLIENT_SECRET'
|
28
|
+
end
|
29
|
+
```
|
30
|
+
|
31
|
+
## Authentication Hash
|
32
|
+
```sh
|
33
|
+
{"provider"=>"qiita",
|
34
|
+
"uid"=>"qiita_user",
|
35
|
+
"info"=>
|
36
|
+
{"name"=>"Full Name",
|
37
|
+
"description"=>"I'm softwear engineer",
|
38
|
+
"organization"=>"example. inc",
|
39
|
+
"location"=>"Japan",
|
40
|
+
"website"=>"http://qiita.com",
|
41
|
+
"image"=>"http://www.gravatar.com/avatar/0bc83cb571cd1c50ba6f3e8a78ef1346",
|
42
|
+
"followees_count"=>10,
|
43
|
+
"followers_count"=>18,
|
44
|
+
"items_count"=>26,
|
45
|
+
"social"=>{
|
46
|
+
"facebook"=>"facebook id",
|
47
|
+
"github"=>"github login name",
|
48
|
+
"linkedin_id"=>"likedin id",
|
49
|
+
"twitter"=>"twitter screen name"
|
50
|
+
}
|
51
|
+
},
|
52
|
+
"credentials"=>{
|
53
|
+
"token"=>"8376581625bdd6e5231fbdcdac9d15a5b71eaf3b",
|
54
|
+
"expires"=>false
|
55
|
+
},
|
56
|
+
"extra"=>
|
57
|
+
{"raw_info"=>
|
58
|
+
{"description"=>"I'm softwear engineer",
|
59
|
+
"facebook_id"=>"facebook id",
|
60
|
+
"followers_count"=>10,
|
61
|
+
"followees_count"=>18,
|
62
|
+
"github_login_name"=>"github login name",
|
63
|
+
"id"=>"qiita_user",
|
64
|
+
"items_count"=>26,
|
65
|
+
"linkedin_id"=>"likedin id",
|
66
|
+
"location"=>"Japan",
|
67
|
+
"name"=>"kazu Full Name",
|
68
|
+
"organization"=>"example. inc",
|
69
|
+
"profile_image_url"=>
|
70
|
+
"http://www.gravatar.com/avatar/0bc83cb571cd1c50ba6f3e8a78ef1346",
|
71
|
+
"twitter_screen_name"=>"twitter screen name",
|
72
|
+
"website_url"=>"http://qiita.com"}}}
|
73
|
+
```
|
74
|
+
|
75
|
+
## Contributing
|
76
|
+
|
77
|
+
1. Fork it ( https://github.com/kazu69/omniauth-qiita/fork )
|
78
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
79
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
80
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
81
|
+
5. Create a new Pull Request
|
82
|
+
|
83
|
+
License
|
84
|
+
|
85
|
+
Copyright (c) 2014 by kazu69
|
86
|
+
|
87
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
88
|
+
|
89
|
+
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
90
|
+
|
91
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/Rakefile
ADDED
data/example/Gemfile
ADDED
data/example/config.ru
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'bundler/setup'
|
2
|
+
require 'sinatra/base'
|
3
|
+
require 'omniauth/qiita'
|
4
|
+
|
5
|
+
class App < Sinatra::Base
|
6
|
+
get '/' do
|
7
|
+
redirect '/auth/qiita'
|
8
|
+
end
|
9
|
+
|
10
|
+
get '/auth/:provider/callback' do
|
11
|
+
content_type 'application/json'
|
12
|
+
MultiJson.encode(request.env)
|
13
|
+
end
|
14
|
+
|
15
|
+
get '/auth/failure' do
|
16
|
+
content_type 'application/json'
|
17
|
+
MultiJson.encode(request.env)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
use Rack::Session::Cookie
|
22
|
+
|
23
|
+
use OmniAuth::Builder do
|
24
|
+
provider :qiita,
|
25
|
+
ENV['APP_ID'],
|
26
|
+
ENV['APP_SECRET'],
|
27
|
+
authorize_params: { scope: 'read_qiita' }
|
28
|
+
end
|
29
|
+
|
30
|
+
run App.new
|
@@ -0,0 +1,56 @@
|
|
1
|
+
require 'omniauth-oauth2'
|
2
|
+
|
3
|
+
module OmniAuth
|
4
|
+
module Strategies
|
5
|
+
class Qiita < OmniAuth::Strategies::OAuth2
|
6
|
+
option :name, 'qiita'
|
7
|
+
|
8
|
+
option :client_options, {
|
9
|
+
site: 'https://qiita.com',
|
10
|
+
authorize_url: '/api/v2/oauth/authorize',
|
11
|
+
token_url: '/api/v2/access_tokens',
|
12
|
+
}
|
13
|
+
|
14
|
+
option :authorize_params, {
|
15
|
+
scope: 'read_qiita'
|
16
|
+
}
|
17
|
+
|
18
|
+
uid { raw_info['id'].to_s }
|
19
|
+
|
20
|
+
info do
|
21
|
+
{
|
22
|
+
name: raw_info['name'],
|
23
|
+
description: raw_info['description'],
|
24
|
+
organization: raw_info['organization'],
|
25
|
+
location: raw_info['location'],
|
26
|
+
website: raw_info['website_url'],
|
27
|
+
image: raw_info['profile_image_url'],
|
28
|
+
followees_count: raw_info['followees_count'],
|
29
|
+
followers_count: raw_info['followers_count'],
|
30
|
+
items_count: raw_info['items_count'],
|
31
|
+
social: {
|
32
|
+
facebook: raw_info['facebook_id'],
|
33
|
+
github: raw_info['github_login_name'],
|
34
|
+
linkedin_id: raw_info['linkedin_id'],
|
35
|
+
twitter: raw_info['twitter_screen_name']
|
36
|
+
}
|
37
|
+
}
|
38
|
+
end
|
39
|
+
|
40
|
+
extra do
|
41
|
+
skip_info? ? {} : { :raw_info => raw_info }
|
42
|
+
end
|
43
|
+
|
44
|
+
def raw_info
|
45
|
+
@raw_info = @raw_info || access_token.get('/api/v2/authenticated_user').parsed
|
46
|
+
end
|
47
|
+
|
48
|
+
def client
|
49
|
+
OmniAuth::Strategies::Qiita::Client.new(options.client_id, options.client_secret, deep_symbolize(options.client_options))
|
50
|
+
end
|
51
|
+
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
OmniAuth.config.add_camelization 'qiita', 'Qiita'
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module OmniAuth
|
2
|
+
module Strategies
|
3
|
+
class Qiita
|
4
|
+
class AccessToken < ::OAuth2::AccessToken
|
5
|
+
class << self
|
6
|
+
def from_hash_with_token(client, hash)
|
7
|
+
if hash['token']
|
8
|
+
new(client, hash.delete('token') || hash.delete(:token), hash)
|
9
|
+
else
|
10
|
+
orig_from_hash
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
alias_method :orig_from_hash, :from_hash
|
15
|
+
alias_method :from_hash, :from_hash_with_token
|
16
|
+
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module OmniAuth
|
2
|
+
module Strategies
|
3
|
+
class Qiita
|
4
|
+
class Client < ::OAuth2::Client
|
5
|
+
def get_token_with_json(params, access_token_opts = {}, access_token_class = AccessToken)
|
6
|
+
opts = {:raise_errors => options[:raise_errors], :parse => params.delete(:parse)}
|
7
|
+
if options[:token_method] == :post
|
8
|
+
headers = params.delete(:headers)
|
9
|
+
opts[:body] = params.to_json
|
10
|
+
opts[:headers] = {'Content-Type' => 'application/json'}
|
11
|
+
opts[:headers].merge!(headers) if headers
|
12
|
+
else
|
13
|
+
opts[:params] = params
|
14
|
+
end
|
15
|
+
response = request(options[:token_method], token_url, opts)
|
16
|
+
error = Error.new(response)
|
17
|
+
fail(error) if options[:raise_errors] && !(response.parsed.is_a?(Hash) && response.parsed['token'])
|
18
|
+
access_token_class.from_hash(self, response.parsed.merge(access_token_opts))
|
19
|
+
end
|
20
|
+
|
21
|
+
alias_method :orig_get_token, :get_token
|
22
|
+
alias_method :get_token, :get_token_with_json
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'omniauth/qiita/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "omniauth-qiita"
|
8
|
+
spec.version = Omniauth::Qiita::VERSION
|
9
|
+
spec.authors = ["kazu69"]
|
10
|
+
spec.email = ["kazu.69.web+omniauth_qiita@gmail.com"]
|
11
|
+
spec.summary = %q{OmniAuth strategy for qiita}
|
12
|
+
spec.description = %q{OmniAuth strategy for qiita}
|
13
|
+
spec.homepage = "https://github.com/kazu69/omniauth-qiita"
|
14
|
+
spec.license = "MIT"
|
15
|
+
|
16
|
+
spec.files = `git ls-files -z`.split("\x0")
|
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_dependency "omniauth", "~> 1.0"
|
22
|
+
spec.add_dependency "omniauth-oauth2", "~> 1.1"
|
23
|
+
spec.add_dependency "oauth2", "~> 1.0"
|
24
|
+
spec.add_development_dependency "bundler", "~> 1.7"
|
25
|
+
spec.add_development_dependency "rake", "~> 10.0"
|
26
|
+
spec.add_development_dependency "rspec"
|
27
|
+
spec.add_development_dependency "rack-test"
|
28
|
+
spec.add_development_dependency "simplecov"
|
29
|
+
spec.add_development_dependency "webmock"
|
30
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
$LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
|
2
|
+
require 'simplecov'
|
3
|
+
SimpleCov.start
|
4
|
+
|
5
|
+
require 'rspec'
|
6
|
+
require 'webmock/rspec'
|
7
|
+
require 'rack/test'
|
8
|
+
require 'omniauth'
|
9
|
+
require 'omniauth/qiita'
|
10
|
+
|
11
|
+
RSpec.configure do |config|
|
12
|
+
config.include WebMock::API
|
13
|
+
config.include Rack::Test::Methods
|
14
|
+
config.extend OmniAuth::Test::StrategyMacros, type: :strategy
|
15
|
+
config.expect_with :rspec do |c|
|
16
|
+
c.syntax = :expect
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe OmniAuth::Strategies::Qiita::AccessToken do
|
4
|
+
let(:token) { 'monkey' }
|
5
|
+
let(:refresh_body) { MultiJson.encode(:access_token => 'refreshed_foo', :expires_in => 600, :refresh_token => 'refresh_bar') }
|
6
|
+
let(:client) do
|
7
|
+
OmniAuth::Strategies::Qiita::Client.new('abc', 'def', :site => 'https://api.example.com') do |builder|
|
8
|
+
builder.request :url_encoded
|
9
|
+
builder.adapter :test do |stub|
|
10
|
+
VERBS.each do |verb|
|
11
|
+
stub.send(verb, '/token/header') { |env| [200, {}, env[:request_headers]['Authorization']] }
|
12
|
+
stub.send(verb, "/token/query?access_token=#{token}") { |env| [200, {}, Addressable::URI.parse(env[:url]).query_values['access_token']] }
|
13
|
+
stub.send(verb, '/token/body') { |env| [200, {}, env[:body]] }
|
14
|
+
end
|
15
|
+
stub.post('/oauth/token') { |env| [200, {'Content-Type' => 'application/json'}, refresh_body] }
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
subject { OmniAuth::Strategies::Qiita::AccessToken.new(client, token) }
|
21
|
+
|
22
|
+
describe '#from_hash_with_token' do
|
23
|
+
it 'initializes with a Hash' do
|
24
|
+
hash = {:access_token => token, :expires_at => Time.now.to_i + 200, 'foo' => 'bar', 'token' => token}
|
25
|
+
target = OmniAuth::Strategies::Qiita::AccessToken.from_hash_with_token(client, hash)
|
26
|
+
expect(target.token).to eq(token)
|
27
|
+
expect(target).to be_expires
|
28
|
+
expect(target.params.keys).to include('foo')
|
29
|
+
expect(target.params['foo']).to eq('bar')
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,119 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe OmniAuth::Strategies::Qiita do
|
4
|
+
|
5
|
+
def app
|
6
|
+
lambda do |_env|
|
7
|
+
[200, {}, ['Hello.']]
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
subject do
|
12
|
+
args = ['client_id', 'client_secret', @options || {}].compact
|
13
|
+
OmniAuth::Strategies::Qiita.new(*args)
|
14
|
+
end
|
15
|
+
|
16
|
+
describe 'client options' do
|
17
|
+
|
18
|
+
it 'has correct name' do
|
19
|
+
expect(subject.options.name).to eq 'qiita'
|
20
|
+
end
|
21
|
+
|
22
|
+
it 'has correct site' do
|
23
|
+
expect(subject.options.client_options.site).to eq 'https://qiita.com'
|
24
|
+
end
|
25
|
+
|
26
|
+
it 'has correct authorize url' do
|
27
|
+
expect(subject.options.client_options.authorize_url).to eq '/api/v2/oauth/authorize'
|
28
|
+
end
|
29
|
+
|
30
|
+
it 'has correct token url' do
|
31
|
+
expect(subject.options.client_options.token_url).to eq '/api/v2/access_tokens'
|
32
|
+
end
|
33
|
+
|
34
|
+
context 'when overwrite client_options' do
|
35
|
+
let(:api_endpoint) {'https://api.foo.com'}
|
36
|
+
let(:authorize_url_endpoint) {"#{api_endpoint}/api/v2/oauth/"}
|
37
|
+
let(:token_url_endpoint) {"#{api_endpoint}/api/v2/access_tokens"}
|
38
|
+
|
39
|
+
before do
|
40
|
+
@client = OmniAuth::Strategies::Qiita.new('client_secret', 'client_secret', {
|
41
|
+
client_options: {
|
42
|
+
site: api_endpoint,
|
43
|
+
authorize_url: authorize_url_endpoint,
|
44
|
+
token_url: token_url_endpoint
|
45
|
+
}})
|
46
|
+
end
|
47
|
+
it 'for site' do
|
48
|
+
expect(@client.options.client_options.site).to eq api_endpoint
|
49
|
+
end
|
50
|
+
|
51
|
+
it 'for authorize_url' do
|
52
|
+
expect(@client.options.client_options.authorize_url).to eq authorize_url_endpoint
|
53
|
+
end
|
54
|
+
|
55
|
+
it 'for token_url' do
|
56
|
+
expect(@client.options.client_options.token_url).to eq token_url_endpoint
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
describe 'skip_info option' do
|
62
|
+
context 'when skip_info option is enabled' do
|
63
|
+
before do
|
64
|
+
subject.options['skip_info'] = true
|
65
|
+
end
|
66
|
+
it 'not includes raw_info in extras hash' do
|
67
|
+
allow(subject).to receive(:raw_info).and_return({foo: 'bar'})
|
68
|
+
expect(subject.extra[:raw_info]).to be_nil
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
context 'when skip_info option is disabled' do
|
73
|
+
let(:parsed_response) {
|
74
|
+
{foo: 'bar'}
|
75
|
+
}
|
76
|
+
it 'not includes raw_info in extras hash' do
|
77
|
+
allow(subject).to receive(:raw_info).and_return(parsed_response)
|
78
|
+
expect(subject.extra[:raw_info]).to eq parsed_response
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
describe '#raw_info' do
|
84
|
+
let(:parsed_response) do
|
85
|
+
{ foo: 'bar' }
|
86
|
+
end
|
87
|
+
let(:response) { double('Response', parsed: parsed_response) }
|
88
|
+
|
89
|
+
it 'uses relative paths' do
|
90
|
+
allow_message_expectations_on_nil
|
91
|
+
allow(subject.access_token).to receive(:get).with('/api/v2/authenticated_user') { response }
|
92
|
+
expect(subject.raw_info).to eq parsed_response
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
|
97
|
+
describe '#client' do
|
98
|
+
subject { Class.new(OmniAuth::Strategies::Qiita) }
|
99
|
+
|
100
|
+
it 'is initialized with symbolized client_options' do
|
101
|
+
instance = subject.new(app, client_options: {'authorize_url' => 'https://example.com'})
|
102
|
+
expect(instance.client.options[:authorize_url]).to eq('https://example.com')
|
103
|
+
end
|
104
|
+
|
105
|
+
it 'sets ssl options as connection options' do
|
106
|
+
instance = subject.new(app, client_options: {'ssl' => {'ca_path' => 'foo'}})
|
107
|
+
expect(instance.client.options[:connection_opts][:ssl]).to eq(:ca_path => 'foo')
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
111
|
+
end
|
112
|
+
|
113
|
+
describe OmniAuth do
|
114
|
+
describe '.config' do
|
115
|
+
it 'has camelizations' do
|
116
|
+
expect(OmniAuth.config.camelizations['qiita']).to eq 'Qiita'
|
117
|
+
end
|
118
|
+
end
|
119
|
+
end
|
metadata
ADDED
@@ -0,0 +1,190 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: omniauth-qiita
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.3
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- kazu69
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2014-11-16 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: omniauth
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: omniauth-oauth2
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '1.1'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '1.1'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: oauth2
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '1.0'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '1.0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: bundler
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '1.7'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '1.7'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rake
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '10.0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '10.0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: rspec
|
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: simplecov
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
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
|
+
requirements:
|
122
|
+
- - ">="
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: webmock
|
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
|
+
description: OmniAuth strategy for qiita
|
140
|
+
email:
|
141
|
+
- kazu.69.web+omniauth_qiita@gmail.com
|
142
|
+
executables: []
|
143
|
+
extensions: []
|
144
|
+
extra_rdoc_files: []
|
145
|
+
files:
|
146
|
+
- ".gitignore"
|
147
|
+
- Gemfile
|
148
|
+
- README.md
|
149
|
+
- Rakefile
|
150
|
+
- example/Gemfile
|
151
|
+
- example/config.ru
|
152
|
+
- lib/omniauth/qiita.rb
|
153
|
+
- lib/omniauth/qiita/version.rb
|
154
|
+
- lib/omniauth/strategies/qiita.rb
|
155
|
+
- lib/omniauth/strategies/qiita/access_token.rb
|
156
|
+
- lib/omniauth/strategies/qiita/client.rb
|
157
|
+
- omniauth-qiita.gemspec
|
158
|
+
- spec/omniauth/qiita_spec.rb
|
159
|
+
- spec/spec_helper.rb
|
160
|
+
- spec/strategies/qiita/access_token_spec.rb
|
161
|
+
- spec/strategies/qiita_spec.rb
|
162
|
+
homepage: https://github.com/kazu69/omniauth-qiita
|
163
|
+
licenses:
|
164
|
+
- MIT
|
165
|
+
metadata: {}
|
166
|
+
post_install_message:
|
167
|
+
rdoc_options: []
|
168
|
+
require_paths:
|
169
|
+
- lib
|
170
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
171
|
+
requirements:
|
172
|
+
- - ">="
|
173
|
+
- !ruby/object:Gem::Version
|
174
|
+
version: '0'
|
175
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
176
|
+
requirements:
|
177
|
+
- - ">="
|
178
|
+
- !ruby/object:Gem::Version
|
179
|
+
version: '0'
|
180
|
+
requirements: []
|
181
|
+
rubyforge_project:
|
182
|
+
rubygems_version: 2.2.2
|
183
|
+
signing_key:
|
184
|
+
specification_version: 4
|
185
|
+
summary: OmniAuth strategy for qiita
|
186
|
+
test_files:
|
187
|
+
- spec/omniauth/qiita_spec.rb
|
188
|
+
- spec/spec_helper.rb
|
189
|
+
- spec/strategies/qiita/access_token_spec.rb
|
190
|
+
- spec/strategies/qiita_spec.rb
|