gloo 3.4.1 → 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.
Files changed (52) hide show
  1. checksums.yaml +4 -4
  2. data/.ruby-version +1 -1
  3. data/lib/VERSION +1 -1
  4. data/lib/VERSION_NOTES +15 -0
  5. data/lib/gloo/app/args.rb +2 -2
  6. data/lib/gloo/app/engine.rb +21 -2
  7. data/lib/gloo/app/info.rb +0 -2
  8. data/lib/gloo/convert/converter.rb +1 -2
  9. data/lib/gloo/convert/string_to_integer.rb +2 -0
  10. data/lib/gloo/core/dictionary.rb +1 -1
  11. data/lib/gloo/core/event_manager.rb +19 -0
  12. data/lib/gloo/core/factory.rb +2 -2
  13. data/lib/gloo/core/gloo_system.rb +1 -1
  14. data/lib/gloo/core/here.rb +1 -1
  15. data/lib/gloo/core/obj.rb +61 -5
  16. data/lib/gloo/core/parser.rb +1 -1
  17. data/lib/gloo/core/pn.rb +1 -1
  18. data/lib/gloo/exec/dispatch.rb +19 -0
  19. data/lib/gloo/exec/runner.rb +1 -1
  20. data/lib/gloo/objs/basic/integer.rb +10 -1
  21. data/lib/gloo/objs/ctrl/each.rb +17 -184
  22. data/lib/gloo/objs/ctrl/each_child.rb +68 -0
  23. data/lib/gloo/objs/ctrl/each_file.rb +83 -0
  24. data/lib/gloo/objs/ctrl/each_line.rb +67 -0
  25. data/lib/gloo/objs/ctrl/each_repo.rb +84 -0
  26. data/lib/gloo/objs/ctrl/each_word.rb +67 -0
  27. data/lib/gloo/objs/data/mysql.rb +2 -2
  28. data/lib/gloo/objs/data/pg.rb +1 -1
  29. data/lib/gloo/objs/data/query.rb +54 -5
  30. data/lib/gloo/objs/data/query_result.rb +6 -1
  31. data/lib/gloo/objs/data/sqlite.rb +1 -1
  32. data/lib/gloo/objs/data/table.rb +2 -2
  33. data/lib/gloo/objs/ror/eval.rb +1 -1
  34. data/lib/gloo/objs/security/password.rb +5 -8
  35. data/lib/gloo/objs/system/file_handle.rb +39 -5
  36. data/lib/gloo/objs/web_svr/element.rb +2 -2
  37. data/lib/gloo/objs/web_svr/page.rb +16 -6
  38. data/lib/gloo/objs/web_svr/svr.rb +29 -13
  39. data/lib/gloo/persist/file_loader.rb +2 -2
  40. data/lib/gloo/persist/file_storage.rb +1 -1
  41. data/lib/gloo/persist/line_splitter.rb +1 -0
  42. data/lib/gloo/verbs/check.rb +54 -0
  43. data/lib/gloo/verbs/redirect.rb +34 -2
  44. data/lib/gloo/verbs/tell.rb +11 -36
  45. data/lib/gloo/web_svr/handler.rb +32 -5
  46. data/lib/gloo/web_svr/request.rb +11 -40
  47. data/lib/gloo/web_svr/request_params.rb +104 -0
  48. data/lib/gloo/web_svr/response.rb +25 -0
  49. data/lib/gloo/web_svr/response_code.rb +1 -1
  50. data/lib/gloo/web_svr/routing/router.rb +10 -2
  51. data/lib/gloo/web_svr/session.rb +18 -12
  52. metadata +10 -3
@@ -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.4.1
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-09-23 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
@@ -483,6 +488,7 @@ files:
483
488
  - lib/gloo/verbs/alert.rb
484
489
  - lib/gloo/verbs/beep.rb
485
490
  - lib/gloo/verbs/break.rb
491
+ - lib/gloo/verbs/check.rb
486
492
  - lib/gloo/verbs/cls.rb
487
493
  - lib/gloo/verbs/context.rb
488
494
  - lib/gloo/verbs/create.rb
@@ -512,6 +518,7 @@ files:
512
518
  - lib/gloo/web_svr/embedded_renderer.rb
513
519
  - lib/gloo/web_svr/handler.rb
514
520
  - lib/gloo/web_svr/request.rb
521
+ - lib/gloo/web_svr/request_params.rb
515
522
  - lib/gloo/web_svr/response.rb
516
523
  - lib/gloo/web_svr/response_code.rb
517
524
  - lib/gloo/web_svr/routing/resource_router.rb
@@ -541,7 +548,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
541
548
  - !ruby/object:Gem::Version
542
549
  version: '0'
543
550
  requirements: []
544
- rubygems_version: 3.4.19
551
+ rubygems_version: 3.5.16
545
552
  signing_key:
546
553
  specification_version: 4
547
554
  summary: Gloo scripting language. A scripting language built on ruby.