datapipeline 3.2.0: Benachrichtigungen mit Webhook, Slack und E-Mail
This commit is contained in:
@@ -5,7 +5,7 @@ require 'json'
|
||||
#
|
||||
# minimal http server for DataPipeline::RestStorage tests, one request per connection
|
||||
# server = TestHttpServer.new { |req| [200, { 'items' => [] }] }
|
||||
# req: { method:, path:, query:, headers:, body: } -> [status, hash/array or string]
|
||||
# req: { method:, path:, query:, headers:, body: } -> [status, hash/array or string, optional headers]
|
||||
#
|
||||
class TestHttpServer
|
||||
attr_reader :requests
|
||||
@@ -40,9 +40,10 @@ class TestHttpServer
|
||||
request = { method:, path:, query: URI.decode_www_form(query.to_s).to_h, headers:, body: }
|
||||
@requests << request
|
||||
|
||||
status, payload = @handler.call(request)
|
||||
status, payload, extra = @handler.call(request)
|
||||
text = payload.is_a?(String) ? payload : JSON.generate(payload)
|
||||
client.write "HTTP/1.1 #{status} X\r\nContent-Type: application/json\r\n" \
|
||||
extra = Hash(extra).map { |key, value| "#{key}: #{value}\r\n" }.join
|
||||
client.write "HTTP/1.1 #{status} X\r\nContent-Type: application/json\r\n#{extra}" \
|
||||
"Content-Length: #{text.bytesize}\r\nConnection: close\r\n\r\n#{text}"
|
||||
rescue StandardError => e
|
||||
warn "TestHttpServer: #{e.class}: #{e.message}"
|
||||
|
||||
Reference in New Issue
Block a user