syntropy 0.28.2 → 0.30.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 (42) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/test.yml +2 -2
  3. data/.ruby-version +1 -0
  4. data/CHANGELOG.md +11 -0
  5. data/README.md +0 -4
  6. data/bin/syntropy +2 -3
  7. data/cmd/setup/template/site/Dockerfile +1 -1
  8. data/lib/syntropy/app.rb +22 -14
  9. data/lib/syntropy/errors.rb +23 -10
  10. data/lib/syntropy/http/connection.rb +396 -0
  11. data/lib/syntropy/http/server.rb +174 -0
  12. data/lib/syntropy/http/status.rb +76 -0
  13. data/lib/syntropy/http.rb +5 -0
  14. data/lib/syntropy/json_api.rb +2 -5
  15. data/lib/syntropy/logger.rb +103 -0
  16. data/lib/syntropy/mime_types.rb +37 -0
  17. data/lib/syntropy/request/mock_adapter.rb +58 -0
  18. data/lib/syntropy/request/request_info.rb +236 -0
  19. data/lib/syntropy/request/response.rb +206 -0
  20. data/lib/syntropy/{request_extensions.rb → request/validation.rb} +4 -147
  21. data/lib/syntropy/request.rb +99 -0
  22. data/lib/syntropy/utils.rb +1 -1
  23. data/lib/syntropy/version.rb +1 -1
  24. data/lib/syntropy.rb +53 -5
  25. data/syntropy.gemspec +5 -7
  26. data/test/app/about/_error.rb +1 -1
  27. data/test/app/api+.rb +1 -1
  28. data/test/app_custom/_site.rb +1 -1
  29. data/test/bm_router_proc.rb +3 -3
  30. data/test/helper.rb +12 -7
  31. data/test/test_app.rb +30 -30
  32. data/test/test_caching.rb +2 -2
  33. data/test/test_connection.rb +649 -0
  34. data/test/test_errors.rb +6 -6
  35. data/test/test_json_api.rb +10 -8
  36. data/test/test_mock_adapter.rb +59 -0
  37. data/test/test_request_info.rb +90 -0
  38. data/test/test_response.rb +112 -0
  39. data/test/test_server.rb +336 -0
  40. metadata +34 -34
  41. data/lib/syntropy/file_watch.rb +0 -28
  42. data/test/test_file_watch.rb +0 -36
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: syntropy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.28.2
4
+ version: 0.30.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sharon Rosner
@@ -38,61 +38,47 @@ dependencies:
38
38
  - !ruby/object:Gem::Version
39
39
  version: 3.2.0
40
40
  - !ruby/object:Gem::Dependency
41
- name: qeweney
42
- requirement: !ruby/object:Gem::Requirement
43
- requirements:
44
- - - "~>"
45
- - !ruby/object:Gem::Version
46
- version: '0.24'
47
- type: :runtime
48
- prerelease: false
49
- version_requirements: !ruby/object:Gem::Requirement
50
- requirements:
51
- - - "~>"
52
- - !ruby/object:Gem::Version
53
- version: '0.24'
54
- - !ruby/object:Gem::Dependency
55
- name: tp2
41
+ name: uringmachine
56
42
  requirement: !ruby/object:Gem::Requirement
57
43
  requirements:
58
44
  - - "~>"
59
45
  - !ruby/object:Gem::Version
60
- version: 0.20.2
46
+ version: 1.0.0
61
47
  type: :runtime
62
48
  prerelease: false
63
49
  version_requirements: !ruby/object:Gem::Requirement
64
50
  requirements:
65
51
  - - "~>"
66
52
  - !ruby/object:Gem::Version
67
- version: 0.20.2
53
+ version: 1.0.0
68
54
  - !ruby/object:Gem::Dependency
69
- name: uringmachine
55
+ name: cgi
70
56
  requirement: !ruby/object:Gem::Requirement
71
57
  requirements:
72
- - - "~>"
58
+ - - ">="
73
59
  - !ruby/object:Gem::Version
74
- version: 0.24.0
60
+ version: '0'
75
61
  type: :runtime
76
62
  prerelease: false
77
63
  version_requirements: !ruby/object:Gem::Requirement
78
64
  requirements:
79
- - - "~>"
65
+ - - ">="
80
66
  - !ruby/object:Gem::Version
81
- version: 0.24.0
67
+ version: '0'
82
68
  - !ruby/object:Gem::Dependency
83
- name: listen
69
+ name: escape_utils
84
70
  requirement: !ruby/object:Gem::Requirement
85
71
  requirements:
86
- - - "~>"
72
+ - - '='
87
73
  - !ruby/object:Gem::Version
88
- version: 3.9.0
74
+ version: 1.3.0
89
75
  type: :runtime
90
76
  prerelease: false
91
77
  version_requirements: !ruby/object:Gem::Requirement
92
78
  requirements:
93
- - - "~>"
79
+ - - '='
94
80
  - !ruby/object:Gem::Version
95
- version: 3.9.0
81
+ version: 1.3.0
96
82
  - !ruby/object:Gem::Dependency
97
83
  name: json
98
84
  requirement: !ruby/object:Gem::Requirement
@@ -159,6 +145,7 @@ files:
159
145
  - ".github/workflows/test.yml"
160
146
  - ".gitignore"
