auth_tool 0.1.0 → 1.0.0
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 +4 -4
- data/examples/oauth1-twitter.rb +4 -2
- data/examples/oauth2-github.rb +3 -2
- data/lib/auth_tool/client.rb +5 -2
- data/lib/auth_tool/oauth_1.rb +2 -1
- data/lib/auth_tool/oauth_2.rb +2 -1
- data/lib/auth_tool/version.rb +1 -1
- data/lib/auth_tool.rb +5 -14
- metadata +1 -4
- data/client_secrets/README.md +0 -33
- data/client_secrets/client_secrets.json +0 -41
- data/lib/auth_tool/helper.rb +0 -33
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 70920dcd4afbb68a32b3195629f9fb62a042326f
|
4
|
+
data.tar.gz: 3be6cf4fd1567d7452a48a674a1ee336cf7ec550
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ed388c1d6a97eacfa9fd7fa6b39d990892ad0efd56a71f7b4670e7cad80608dc8a5e9040350ee52fd098b737e6e30bf78abd48cf01cc4685daabdd28a8eaf7f4
|
7
|
+
data.tar.gz: 4c76d3c359f7d537751d4e7b24f359fc440c2f8e97621ad6ad2c06cbc884353a510d86405685023e2c6c30573f121021d869e0cf90191dc629c8f0a9d9aeeac9
|
data/examples/oauth1-twitter.rb
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
require 'sinatra'
|
2
|
-
require_relative '../auth_tool'
|
3
|
-
client = AuthTool::get_client 'twitter'
|
2
|
+
require_relative '../lib/auth_tool'
|
3
|
+
#client = AuthTool::get_client 'twitter'
|
4
|
+
client = AuthTool::get_client({"temporary_credential_uri" => "https://api.twitter.com/oauth/request_token", "authorization_uri" => "https://api.twitter.com/oauth/authorize", "token_credential_uri" => "https://api.twitter.com/oauth/access_token", "client_credential_key" => "ajkMgzvyhFwZV9hBgQjlW0rrG", "client_credential_secret" => "BKorJt4MRMpGxCGXNWGz0nFBhd7XfRx3vOHQpL24LKImcLlKXU", "callback" => "http://localhost:4567/callback", "verifier" => "oauth_verifier", "oauth_version" => "1" })
|
5
|
+
|
4
6
|
get '/' do
|
5
7
|
redirect AuthTool::get_redirect_url client
|
6
8
|
end
|
data/examples/oauth2-github.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'sinatra'
|
2
|
-
require_relative '../auth_tool'
|
3
|
-
client = AuthTool::get_client 'github'
|
2
|
+
require_relative '../lib/auth_tool'
|
3
|
+
#client = AuthTool::get_client 'github'
|
4
|
+
client = AuthTool::get_client JSON.parse({ "client_id":"c1d4265302eba1aa4f37", "authorization_uri":"https://github.com/login/oauth/authorize", "token_credential_uri":"https://github.com/login/oauth/access_token", "client_secret":"7be3891166bdfc95193b20bf3e65dbf0844e2121", "oauth_version": "2", "redirect_uri": "http://localhost:4567/callback", "scope": "user" })
|
4
5
|
get '/' do
|
5
6
|
redirect AuthTool::get_redirect_url client
|
6
7
|
end
|
data/lib/auth_tool/client.rb
CHANGED
@@ -9,8 +9,11 @@ module AuthTool
|
|
9
9
|
#
|
10
10
|
# @param [Hash] options
|
11
11
|
# Configuration parameters for the client.
|
12
|
-
def initialize(options, *
|
12
|
+
def initialize(options, *args)
|
13
13
|
config = options
|
14
|
+
credentials = args[0] if args.length == 1
|
15
|
+
credentials ||= {}
|
16
|
+
raise "Too many args" if args.length > 1
|
14
17
|
@has_params = config.has_key?('params')
|
15
18
|
self.oauth_version = config.delete('oauth_version')
|
16
19
|
self.params = config.delete('params') if @has_params
|
@@ -21,7 +24,7 @@ module AuthTool
|
|
21
24
|
elsif @oauth_version == 2
|
22
25
|
oauth2 config
|
23
26
|
self.signet.access_token = credentials["oauth_token"] if credentials.has_key? "oauth_token"
|
24
|
-
self.signet.refresh_token = credentials["refresh_token"] if credentialsl.has_key? "refresh_token"
|
27
|
+
self.signet.refresh_token = credentials["refresh_token"] if credentialsl.has_key? "refresh_token"
|
25
28
|
else
|
26
29
|
raise "Unexpected oauth_version: #{@oauth_version}"
|
27
30
|
end
|
data/lib/auth_tool/oauth_1.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require_relative 'client'
|
2
2
|
require 'json'
|
3
|
+
require 'faraday'
|
3
4
|
|
4
5
|
module AuthTool
|
5
6
|
module OAuth1
|
@@ -61,7 +62,7 @@ module AuthTool
|
|
61
62
|
def self.call(client, http_verb = 'get', uri, params)
|
62
63
|
header = params.delete('header') if params.has_key? 'header'
|
63
64
|
body = params.delete('body') if params.has_key? 'body'
|
64
|
-
conn =
|
65
|
+
conn = Faraday.new(:params => params)
|
65
66
|
options = {:method => http_verb, :header => header, :body => body, :uri => uri, :connection => conn}
|
66
67
|
response = client.signet.fetch_protected_resource(options)
|
67
68
|
return JSON.parse(response.body)
|
data/lib/auth_tool/oauth_2.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'faraday'
|
1
2
|
require_relative 'client'
|
2
3
|
|
3
4
|
module AuthTool
|
@@ -50,7 +51,7 @@ module AuthTool
|
|
50
51
|
def self.call(client,http_verb = 'get', uri, params)
|
51
52
|
header = params.delete('header') if params.has_key? 'header'
|
52
53
|
body = params.delete('body') if params.has_key? 'body'
|
53
|
-
conn =
|
54
|
+
conn = Faraday.new(:params => params)
|
54
55
|
options = {:method => http_verb, :header => header, :body => body, :uri => uri, :connection => conn}
|
55
56
|
response = client.signet.fetch_protected_resource(options)
|
56
57
|
return JSON.parse(response.body)
|
data/lib/auth_tool/version.rb
CHANGED
data/lib/auth_tool.rb
CHANGED
@@ -1,5 +1,4 @@
|
|
1
1
|
require_relative 'auth_tool/client'
|
2
|
-
require_relative 'auth_tool/helper'
|
3
2
|
require_relative 'auth_tool/oauth_1'
|
4
3
|
require_relative 'auth_tool/oauth_2'
|
5
4
|
|
@@ -7,12 +6,13 @@ module AuthTool
|
|
7
6
|
##
|
8
7
|
# Creates a client object for the specified API.
|
9
8
|
#
|
10
|
-
# @param [String]
|
11
|
-
# The
|
9
|
+
# @param [String] client_secrets
|
10
|
+
# The client_secrets hash for the API
|
12
11
|
#
|
13
12
|
# @return [AuthTool::Client] The client.
|
14
|
-
def self.get_client
|
15
|
-
|
13
|
+
def self.get_client client_secrets
|
14
|
+
raise "Expected Hash, received #{client_secrets.class}" if client_secrets.class != Hash
|
15
|
+
client = create_client(client_secrets)
|
16
16
|
return client
|
17
17
|
end
|
18
18
|
|
@@ -98,13 +98,4 @@ module AuthTool
|
|
98
98
|
def self.create_client options
|
99
99
|
AuthTool::Client.new options
|
100
100
|
end
|
101
|
-
|
102
|
-
##
|
103
|
-
# Gets config hash for the given API
|
104
|
-
#
|
105
|
-
# @param [String] api_name
|
106
|
-
# The name of the API/Company as it appears in the database
|
107
|
-
def self.read_config api_name
|
108
|
-
AuthTool::Helper.read_secrets(api_name)
|
109
|
-
end
|
110
101
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: auth_tool
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Fan
|
@@ -54,13 +54,10 @@ files:
|
|
54
54
|
- auth_tool.gemspec
|
55
55
|
- bin/console
|
56
56
|
- bin/setup
|
57
|
-
- client_secrets/README.md
|
58
|
-
- client_secrets/client_secrets.json
|
59
57
|
- examples/oauth1-twitter.rb
|
60
58
|
- examples/oauth2-github.rb
|
61
59
|
- lib/auth_tool.rb
|
62
60
|
- lib/auth_tool/client.rb
|
63
|
-
- lib/auth_tool/helper.rb
|
64
61
|
- lib/auth_tool/oauth_1.rb
|
65
62
|
- lib/auth_tool/oauth_2.rb
|
66
63
|
- lib/auth_tool/version.rb
|
data/client_secrets/README.md
DELETED
@@ -1,33 +0,0 @@
|
|
1
|
-
client_secrets.json
|
2
|
-
===
|
3
|
-
|
4
|
-
Format for basic 3-legged OAuth entries:
|
5
|
-
---
|
6
|
-
```
|
7
|
-
{
|
8
|
-
"api_name":{
|
9
|
-
"temporary_credential_uri": "oauth/request_token",
|
10
|
-
"authorization_uri": "oauth/authorize",
|
11
|
-
"token_credential_uri": "oauth/access_token",
|
12
|
-
"client_credential_key": "key",
|
13
|
-
"client_credential_secret": "secret",
|
14
|
-
"callback": "callback",
|
15
|
-
"verifier": "verifier",
|
16
|
-
"oauth_version": "version",
|
17
|
-
"params:"{
|
18
|
-
"sample_param": "sample"
|
19
|
-
}
|
20
|
-
}
|
21
|
-
```
|
22
|
-
Parameters:
|
23
|
-
---
|
24
|
-
- **api_name**: Lowercase name of the API/company.
|
25
|
-
- **temporary_credential_uri**: Full URL of the request token endpoint.
|
26
|
-
- **authorization_uri**: URL to redirect the user to so they can authenticate with the service.
|
27
|
-
- **token_credential_uri**: Full URL of the access token endpoint.
|
28
|
-
- **client_credential_key**: Client key (ID) provided by the service's API dashboard.
|
29
|
-
- **client_credential_secret**: Client secret provided by the service's API dashboard.
|
30
|
-
- **callback**: Securable callback URL (**TODO:** update once we figure out the endpoint).
|
31
|
-
- **verifier**: Name of the verifier key that the Auth server passes back after the user successfully authenticates with them.
|
32
|
-
- **oauth_version**: Either 1 or 2 depending on the OAuth implementation of the API.
|
33
|
-
- **params**: (Optional) Hash of extra parameter values that the API requests.
|
@@ -1,41 +0,0 @@
|
|
1
|
-
{
|
2
|
-
"twitter":{
|
3
|
-
"temporary_credential_uri": "https://api.twitter.com/oauth/request_token",
|
4
|
-
"authorization_uri": "https://api.twitter.com/oauth/authorize",
|
5
|
-
"token_credential_uri": "https://api.twitter.com/oauth/access_token",
|
6
|
-
"client_credential_key": "ajkMgzvyhFwZV9hBgQjlW0rrG",
|
7
|
-
"client_credential_secret": "BKorJt4MRMpGxCGXNWGz0nFBhd7XfRx3vOHQpL24LKImcLlKXU",
|
8
|
-
"callback": "http://localhost:4567/callback",
|
9
|
-
"verifier": "oauth_verifier",
|
10
|
-
"oauth_version": "1"
|
11
|
-
},
|
12
|
-
"cacoo":{
|
13
|
-
"temporary_credential_uri": "https://cacoo.com/oauth/request_token",
|
14
|
-
"authorization_uri": "https://cacoo.com/oauth/authorize",
|
15
|
-
"token_credential_uri": "https://cacoo.com/oauth/access_token",
|
16
|
-
"client_credential_key": "GSObuYmNbvzIRWlDRiHLyI",
|
17
|
-
"client_credential_secret": "pHCMknNDivnkAeSreVpKZZhNdAasUGGimBmBagSDlj",
|
18
|
-
"callback": "http://localhost:4567/",
|
19
|
-
"verifier": "oauth_verifier",
|
20
|
-
"oauth_version": "1"
|
21
|
-
},
|
22
|
-
"google":{
|
23
|
-
"client_id":"915626980700-ks501tpkrffod16sjvbumikt1q3s5q5m.apps.googleusercontent.com",
|
24
|
-
"project_id":"atomic-optics-168719",
|
25
|
-
"authorization_uri":"https://accounts.google.com/o/oauth2/auth",
|
26
|
-
"token_credential_uri":"https://accounts.google.com/o/oauth2/token",
|
27
|
-
"auth_provider_x509_cert_url":"https://www.googleapis.com/oauth2/v1/certs",
|
28
|
-
"client_secret":"N7ceZl5u0mGZ8E-v-2hNj6Iz",
|
29
|
-
"oauth_version": "2",
|
30
|
-
"redirect_uri": "http://localhost:4567/",
|
31
|
-
"scope":"https://www.googleapis.com/auth/adsensehost"},
|
32
|
-
"github":{
|
33
|
-
"client_id":"c1d4265302eba1aa4f37",
|
34
|
-
"authorization_uri":"https://github.com/login/oauth/authorize",
|
35
|
-
"token_credential_uri":"https://github.com/login/oauth/access_token",
|
36
|
-
"client_secret":"7be3891166bdfc95193b20bf3e65dbf0844e2121",
|
37
|
-
"oauth_version": "2",
|
38
|
-
"redirect_uri": "http://localhost:4567/callback",
|
39
|
-
"scope": "user"
|
40
|
-
}
|
41
|
-
}
|
data/lib/auth_tool/helper.rb
DELETED
@@ -1,33 +0,0 @@
|
|
1
|
-
require 'json'
|
2
|
-
require 'faraday'
|
3
|
-
|
4
|
-
f = File.new('../client_secrets/client_secrets.json', 'r')
|
5
|
-
Client_secrets = JSON.parse(f.read).freeze
|
6
|
-
|
7
|
-
module AuthTool
|
8
|
-
module Helper
|
9
|
-
##
|
10
|
-
# Returns the configuration hash for the given API.
|
11
|
-
#
|
12
|
-
# @param [String] api_name
|
13
|
-
# The api you wish to authenticate against (i.e., twitter)
|
14
|
-
#
|
15
|
-
# @return [Hash] The configuration hash for api_name
|
16
|
-
def self.read_secrets api_name
|
17
|
-
raise "API not found" unless Client_secrets.has_key?(api_name.downcase)
|
18
|
-
return Client_secrets[api_name.downcase]
|
19
|
-
end
|
20
|
-
|
21
|
-
##
|
22
|
-
# Returns a Faraday Connetion object
|
23
|
-
#
|
24
|
-
# @param [Hash] params
|
25
|
-
# The additional parameters hash.
|
26
|
-
#
|
27
|
-
# @return [Faraday::Connection]
|
28
|
-
def self.get_connection(params)
|
29
|
-
connection = Faraday.new(:params => params)
|
30
|
-
return connection
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|