restpack_web 0.0.4 → 0.0.5
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/Gemfile +2 -0
- data/lib/restpack_web/configuration.rb +16 -0
- data/lib/restpack_web/context.rb +70 -0
- data/lib/restpack_web/rack/domain.rb +36 -0
- data/lib/restpack_web/rack/session.rb +7 -0
- data/lib/restpack_web/rack/user.rb +35 -0
- data/lib/restpack_web/rails/controller.rb +11 -0
- data/lib/restpack_web/sinatra/app.rb +13 -0
- data/lib/restpack_web/version.rb +1 -1
- data/lib/restpack_web.rb +9 -3
- data/restpack_web.gemspec +4 -0
- metadata +65 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8830af231f1d83fb48ceae33fd6e664421a7decd
|
4
|
+
data.tar.gz: f6a3bfb0fc99b289934bc476abb95c0b0b573663
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fda6cf1ebece0df58b0b0aeadb91b4680c905686bd6d5fc86466c89a605b9f23c7c373cddd302eb7e97d7b69a0a2b344defda1157359f41629d9f8c2b32d3dda
|
7
|
+
data.tar.gz: 66f2cd98d722c66ab32b4c59ed5a5fc2b1b12553b1b29455b963e343d7a0178bad5071af552b830640cbc16dc551a9d9d86b942d5ac7a155c49e4dfd145a95fb
|
data/Gemfile
CHANGED
@@ -0,0 +1,16 @@
|
|
1
|
+
module RestPack::Web
|
2
|
+
class Configuration
|
3
|
+
attr_accessor :authentication_port
|
4
|
+
|
5
|
+
def initialize
|
6
|
+
@authentication_port = nil
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
mattr_accessor :config
|
11
|
+
@@config = Configuration.new
|
12
|
+
|
13
|
+
def self.setup
|
14
|
+
yield @@config
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,70 @@
|
|
1
|
+
module RestPack::Web
|
2
|
+
class Context
|
3
|
+
attr_accessor :domain, :application, :user, :account
|
4
|
+
|
5
|
+
def initialize(env)
|
6
|
+
restpack = env['restpack']
|
7
|
+
|
8
|
+
if restpack
|
9
|
+
@domain = restpack[:domain]
|
10
|
+
@application = restpack[:application]
|
11
|
+
@user = restpack[:user]
|
12
|
+
@account = restpack[:account]
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
def authenticated?
|
17
|
+
!@user.nil?
|
18
|
+
end
|
19
|
+
|
20
|
+
def user_id
|
21
|
+
authenticated? ? @user[:id] : nil
|
22
|
+
end
|
23
|
+
|
24
|
+
def account_id
|
25
|
+
authenticated? ? @account[:id] : nil
|
26
|
+
end
|
27
|
+
|
28
|
+
def application_id
|
29
|
+
@application[:id]
|
30
|
+
end
|
31
|
+
|
32
|
+
def domain_id
|
33
|
+
@domain[:id]
|
34
|
+
end
|
35
|
+
|
36
|
+
def home_domain
|
37
|
+
"www.#{@domain[:identifier]}"
|
38
|
+
end
|
39
|
+
|
40
|
+
def auth_domain
|
41
|
+
"auth.#{@domain[:identifier]}"
|
42
|
+
end
|
43
|
+
|
44
|
+
def logout_url(next_url = nil)
|
45
|
+
next_url ||= "http://#{home_domain}/"
|
46
|
+
auth_url('/auth/logout', next_url)
|
47
|
+
end
|
48
|
+
|
49
|
+
def login_url(provider = :twitter, next_url = nil)
|
50
|
+
auth_url("/auth/#{provider}", next_url)
|
51
|
+
end
|
52
|
+
|
53
|
+
def debug_info
|
54
|
+
"todo"
|
55
|
+
end
|
56
|
+
|
57
|
+
private
|
58
|
+
|
59
|
+
def auth_url(path, next_url = nil)
|
60
|
+
#TODO: GJ: whitelist the next_url?
|
61
|
+
#TODO: GJ: URI encode next_url?
|
62
|
+
port = RestPack::Web.config.authentication_port
|
63
|
+
|
64
|
+
port_part = port ? ":#{port}" : ""
|
65
|
+
next_part = next_url ? "?next=#{next_url}" : ""
|
66
|
+
|
67
|
+
"http://#{auth_domain}#{port_part}#{path}#{next_part}"
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
module RestPack::Web::Rack
|
2
|
+
class Domain
|
3
|
+
def initialize(app)
|
4
|
+
@app = app
|
5
|
+
end
|
6
|
+
|
7
|
+
def call(env)
|
8
|
+
identifier = Rack::Request.new(env).host
|
9
|
+
|
10
|
+
response = Commands::Core::Domain::ByIdentifier.run({
|
11
|
+
identifier: identifier,
|
12
|
+
include: 'applications'
|
13
|
+
})
|
14
|
+
|
15
|
+
if response.status == :ok
|
16
|
+
domain = response.result[:domains][0]
|
17
|
+
application = response.result[:applications][0]
|
18
|
+
|
19
|
+
env['restpack'] ||= {}
|
20
|
+
env['restpack'][:domain] = domain
|
21
|
+
env['restpack'][:application] = application
|
22
|
+
env['restpack'][:application_id] = application[:id]
|
23
|
+
|
24
|
+
env['restpack.session.options'] ||= {}
|
25
|
+
env['restpack.session.options'][:key] = 'restpack.session'
|
26
|
+
env['restpack.session.options'][:secret] = domain[:session_secret]
|
27
|
+
env['restpack.session.options'][:domain] = domain[:identifier]
|
28
|
+
else
|
29
|
+
#TODO: GJ: better exceptions based on response status
|
30
|
+
raise "[#{identifier}] is not a RestPack domain"
|
31
|
+
end
|
32
|
+
|
33
|
+
@app.call(env)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
require 'restpack_user_service'
|
2
|
+
require 'restpack_account_service'
|
3
|
+
|
4
|
+
module RestPack::Web::Rack
|
5
|
+
class User
|
6
|
+
def initialize(app)
|
7
|
+
@app = app
|
8
|
+
end
|
9
|
+
|
10
|
+
def call(env)
|
11
|
+
session = env["restpack.session"]
|
12
|
+
user_id = session[:user_id]
|
13
|
+
account_id = session[:account_id]
|
14
|
+
|
15
|
+
if user_id && account_id
|
16
|
+
response = Commands::Users::User::Get.run({
|
17
|
+
id: user_id,
|
18
|
+
application_id: env['restpack'][:application_id]
|
19
|
+
})
|
20
|
+
|
21
|
+
raise "Error getting user" unless response.success?
|
22
|
+
env['restpack'][:user] = response.result[:users][0]
|
23
|
+
|
24
|
+
response = Commands::Accounts::Account::Get.run({
|
25
|
+
id: account_id,
|
26
|
+
application_id: env['restpack'][:application_id]
|
27
|
+
})
|
28
|
+
raise "Error getting account" unless response.success?
|
29
|
+
env['restpack'][:account] = response.result[:accounts][0]
|
30
|
+
end
|
31
|
+
|
32
|
+
@app.call(env)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module RestPack::Web::Sinatra
|
2
|
+
module App
|
3
|
+
def self.included(base)
|
4
|
+
base.use RestPack::Web::Rack::Domain
|
5
|
+
base.use RestPack::Web::Rack::Session
|
6
|
+
base.use RestPack::Web::Rack::User
|
7
|
+
|
8
|
+
base.before do
|
9
|
+
@restpack = RestPack::Web::Context.new(env)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
data/lib/restpack_web/version.rb
CHANGED
data/lib/restpack_web.rb
CHANGED
@@ -1,5 +1,11 @@
|
|
1
|
-
require
|
1
|
+
require 'restpack_web/version'
|
2
2
|
|
3
|
-
|
3
|
+
require 'restpack_web/configuration'
|
4
|
+
require 'restpack_web/context'
|
4
5
|
|
5
|
-
|
6
|
+
require 'restpack_web/rack/domain'
|
7
|
+
require 'restpack_web/rack/user'
|
8
|
+
require 'restpack_web/rack/session'
|
9
|
+
|
10
|
+
require 'restpack_web/rails/controller'
|
11
|
+
require 'restpack_web/sinatra/app'
|
data/restpack_web.gemspec
CHANGED
@@ -19,6 +19,10 @@ Gem::Specification.new do |spec|
|
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
21
|
spec.add_dependency "restpack_gem"
|
22
|
+
spec.add_dependency "restpack_core_service"
|
23
|
+
spec.add_dependency "restpack_user_service"
|
24
|
+
spec.add_dependency "restpack_account_service"
|
25
|
+
spec.add_dependency "restpack_group_service"
|
22
26
|
|
23
27
|
spec.add_development_dependency "bundler", "~> 1.3"
|
24
28
|
spec.add_development_dependency "rake"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: restpack_web
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Gavin Joyce
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-
|
11
|
+
date: 2013-11-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: restpack_gem
|
@@ -24,6 +24,62 @@ dependencies:
|
|
24
24
|
- - '>='
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: restpack_core_service
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - '>='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: restpack_user_service
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - '>='
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: restpack_account_service
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - '>='
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: restpack_group_service
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - '>='
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :runtime
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - '>='
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
27
83
|
- !ruby/object:Gem::Dependency
|
28
84
|
name: bundler
|
29
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -93,6 +149,13 @@ files:
|
|
93
149
|
- README.md
|
94
150
|
- Rakefile
|
95
151
|
- lib/restpack_web.rb
|
152
|
+
- lib/restpack_web/configuration.rb
|
153
|
+
- lib/restpack_web/context.rb
|
154
|
+
- lib/restpack_web/rack/domain.rb
|
155
|
+
- lib/restpack_web/rack/session.rb
|
156
|
+
- lib/restpack_web/rack/user.rb
|
157
|
+
- lib/restpack_web/rails/controller.rb
|
158
|
+
- lib/restpack_web/sinatra/app.rb
|
96
159
|
- lib/restpack_web/version.rb
|
97
160
|
- restpack_web.gemspec
|
98
161
|
homepage: http://restpack.org/
|