omniauth-clio 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/.DS_Store +0 -0
- data/README.md +27 -12
- data/lib/omniauth-clio/version.rb +1 -1
- data/lib/omniauth/strategies/Clio.rb +38 -48
- data/omniauth-clio.gemspec +1 -1
- data/spec/omniauth/strategies/clio_spec.rb +4 -7
- metadata +4 -3
data/.DS_Store
ADDED
Binary file
|
data/README.md
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
# OmniAuth clio
|
2
2
|
|
3
|
-
This gem contains the clio strategy for OmniAuth. I used the omniauth-
|
3
|
+
This gem contains the clio strategy for OmniAuth. I used the omniauth-harvest gem as a template to getting this up and running. Yay open source!!
|
4
4
|
|
5
|
-
|
5
|
+
Clio uses the OAuth 2.0 flow, you can read about it here: http://api-docs.goclio.com/v1/index.html#authorization-with-oauth-2-0
|
6
6
|
|
7
7
|
## How To Use It
|
8
8
|
|
@@ -14,28 +14,43 @@ You can pull them in directly from github e.g.:
|
|
14
14
|
|
15
15
|
gem 'omniauth-clio', :git => 'https://github.com/shicholas/omniauth-clio.git'
|
16
16
|
|
17
|
-
Once these are in, you need to add the following to your `config/initializers/omniauth.rb
|
17
|
+
Once these are in, you need to add the following to your `config/initializers/omniauth.rb` if using a rails app:
|
18
18
|
|
19
19
|
Rails.application.config.middleware.use OmniAuth::Builder do
|
20
|
-
provider :clio,
|
20
|
+
provider :clio, ENV['CLIO_CLIENT_KEY'], ENV['CLIO_CLIENT_SECRET']
|
21
21
|
end
|
22
22
|
|
23
|
-
|
23
|
+
If you are using Devise in conjunction with omniauth, add this to your devise.rb file that is generated by devise:
|
24
|
+
|
25
|
+
config.omniauth :clio, ENV['CLIO_CLIENT_KEY'], ENV['CLIO_CLIENT_SECRET']
|
26
|
+
|
27
|
+
|
28
|
+
If you're just using something else that doesn't depend on Rack you can add this:
|
29
|
+
use OmniAuth::Builder do
|
30
|
+
provider :cheddar, ENV['CLIO_CLIENT_KEY'], ENV['CLIO_CLIENT_SECRET']
|
31
|
+
end
|
24
32
|
|
25
33
|
|
26
34
|
## Watch the RailsCast
|
27
35
|
|
28
|
-
Ryan Bates has put together an excellent RailsCast on OmniAuth:
|
36
|
+
Ryan Bates has put together an excellent RailsCast on OmniAuth which you can watch here: http://railscasts.com/episodes/241-simple-omniauth-revised
|
37
|
+
|
38
|
+
## Getting your API Key
|
39
|
+
To get an API Key from Clio you will need to follow these steps http://api-docs.goclio.com/v1/index.html#create-a-clio-account.
|
40
|
+
|
41
|
+
It is recommended you use environment variables to store your keys so that Clio can regonize your app. You can do so by using these shell commands:
|
42
|
+
export CLIO_CLIENT_KEY=...
|
43
|
+
export CLIO_CLIENT_SECRET=...
|
44
|
+
rails server
|
29
45
|
|
30
|
-
|
46
|
+
If you love Heroku as much as I do, you can use these commands to get it to work there:
|
47
|
+
heroku config:add CLIO_APP_KEY=...
|
31
48
|
|
32
49
|
|
33
50
|
## Supported Rubies
|
34
51
|
|
35
|
-
OmniAuth clio is tested under 1.8.7, 1.9.2, 1.9.3 and Ruby Enterprise Edition.
|
52
|
+
OmniAuth clio is tested under 1.8.7, 1.9.2, 1.9.3 and Ruby Enterprise Edition. I used the simplecov gem, https://github.com/colszowka/simplecov, to help me determine this.
|
36
53
|
|
37
|
-
[![CI Build
|
38
|
-
Status](https://secure.travis-ci.org/arunagw/omniauth-clio.png)](http://travis-ci.org/arunagw/omniauth-clio)
|
39
54
|
|
40
55
|
## Note on Patches/Pull Requests
|
41
56
|
|
@@ -43,11 +58,11 @@ Status](https://secure.travis-ci.org/arunagw/omniauth-clio.png)](http://travis-c
|
|
43
58
|
- Make your feature addition or bug fix.
|
44
59
|
- Add tests for it. This is important so I don’t break it in a future version unintentionally.
|
45
60
|
- Commit, do not mess with rakefile, version, or history. (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
|
46
|
-
- Send me a pull request
|
61
|
+
- Send me a pull request, thanks so much for your help!!
|
47
62
|
|
48
63
|
## License
|
49
64
|
|
50
|
-
Copyright (c)
|
65
|
+
Copyright (c) 2012 by Nicholas Shook
|
51
66
|
|
52
67
|
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:
|
53
68
|
|
@@ -1,68 +1,58 @@
|
|
1
|
-
require 'omniauth-
|
1
|
+
require 'omniauth-oauth2'
|
2
2
|
require 'multi_json'
|
3
3
|
|
4
4
|
module OmniAuth
|
5
5
|
module Strategies
|
6
|
-
class
|
7
|
-
option :name,
|
8
|
-
option :client_options, {:authorize_path => '/oauth/authenticate',
|
9
|
-
:site => 'http://api-docs.goclio.com/',
|
10
|
-
:proxy => ENV['http_proxy'] ? URI(ENV['http_proxy']) : nil}
|
6
|
+
class Clio < OmniAuth::Strategies::OAuth2
|
7
|
+
option :name, "clio"
|
11
8
|
|
12
|
-
|
9
|
+
option :client_options, {
|
10
|
+
:site => 'https://app.goclio.com',
|
11
|
+
:authorize_url => '/oauth/authorize',
|
12
|
+
:token_url => '/oauth/token'
|
13
|
+
}
|
14
|
+
|
15
|
+
uid { raw_info['id']}
|
13
16
|
|
14
17
|
info do
|
15
18
|
{
|
16
|
-
:
|
17
|
-
:
|
18
|
-
:
|
19
|
-
:
|
20
|
-
:description => raw_info['description'],
|
21
|
-
:urls => {
|
22
|
-
'Website' => raw_info['url'],
|
23
|
-
'clio' => 'http://goclio.com/' + raw_info['screen_name'],
|
24
|
-
}
|
19
|
+
:last_name => raw_info['user']['last_name']
|
20
|
+
:first_name => raw_info['user']['first_name']
|
21
|
+
:email => raw_info['user']['email']
|
22
|
+
:firm => raw_info['account']['name']
|
25
23
|
}
|
26
|
-
end
|
27
24
|
|
28
|
-
|
29
|
-
|
25
|
+
def authorize_params
|
26
|
+
super.tap do |params|
|
27
|
+
params[:response_type] = "code"
|
28
|
+
params[:client_id] = client.id
|
29
|
+
params[:redirect_uri] ||= callback_url
|
30
|
+
end
|
30
31
|
end
|
31
32
|
|
32
|
-
def
|
33
|
-
|
34
|
-
rescue ::Errno::ETIMEDOUT
|
35
|
-
raise ::Timeout::Error
|
33
|
+
def request_phase
|
34
|
+
super
|
36
35
|
end
|
37
36
|
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
if screen_name && !screen_name.empty?
|
49
|
-
options[:authorize_params] ||= {}
|
50
|
-
options[:authorize_params].merge!(:force_login => 'true', :screen_name => screen_name)
|
51
|
-
end
|
52
|
-
if x_auth_access_type
|
53
|
-
options[:request_params] || {}
|
54
|
-
options[:request_params].merge!(:x_auth_access_type => x_auth_access_type)
|
55
|
-
end
|
37
|
+
def build_access_token
|
38
|
+
token_params = {
|
39
|
+
:code => request.params['code'],
|
40
|
+
:redirect_uri => callback_url,
|
41
|
+
:client_id => client.id,
|
42
|
+
:client_secret => client.secret,
|
43
|
+
:grant_type => 'authorization_code'
|
44
|
+
}
|
45
|
+
client.get_token(token_params)
|
46
|
+
end
|
56
47
|
|
57
|
-
|
58
|
-
|
59
|
-
else
|
60
|
-
options.client_options.authorize_path = '/oauth/authenticate'
|
61
|
-
end
|
62
|
-
|
63
|
-
old_request_phase
|
48
|
+
extra do
|
49
|
+
{:raw_info => raw_info}
|
64
50
|
end
|
65
51
|
|
52
|
+
def raw_info
|
53
|
+
@raw_info ||= MultiJson.load(access_token.get('api/v1/users/who_am_i').body)
|
54
|
+
end
|
66
55
|
end
|
67
56
|
end
|
68
57
|
end
|
58
|
+
|
data/omniauth-clio.gemspec
CHANGED
@@ -19,7 +19,7 @@ Gem::Specification.new do |s|
|
|
19
19
|
s.require_paths = ["lib"]
|
20
20
|
|
21
21
|
s.add_dependency 'multi_json', '~> 1.3'
|
22
|
-
s.add_runtime_dependency 'omniauth-
|
22
|
+
s.add_runtime_dependency 'omniauth-oauth2', '~> 1.0'
|
23
23
|
s.add_development_dependency 'rspec', '~> 2.7'
|
24
24
|
s.add_development_dependency 'rack-test'
|
25
25
|
s.add_development_dependency 'simplecov'
|
@@ -1,21 +1,18 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe OmniAuth::Strategies::
|
3
|
+
describe OmniAuth::Strategies::Clio do
|
4
4
|
subject do
|
5
|
-
OmniAuth::Strategies::
|
5
|
+
OmniAuth::Strategies::Clio.new({})
|
6
6
|
end
|
7
7
|
|
8
8
|
context "client options" do
|
9
9
|
it 'should have correct name' do
|
10
|
-
subject.options.name.should eq("
|
10
|
+
subject.options.name.should eq("Clio")
|
11
11
|
end
|
12
12
|
|
13
13
|
it 'should have correct site' do
|
14
|
-
subject.options.client_options.site.should eq('
|
14
|
+
subject.options.client_options.site.should eq('https://app.goclio.com')
|
15
15
|
end
|
16
16
|
|
17
|
-
it 'should have correct authorize url' do
|
18
|
-
subject.options.client_options.authorize_path.should eq('/oauth/authenticate')
|
19
|
-
end
|
20
17
|
end
|
21
18
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: omniauth-clio
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-09-
|
12
|
+
date: 2012-09-09 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: multi_json
|
@@ -28,7 +28,7 @@ dependencies:
|
|
28
28
|
- !ruby/object:Gem::Version
|
29
29
|
version: '1.3'
|
30
30
|
- !ruby/object:Gem::Dependency
|
31
|
-
name: omniauth-
|
31
|
+
name: omniauth-oauth2
|
32
32
|
requirement: !ruby/object:Gem::Requirement
|
33
33
|
none: false
|
34
34
|
requirements:
|
@@ -114,6 +114,7 @@ executables: []
|
|
114
114
|
extensions: []
|
115
115
|
extra_rdoc_files: []
|
116
116
|
files:
|
117
|
+
- .DS_Store
|
117
118
|
- .gitignore
|
118
119
|
- .rspec
|
119
120
|
- .travis.yml
|