gloo 3.5.0 → 3.6.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/.ruby-version +1 -1
- data/lib/VERSION +1 -1
- data/lib/VERSION_NOTES +7 -0
- data/lib/gloo/app/info.rb +0 -2
- data/lib/gloo/convert/string_to_integer.rb +2 -0
- data/lib/gloo/core/here.rb +1 -1
- data/lib/gloo/core/obj.rb +14 -0
- data/lib/gloo/exec/dispatch.rb +2 -0
- data/lib/gloo/objs/basic/integer.rb +10 -1
- data/lib/gloo/objs/ctrl/each.rb +17 -184
- data/lib/gloo/objs/ctrl/each_child.rb +68 -0
- data/lib/gloo/objs/ctrl/each_file.rb +83 -0
- data/lib/gloo/objs/ctrl/each_line.rb +67 -0
- data/lib/gloo/objs/ctrl/each_repo.rb +84 -0
- data/lib/gloo/objs/ctrl/each_word.rb +67 -0
- data/lib/gloo/objs/data/query.rb +52 -3
- data/lib/gloo/objs/system/file_handle.rb +39 -5
- data/lib/gloo/objs/web_svr/element.rb +1 -1
- data/lib/gloo/objs/web_svr/page.rb +15 -5
- data/lib/gloo/objs/web_svr/svr.rb +24 -13
- data/lib/gloo/persist/file_loader.rb +1 -1
- data/lib/gloo/persist/line_splitter.rb +1 -0
- data/lib/gloo/verbs/redirect.rb +33 -2
- data/lib/gloo/web_svr/handler.rb +29 -4
- data/lib/gloo/web_svr/request.rb +9 -38
- data/lib/gloo/web_svr/request_params.rb +104 -0
- data/lib/gloo/web_svr/response.rb +25 -0
- data/lib/gloo/web_svr/response_code.rb +1 -1
- data/lib/gloo/web_svr/routing/router.rb +10 -2
- data/lib/gloo/web_svr/session.rb +18 -12
- metadata +9 -3
@@ -18,6 +18,7 @@ module Gloo
|
|
18
18
|
HTML_TYPE = 'text/html'.freeze
|
19
19
|
|
20
20
|
attr_reader :code, :type, :data
|
21
|
+
attr_accessor :location
|
21
22
|
|
22
23
|
|
23
24
|
# ---------------------------------------------------------------------
|
@@ -37,6 +38,7 @@ module Gloo
|
|
37
38
|
@code = code
|
38
39
|
@type = type
|
39
40
|
@data = data
|
41
|
+
@location = nil
|
40
42
|
end
|
41
43
|
|
42
44
|
|
@@ -71,6 +73,25 @@ module Gloo
|
|
71
73
|
return Gloo::WebSvr::Response.new( engine, code, HTML_TYPE, data )
|
72
74
|
end
|
73
75
|
|
76
|
+
#
|
77
|
+
# Helper to create a redirect response.
|
78
|
+
#
|
79
|
+
def self.redirect_response( engine, target )
|
80
|
+
code = Gloo::WebSvr::ResponseCode::FOUND
|
81
|
+
data = <<~TEXT
|
82
|
+
<head>
|
83
|
+
<html>
|
84
|
+
<body><a href="#{target}">target is here</a></body>
|
85
|
+
</html>
|
86
|
+
</head>
|
87
|
+
TEXT
|
88
|
+
|
89
|
+
response = Gloo::WebSvr::Response.new( engine, code, HTML_TYPE, data )
|
90
|
+
response.location = target
|
91
|
+
|
92
|
+
return response
|
93
|
+
end
|
94
|
+
|
74
95
|
|
75
96
|
# ---------------------------------------------------------------------
|
76
97
|
# Data Functions
|
@@ -97,6 +118,10 @@ module Gloo
|
|
97
118
|
|
98
119
|
headers = { CONTENT_TYPE => @type }
|
99
120
|
|
121
|
+
if @location
|
122
|
+
headers[ 'Location' ] = @location
|
123
|
+
end
|
124
|
+
|
100
125
|
session = @engine&.running_app&.obj&.session
|
101
126
|
headers = session.add_session_for_response( headers ) if session
|
102
127
|
|
@@ -41,6 +41,8 @@ module Gloo
|
|
41
41
|
def page_for_route( path, method )
|
42
42
|
@log.info "routing to #{path} for method #{method}"
|
43
43
|
@method = method
|
44
|
+
route_params = nil
|
45
|
+
@id = nil
|
44
46
|
|
45
47
|
detect_segments path
|
46
48
|
|
@@ -53,7 +55,7 @@ module Gloo
|
|
53
55
|
if Gloo::WebSvr::Routing::ResourceRouter.is_implicit_create?( method, @route_segments.last )
|
54
56
|
@route_segments << Gloo::WebSvr::Routing::ResourceRouter::POST_ROUTE
|
55
57
|
page = find_route_segment( pages.children )
|
56
|
-
return [ page, @id ] if page
|
58
|
+
return [ page, @id, route_params ] if page
|
57
59
|
|
58
60
|
# We didn't find the page, so remove the last segment and try again
|
59
61
|
# posting to the resource.
|
@@ -61,7 +63,13 @@ module Gloo
|
|
61
63
|
end
|
62
64
|
|
63
65
|
page = find_route_segment( pages.children )
|
64
|
-
|
66
|
+
|
67
|
+
# Are there any remaining segments to be added as route parameters?
|
68
|
+
if @route_segments.count > 0
|
69
|
+
route_params = @route_segments
|
70
|
+
end
|
71
|
+
|
72
|
+
return [ page, @id, route_params ] if page
|
65
73
|
end
|
66
74
|
|
67
75
|
return nil
|
data/lib/gloo/web_svr/session.rb
CHANGED
@@ -41,21 +41,25 @@ module Gloo
|
|
41
41
|
# Add it to the session container.
|
42
42
|
#
|
43
43
|
def set_session_data_for_request( env )
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
44
|
+
begin
|
45
|
+
cookie_hash = Rack::Utils.parse_cookies( env )
|
46
|
+
|
47
|
+
# Are we using sessions?
|
48
|
+
if @server_obj.use_session?
|
49
|
+
data = cookie_hash[ session_name ]
|
50
|
+
|
51
|
+
if data
|
52
|
+
data = decode_decrypt( data )
|
53
|
+
return unless data
|
54
|
+
|
55
|
+
data.each do |key, value|
|
56
|
+
@server_obj.set_session_var( key, value )
|
57
|
+
end
|
55
58
|
end
|
56
59
|
end
|
60
|
+
rescue => e
|
61
|
+
@engine.log_exception e
|
57
62
|
end
|
58
|
-
|
59
63
|
end
|
60
64
|
|
61
65
|
|
@@ -110,6 +114,8 @@ module Gloo
|
|
110
114
|
# Decode and decrypt the session data.
|
111
115
|
#
|
112
116
|
def decode_decrypt( data )
|
117
|
+
return nil unless data && key && iv
|
118
|
+
|
113
119
|
data = Gloo::Objs::Cipher.decrypt( data, key, iv )
|
114
120
|
return JSON.parse( data )
|
115
121
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gloo
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Eric Crane
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-11-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -439,6 +439,11 @@ files:
|
|
439
439
|
- lib/gloo/objs/cli/prompt.rb
|
440
440
|
- lib/gloo/objs/cli/select.rb
|
441
441
|
- lib/gloo/objs/ctrl/each.rb
|
442
|
+
- lib/gloo/objs/ctrl/each_child.rb
|
443
|
+
- lib/gloo/objs/ctrl/each_file.rb
|
444
|
+
- lib/gloo/objs/ctrl/each_line.rb
|
445
|
+
- lib/gloo/objs/ctrl/each_repo.rb
|
446
|
+
- lib/gloo/objs/ctrl/each_word.rb
|
442
447
|
- lib/gloo/objs/ctrl/function.rb
|
443
448
|
- lib/gloo/objs/ctrl/repeat.rb
|
444
449
|
- lib/gloo/objs/data/markdown.rb
|
@@ -513,6 +518,7 @@ files:
|
|
513
518
|
- lib/gloo/web_svr/embedded_renderer.rb
|
514
519
|
- lib/gloo/web_svr/handler.rb
|
515
520
|
- lib/gloo/web_svr/request.rb
|
521
|
+
- lib/gloo/web_svr/request_params.rb
|
516
522
|
- lib/gloo/web_svr/response.rb
|
517
523
|
- lib/gloo/web_svr/response_code.rb
|
518
524
|
- lib/gloo/web_svr/routing/resource_router.rb
|
@@ -542,7 +548,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
542
548
|
- !ruby/object:Gem::Version
|
543
549
|
version: '0'
|
544
550
|
requirements: []
|
545
|
-
rubygems_version: 3.
|
551
|
+
rubygems_version: 3.5.16
|
546
552
|
signing_key:
|
547
553
|
specification_version: 4
|
548
554
|
summary: Gloo scripting language. A scripting language built on ruby.
|