chairman 0.0.2 → 0.0.3.alpha.1
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/lib/chairman.rb +22 -10
- data/lib/http_cache/response.rb +15 -0
- data/lib/version.rb +1 -1
- metadata +56 -7
data/lib/chairman.rb
CHANGED
@@ -1,38 +1,50 @@
|
|
1
1
|
require 'sinatra/base'
|
2
|
-
require '
|
2
|
+
require 'faraday/http_cache'
|
3
|
+
require 'http_cache/response'
|
4
|
+
require 'octokit'
|
5
|
+
require 'logger'
|
3
6
|
|
4
7
|
module Chairman
|
5
8
|
class << self
|
6
9
|
attr_reader :session, :client_id, :client_secret, :scope
|
7
10
|
|
8
11
|
def config(client_id, client_secret, scope)
|
12
|
+
memcache_host = ENV['MEMCACHIER_SERVERS'] || 'localhost:11211'
|
13
|
+
|
14
|
+
stack = Faraday::Builder.new do |builder|
|
15
|
+
builder.use Faraday::HttpCache, logger: Logger.new(STDOUT), store: :mem_cache_store, store_options: [memcache_host]
|
16
|
+
builder.adapter Faraday.default_adapter
|
17
|
+
end
|
18
|
+
Octokit.middleware = stack
|
19
|
+
|
9
20
|
@client_id = client_id
|
10
21
|
@client_secret = client_secret
|
11
22
|
@scope = scope
|
12
23
|
end
|
13
24
|
|
14
25
|
def session(auth_token = '')
|
15
|
-
@session =
|
16
|
-
|
17
|
-
|
18
|
-
config.oauth_token = auth_token
|
19
|
-
end
|
26
|
+
@session = Octokit::Client.new :access_token => auth_token,
|
27
|
+
:client_id => @client_id,
|
28
|
+
:client_secret => @client_secret
|
20
29
|
end
|
21
30
|
end
|
22
31
|
|
23
32
|
class Routes < Sinatra::Base
|
24
33
|
get '/authorize' do
|
25
|
-
redirect to Chairman.session.authorize_url :scope => Chairman.scope
|
34
|
+
redirect to Chairman.session.authorize_url(Chairman.client_id, '', :scope => Chairman.scope.join(','))
|
26
35
|
end
|
27
36
|
|
28
37
|
get '/authorize/return' do
|
29
38
|
halt if params[:error] == 'access_denied'
|
30
39
|
|
31
|
-
token = Chairman.session.
|
40
|
+
token = Chairman.session.exchange_code_for_token(params[:code], Chairman.client_id, Chairman.client_secret, {:accept => 'application/json'})
|
41
|
+
|
42
|
+
# TODO: Verify that returned scope is the same as we requested
|
43
|
+
# See: http://developer.github.com/changes/2013-10-04-oauth-changes-coming/
|
32
44
|
|
33
|
-
@user = Chairman.session(token.
|
45
|
+
@user = Chairman.session(token.access_token).user
|
34
46
|
|
35
|
-
session[:github_token] = token.
|
47
|
+
session[:github_token] = token.access_token
|
36
48
|
session[:github_id] = @user.login
|
37
49
|
session[:gravatar_id] = @user.gravatar_id
|
38
50
|
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module Faraday
|
2
|
+
class HttpCache < Faraday::Middleware
|
3
|
+
# Internal: a class to represent a response from a Faraday request.
|
4
|
+
# It decorates the response hash into a smarter object that queries
|
5
|
+
# the response headers and status informations about how the caching
|
6
|
+
# middleware should handle this specific response.
|
7
|
+
class Response
|
8
|
+
def cacheable?
|
9
|
+
return false if cache_control.no_store?
|
10
|
+
|
11
|
+
cacheable_status_code? && (validateable? || fresh?)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
data/lib/version.rb
CHANGED
metadata
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: chairman
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.0.3.alpha.1
|
5
|
+
prerelease: 6
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Jed Foster
|
@@ -28,13 +28,13 @@ dependencies:
|
|
28
28
|
- !ruby/object:Gem::Version
|
29
29
|
version: 1.4.3
|
30
30
|
- !ruby/object:Gem::Dependency
|
31
|
-
name:
|
31
|
+
name: octokit
|
32
32
|
requirement: !ruby/object:Gem::Requirement
|
33
33
|
none: false
|
34
34
|
requirements:
|
35
35
|
- - ~>
|
36
36
|
- !ruby/object:Gem::Version
|
37
|
-
version: 0
|
37
|
+
version: '2.0'
|
38
38
|
type: :runtime
|
39
39
|
prerelease: false
|
40
40
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -42,7 +42,55 @@ dependencies:
|
|
42
42
|
requirements:
|
43
43
|
- - ~>
|
44
44
|
- !ruby/object:Gem::Version
|
45
|
-
version: 0
|
45
|
+
version: '2.0'
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: faraday-http-cache
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ~>
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: 0.3.0
|
54
|
+
type: :runtime
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ~>
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 0.3.0
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: dalli
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ~>
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: 2.6.4
|
70
|
+
type: :runtime
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ~>
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: 2.6.4
|
78
|
+
- !ruby/object:Gem::Dependency
|
79
|
+
name: memcachier
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
82
|
+
requirements:
|
83
|
+
- - '='
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: 0.0.2
|
86
|
+
type: :runtime
|
87
|
+
prerelease: false
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - '='
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: 0.0.2
|
46
94
|
description: GitHub authentication routes and tools for Sinatra apps
|
47
95
|
email: jed@jedfoster.com
|
48
96
|
executables: []
|
@@ -52,6 +100,7 @@ files:
|
|
52
100
|
- README.md
|
53
101
|
- LICENSE
|
54
102
|
- lib/chairman.rb
|
103
|
+
- lib/http_cache/response.rb
|
55
104
|
- lib/version.rb
|
56
105
|
homepage: https://github.com/jedfoster/Chairman
|
57
106
|
licenses: []
|
@@ -68,9 +117,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
68
117
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
69
118
|
none: false
|
70
119
|
requirements:
|
71
|
-
- - ! '
|
120
|
+
- - ! '>'
|
72
121
|
- !ruby/object:Gem::Version
|
73
|
-
version:
|
122
|
+
version: 1.3.1
|
74
123
|
requirements: []
|
75
124
|
rubyforge_project:
|
76
125
|
rubygems_version: 1.8.23
|