tp2 0.12.3.1 → 0.13

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d6e848dd7ab2f886c616d6e810cd49c2455fd2a07fd713a4520a0b36e47a6f75
4
- data.tar.gz: da07a4c51e6e1daa876ec2fe5f4f2b38fe38c0aa97e4232f00f9746742743808
3
+ metadata.gz: 1a439c912a6726db661e6911ce5cc5cb89a10df9052f2be041edf5f98bbb48d1
4
+ data.tar.gz: 23e305d5e630d336c755148d81c806450b17b1e01465e701d3cbb92b4fac8e80
5
5
  SHA512:
6
- metadata.gz: c46797d8149f470b284e0b8a917e0098f35099dd2d4540d115162cbaaeca3fb9e6926115d3e0798e6fe330a37f901b6ac465bab5953b58b689ed5c91c10cb0e7
7
- data.tar.gz: b4512a4662394b7af833e272ed1d9c63bc1ddb1dd44a1c2f354a4d381935fbce8423f9e9558f663113fdb667687bff1acf90dfb58404e06ae1129b9a10ff642b
6
+ metadata.gz: 440aec3cb21f79785fee1a45e3d03ba2612bd1a7567b9e7c597c7a6a933f63ea60b200877ecc1296013d27236b1652139b64182aecd34f091e495affa17db16a
7
+ data.tar.gz: 688319dc5c58364f778129746f934cabb2b444e0594f8d0e33d97ca8a20b658419ccc52fb9410fd3c4dc11fbb8d1d595417b421c01fce5a0e631c72f35fd1737
data/CHANGELOG.md CHANGED
@@ -1,3 +1,8 @@
1
+ # Version 0.13 2025-06-25
2
+
3
+ - Show response status in log line
4
+ - Fix behaviour in case of an unhandled exception in app
5
+
1
6
  # Version 0.12.3 2025-06-25
2
7
 
3
8
  - Fix logging of simple strings
data/examples/app.rb CHANGED
@@ -5,6 +5,7 @@ require 'tp2'
5
5
  require 'json'
6
6
 
7
7
  TP2.config do |req|
8
+ raise 'foo'
8
9
  body = req.headers.to_json
9
10
  req.respond(body, 'Content-Type' => 'application/json')
10
11
  end
@@ -11,6 +11,7 @@ module TP2
11
11
  @machine = machine
12
12
  @fd = fd
13
13
  @opts = opts
14
+ @logger = opts[:logger]
14
15
  @stream = UM::Stream.new(machine, fd)
15
16
  @app = app
16
17
 
@@ -29,7 +30,7 @@ module TP2
29
30
  rescue UM::Terminate, SystemCallError
30
31
  # we're done, we don't care about broken socket
31
32
  rescue StandardError => e
32
- @opts[:logger]&.call(e, nil)
33
+ @logger&.call(e)
33
34
  ensure
34
35
  @machine.close_async(@fd)
35
36
  end
@@ -45,6 +46,13 @@ module TP2
45
46
  rescue ProtocolError
46
47
  # TODO: add hook for testing protocol errors
47
48
  false
49
+ rescue StandardError => e
50
+ msg = "Internal error while serving request: #{e.message} (#{e.backtrace.inspect})"
51
+ @logger&.call(msg)
52
+ if request && !@done
53
+ respond(request, 'Internal server error', ':status' => Qeweney::Status::INTERNAL_SERVER_ERROR)
54
+ end
55
+ false
48
56
  end
49
57
 
50
58
  def get_body(req)
@@ -104,7 +112,7 @@ module TP2
104
112
  else
105
113
  @machine.send(@fd, formatted_headers, formatted_headers.bytesize, SEND_FLAGS)
106
114
  end
107
- @opts[:logger]&.call(request, headers)
115
+ @logger&.call(request, headers)
108
116
  @done = true
109
117
  @response_headers = headers
110
118
  end
@@ -143,7 +151,7 @@ module TP2
143
151
  @machine.send(@fd, data, data.bytesize, SEND_FLAGS)
144
152
  return if @done || !done
145
153
 
146
- @opts[:logger]&.call(request, @response_headers)
154
+ @logger&.call(request, @response_headers)
147
155
  @done = true
148
156
  end
149
157
 
@@ -155,7 +163,7 @@ module TP2
155
163
  @machine.send(@fd, EMPTY_CHUNK, EMPTY_CHUNK_LEN, SEND_FLAGS)
156
164
  return if @done
157
165
 
158
- @opts[:logger]&.call(request, @response_headers)
166
+ @logger&.call(request, @response_headers)
159
167
  @done = true
160
168
  end
161
169
 
data/lib/tp2/logger.rb CHANGED
@@ -17,16 +17,22 @@ module TP2
17
17
  @machine.write_async(@fd, str)
18
18
  end
19
19
 
20
- def call(o, _response_headers = nil)
21
- log(format_log_line(o))
20
+ # @param o <Qeweney::Request> request
21
+ # @param h <Hash, nil> response headers
22
+ def call(o, h = nil)
23
+ log(format_log_line(o, h))
24
+ rescue => e
25
+ p e: e
26
+ p e.backtrace
27
+ exit!
22
28
  end
23
29
 
24
- def format_log_line(o)
30
+ def format_log_line(o, h)
25
31
  case o
26
32
  when Exception
27
33
  format_error_log_line(o)
28
34
  when Qeweney::Request
29
- format_request_log_line(o)
35
+ format_request_log_line(o, h)
30
36
  when String
31
37
  o
32
38
  else
@@ -38,16 +44,16 @@ module TP2
38
44
  "Error: #{err.inspect}: #{err.backtrace.inspect}"
39
45
  end
40
46
 
41
- def format_request_log_line(request)
47
+ def format_request_log_line(request, response_headers)
42
48
  request_headers = request.headers
43
49
  uri = full_uri(request_headers)
44
-
50
+ status = response_headers[':status'] || '200'
45
51
  format(
46
52
  '%<client_ip>s %<method>s %<uri>s %<status>s %<tx>d',
47
53
  client_ip: request.forwarded_for || '?',
48
54
  method: request_headers[':method'].upcase,
49
55
  uri: uri,
50
- status: @status,
56
+ status: status,
51
57
  tx: request_headers[':tx']
52
58
  )
53
59
  end
data/lib/tp2/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module TP2
2
- VERSION = '0.12.3.1'
2
+ VERSION = '0.13'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tp2
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.12.3.1
4
+ version: '0.13'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sharon Rosner