shot_mvc 1.0.1 → 1.0.2
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/application/controllers/view_controller.rb +6 -4
- data/lib/shot_mvc/controller_delegate.rb +42 -0
- data/lib/shot_mvc/controller_not_found_exception.rb +14 -0
- data/lib/shot_mvc/mvc_application.rb +1 -0
- data/lib/shot_mvc/session_router.rb +68 -0
- data/lib/shot_mvc/template_loader.rb +9 -5
- data/lib/shot_mvc.rb +4 -0
- metadata +4 -1
@@ -10,7 +10,8 @@ require 'shot_mvc'
|
|
10
10
|
|
11
11
|
class ViewController < Controller
|
12
12
|
def create(view)
|
13
|
-
|
13
|
+
if @app.config['server']['Security']['VisualErrors']
|
14
|
+
contents = <<-eos
|
14
15
|
<br /><br />
|
15
16
|
<div class="container">
|
16
17
|
<div class="row">
|
@@ -21,10 +22,11 @@ class ViewController < Controller
|
|
21
22
|
</div>
|
22
23
|
</div>
|
23
24
|
</div>
|
24
|
-
|
25
|
+
eos
|
25
26
|
|
26
|
-
|
27
|
+
File.write "application/views/#{view}.erb", contents
|
27
28
|
|
28
|
-
|
29
|
+
get('controller', 'Home').index
|
30
|
+
end
|
29
31
|
end
|
30
32
|
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
# ControllerDelegate
|
2
|
+
#
|
3
|
+
# Allows you to perform various actions on controllers, including creating, deleting,
|
4
|
+
# and modifying them.
|
5
|
+
#
|
6
|
+
# Shot Framework - Copyright (c) Jesse Aaron Dunlap <me@jessedunlap.me>
|
7
|
+
# Licensed under the MIT License. For full licensing information, please
|
8
|
+
# see LICENSE.md. http://github.com/JesseDunlap/shot/
|
9
|
+
|
10
|
+
require 'erb'
|
11
|
+
|
12
|
+
require_relative './controller_not_found_exception'
|
13
|
+
|
14
|
+
class ControllerDelegate
|
15
|
+
def self.create_controller(controller_name, *actions)
|
16
|
+
template = <<eof
|
17
|
+
require 'shot_mvc'
|
18
|
+
|
19
|
+
class #{controller_name}Controller < Controller
|
20
|
+
def setup()
|
21
|
+
|
22
|
+
end
|
23
|
+
<% actions.each do |action| %>
|
24
|
+
def <%=action%>
|
25
|
+
|
26
|
+
end
|
27
|
+
<% end %>
|
28
|
+
end
|
29
|
+
eof
|
30
|
+
|
31
|
+
template = ERB.new template
|
32
|
+
File.write "application/controllers/#{controller_name.underscore}_controller.rb", template.result(binding)
|
33
|
+
end
|
34
|
+
|
35
|
+
def delete_controller(controller_name)
|
36
|
+
if File.exists? "application/controllers/#{controller_name.underscore}_controller.rb"
|
37
|
+
File.unlink "application/controllers/#{controller_name.underscore}_controller.rb"
|
38
|
+
else
|
39
|
+
raise ControllerNotFoundException.new "Could not find controller named #{controller_name}"
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
# What is this item?
|
2
|
+
#
|
3
|
+
# What does this item do?
|
4
|
+
#
|
5
|
+
# Shot Framework - Copyright (c) Jesse Aaron Dunlap <me@jessedunlap.me>
|
6
|
+
# Licensed under the MIT License. For full licensing information, please
|
7
|
+
# see LICENSE.md. http://github.com/JesseDunlap/shot/
|
8
|
+
|
9
|
+
|
10
|
+
class ControllerNotFoundException < Exception
|
11
|
+
def initialize(message)
|
12
|
+
super(message)
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,68 @@
|
|
1
|
+
# SessionRouter
|
2
|
+
#
|
3
|
+
# Allows the application to modify session data for the client.
|
4
|
+
#
|
5
|
+
# Shot Framework - Copyright (c) Jesse Aaron Dunlap <me@jessedunlap.me>
|
6
|
+
# Licensed under the MIT License. For full licensing information, please
|
7
|
+
# see LICENSE.md. http://github.com/JesseDunlap/shot/
|
8
|
+
|
9
|
+
require 'shot'
|
10
|
+
require 'json'
|
11
|
+
|
12
|
+
class ApplicationInstance
|
13
|
+
def session_get(key)
|
14
|
+
@config[:session] = (@config[:session] or {})
|
15
|
+
@config[:session][key]
|
16
|
+
end
|
17
|
+
|
18
|
+
def session_set(key, value)
|
19
|
+
@config[:session] = (@config[:session] or {})
|
20
|
+
@config[:session][key] = value
|
21
|
+
session_save
|
22
|
+
end
|
23
|
+
|
24
|
+
def session_save
|
25
|
+
File.write "application/sessions/#{@config[:session_key]}.json", @config[:session].to_json
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
class SessionRouter < Router
|
30
|
+
def initialize(client)
|
31
|
+
super(client)
|
32
|
+
|
33
|
+
client.on 'session_key' do |key|
|
34
|
+
create_session_folder unless Dir.exists? 'application/sessions'
|
35
|
+
create_session_file key unless File.exists? "application/sessions/#{key}.json"
|
36
|
+
|
37
|
+
client.config[:session_key] = key
|
38
|
+
client.config[:session] = JSON.parse File.read "application/sessions/#{key}.json"
|
39
|
+
|
40
|
+
client.emit 'session_ready'
|
41
|
+
end
|
42
|
+
|
43
|
+
client.on 'request_session_key' do
|
44
|
+
session_key = SecureRandom.uuid
|
45
|
+
client.emit 'assign_session_key', :key => session_key, :session_hash => client.config['server']['Security']['SessionHash']
|
46
|
+
|
47
|
+
create_session_folder unless Dir.exists? 'application/sessions'
|
48
|
+
create_session_file session_key unless File.exists? "application/sessions/#{session_key}.json"
|
49
|
+
|
50
|
+
client.config[:session_key] = session_key
|
51
|
+
client.config[:session] = JSON.parse File.read "application/sessions/#{session_key}.json"
|
52
|
+
|
53
|
+
client.emit 'session_ready'
|
54
|
+
end
|
55
|
+
|
56
|
+
client.emit 'provide_session_key', client.config['server']['Security']['SessionHash']
|
57
|
+
end
|
58
|
+
|
59
|
+
private
|
60
|
+
|
61
|
+
def create_session_folder
|
62
|
+
Dir.mkdir 'application/sessions'
|
63
|
+
end
|
64
|
+
|
65
|
+
def create_session_file(key)
|
66
|
+
File.write "application/sessions/#{key}.json", '{}'
|
67
|
+
end
|
68
|
+
end
|
@@ -28,12 +28,16 @@ class TemplateLoader < Loader
|
|
28
28
|
Template.new "./application/views/#{name}.erb"
|
29
29
|
end
|
30
30
|
else
|
31
|
-
|
31
|
+
if @client.config['server']['Security']['VisualErrors'] then
|
32
|
+
begin
|
33
|
+
raise TemplateLoadException.new "Could not load #{name}. Verify it exists at application/views/#{name}.erb"
|
34
|
+
rescue Exception => ex
|
35
|
+
template = Template.new "#{gem_root}/application/views/view_not_found.erb"
|
36
|
+
template.data = { :requested_view => name, :exception => ex }
|
37
|
+
return template
|
38
|
+
end
|
39
|
+
else
|
32
40
|
raise TemplateLoadException.new "Could not load #{name}. Verify it exists at application/views/#{name}.erb"
|
33
|
-
rescue Exception => ex
|
34
|
-
template = Template.new "#{gem_root}/application/views/view_not_found.erb"
|
35
|
-
template.data = { :requested_view => name, :exception => ex }
|
36
|
-
return template
|
37
41
|
end
|
38
42
|
end
|
39
43
|
end
|
data/lib/shot_mvc.rb
CHANGED
@@ -1,7 +1,9 @@
|
|
1
1
|
require_relative './shot_mvc/controller_loader'
|
2
2
|
require_relative './shot_mvc/controller_load_exception'
|
3
|
+
require_relative './shot_mvc/controller_not_found_exception'
|
3
4
|
require_relative './shot_mvc/controller_router'
|
4
5
|
require_relative './shot_mvc/controller'
|
6
|
+
require_relative './shot_mvc/controller_delegate'
|
5
7
|
|
6
8
|
require_relative './shot_mvc/element'
|
7
9
|
require_relative './shot_mvc/element_loader'
|
@@ -10,4 +12,6 @@ require_relative './shot_mvc/template_loader'
|
|
10
12
|
require_relative './shot_mvc/template'
|
11
13
|
require_relative './shot_mvc/template_load_exception'
|
12
14
|
|
15
|
+
require_relative './shot_mvc/session_router'
|
16
|
+
|
13
17
|
require_relative './shot_mvc/mvc_application'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: shot_mvc
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -52,12 +52,15 @@ extensions: []
|
|
52
52
|
extra_rdoc_files: []
|
53
53
|
files:
|
54
54
|
- lib/shot_mvc/controller.rb
|
55
|
+
- lib/shot_mvc/controller_delegate.rb
|
55
56
|
- lib/shot_mvc/controller_loader.rb
|
56
57
|
- lib/shot_mvc/controller_load_exception.rb
|
58
|
+
- lib/shot_mvc/controller_not_found_exception.rb
|
57
59
|
- lib/shot_mvc/controller_router.rb
|
58
60
|
- lib/shot_mvc/element.rb
|
59
61
|
- lib/shot_mvc/element_loader.rb
|
60
62
|
- lib/shot_mvc/mvc_application.rb
|
63
|
+
- lib/shot_mvc/session_router.rb
|
61
64
|
- lib/shot_mvc/template.rb
|
62
65
|
- lib/shot_mvc/template_loader.rb
|
63
66
|
- lib/shot_mvc/template_load_exception.rb
|