161
147
  - ".rubocop.yml"
148
+ - ".ruby-version"
162
149
  - CHANGELOG.md
163
150
  - Gemfile
164
151
  - LICENSE
@@ -212,12 +199,21 @@ files:
212
199
  - lib/syntropy/connection_pool.rb
213
200
  - lib/syntropy/dev_mode.rb
214
201
  - lib/syntropy/errors.rb
215
- - lib/syntropy/file_watch.rb
202
+ - lib/syntropy/http.rb
203
+ - lib/syntropy/http/connection.rb
204
+ - lib/syntropy/http/server.rb
205
+ - lib/syntropy/http/status.rb
216
206
  - lib/syntropy/json_api.rb
207
+ - lib/syntropy/logger.rb
217
208
  - lib/syntropy/markdown.rb
209
+ - lib/syntropy/mime_types.rb
218
210
  - lib/syntropy/module.rb
219
211
  - lib/syntropy/papercraft_extensions.rb
220
- - lib/syntropy/request_extensions.rb
212
+ - lib/syntropy/request.rb
213
+ - lib/syntropy/request/mock_adapter.rb
214
+ - lib/syntropy/request/request_info.rb
215
+ - lib/syntropy/request/response.rb
216
+ - lib/syntropy/request/validation.rb
221
217
  - lib/syntropy/routing_tree.rb
222
218
  - lib/syntropy/side_run.rb
223
219
  - lib/syntropy/utils.rb
@@ -259,13 +255,17 @@ files:
259
255
  - test/run.rb
260
256
  - test/test_app.rb
261
257
  - test/test_caching.rb
258
+ - test/test_connection.rb
262
259
  - test/test_connection_pool.rb
263
260
  - test/test_errors.rb
264
- - test/test_file_watch.rb
265
261
  - test/test_json_api.rb
262
+ - test/test_mock_adapter.rb
266
263
  - test/test_module.rb
267
264
  - test/test_request_extensions.rb
265
+ - test/test_request_info.rb
266
+ - test/test_response.rb
268
267
  - test/test_routing_tree.rb
268
+ - test/test_server.rb
269
269
  - test/test_side_run.rb
270
270
  homepage: https://github.com/digital-fabric/syntropy
271
271
  licenses:
@@ -273,10 +273,10 @@ licenses:
273
273
  metadata:
274
274
  homepage_uri: https://github.com/digital-fabric/syntropy
275
275
  documentation_uri: https://www.rubydoc.info/gems/syntropy
276
- changelog_uri: https://github.com/digital-fabric/syntropy/blob/master/CHANGELOG.md
276
+ changelog_uri: https://github.com/digital-fabric/syntropy/blob/main/CHANGELOG.md
277
277
  rdoc_options:
278
278
  - "--title"
279
- - Extralite
279
+ - Syntropy
280
280
  - "--main"
281
281
  - README.md
282
282
  require_paths:
@@ -292,7 +292,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
292
292
  - !ruby/object:Gem::Version
293
293
  version: '0'
294
294
  requirements: []
295
- rubygems_version: 4.0.3
295
+ rubygems_version: 4.0.6
296
296
  specification_version: 4
297
297
  summary: Syntropic Web Framework
298
298
  test_files: []
@@ -1,28 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Syntropy
4
- def self.file_watch(machine, *roots, period: 0.1, &block)
5
- raise 'Missing root paths' if roots.empty?
6
-
7
- require 'listen'
8
-
9
- queue = Thread::Queue.new
10
- listener = Listen.to(*roots) do |modified, added, removed|
11
- modified.each { queue.push([:modified, it]) }
12
- added.each { queue.push([:added, it]) }
13
- removed.each { queue.push([:removed, it]) }
14
- end
15
- listener.start
16
-
17
- loop do
18
- machine.sleep(period) while queue.empty?
19
- event, fn = queue.shift
20
- block.call(event, fn)
21
- end
22
- rescue StandardError => e
23
- p e
24
- p e.backtrace
25
- ensure
26
- listener.stop
27
- end
28
- end
@@ -1,36 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'fileutils'
4
- require_relative 'helper'
5
-
6
- class FileWatchTest < Minitest::Test
7
- def setup
8
- @machine = UM.new
9
- @root = "/tmp/syntropy/#{rand(1000000).to_s(16)}"
10
- FileUtils.mkdir_p(@root)
11
- end
12
-
13
- def test_file_watch
14
- queue = UM::Queue.new
15
-
16
- f = @machine.spin do
17
- Syntropy.file_watch(@machine, @root, period: 0.01) { |event, fn| @machine.push(queue, [event, fn]) }
18
- end
19
- @machine.sleep(0.05)
20
- assert_equal 0, queue.count
21
-
22
- fn = File.join(@root, 'foo.bar')
23
- IO.write(fn, 'abc')
24
- assert_equal [:added, fn], @machine.shift(queue)
25
-
26
- fn = File.join(@root, 'foo.bar')
27
- IO.write(fn, 'def')
28
- assert_equal [:modified, fn], @machine.shift(queue)
29
-
30
- FileUtils.rm(fn)
31
- assert_equal [:removed, fn], @machine.shift(queue)
32
- ensure
33
- @machine.schedule(f, UM::Terminate)
34
- # @machine.join(f)
35
- end
36
- end