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.
@@ -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
 
@@ -43,7 +43,7 @@ module Gloo
43
43
  TEMP_REDIRECT = 307.freeze
44
44
  CODE_307 = 'Temporary Redirect'.freeze
45
45
 
46
- PERM_REDIRECT = 307.freeze
46
+ PERM_REDIRECT = 308.freeze
47
47
  CODE_308 = 'Permanent Redirect'.freeze
48
48
 
49
49
  BAD_REQUEST = 400.freeze
@@ -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
- return [ page, @id ] if page
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
@@ -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
- cookie_hash = Rack::Utils.parse_cookies( env )
45
-
46
- # Are we using sessions?
47
- if @server_obj.use_session?
48
- data = cookie_hash[ session_name ]
49
-
50
- if data
51
- data = decode_decrypt( data )
52
-
53
- data.each do |key, value|
54
- @server_obj.set_session_var( key, value )
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.5.0
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-10-18 00:00:00.000000000 Z
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.4.19
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.