gloo 3.4.1 → 3.6.0

Sign up to get free protection for your applications and to get access to all the features.
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.