vigiles 0.1.3 → 0.1.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +1 -1
- data/.ruby-version +1 -0
- data/lib/vigiles/archive/extras.rb +1 -1
- data/lib/vigiles/archive/metadata.rb +1 -1
- data/lib/vigiles/archive/response.rb +31 -5
- data/lib/vigiles/archive.rb +1 -1
- data/lib/vigiles/constants.rb +1 -1
- data/lib/vigiles/conversation_recorder.rb +3 -0
- data/lib/vigiles/conversation_recorders/application_json.rb +11 -6
- data/lib/vigiles/conversation_recorders/unknown.rb +3 -0
- data/lib/vigiles/middleware/record_conversation.rb +2 -2
- data/lib/vigiles/version.rb +1 -1
- data/sorbet/rbi/gems/concurrent-ruby@1.3.1.rbi +11627 -0
- data/sorbet/rbi/gems/{json@2.7.1.rbi → json@2.7.2.rbi} +73 -72
- data/sorbet/rbi/gems/{minitest@5.22.2.rbi → minitest@5.23.1.rbi} +841 -159
- data/sorbet/rbi/gems/{parser@3.3.0.5.rbi → parser@3.3.1.0.rbi} +233 -186
- data/sorbet/rbi/gems/{prism@0.24.0.rbi → prism@0.29.0.rbi} +19135 -12188
- data/sorbet/rbi/gems/{racc@1.7.3.rbi → racc@1.8.0.rbi} +34 -33
- data/sorbet/rbi/gems/{rake@13.1.0.rbi → rake@13.2.1.rbi} +77 -55
- data/sorbet/rbi/gems/{rbi@0.1.9.rbi → rbi@0.1.13.rbi} +226 -154
- data/sorbet/rbi/gems/{rdoc@6.6.3.1.rbi → rdoc@6.7.0.rbi} +333 -327
- data/sorbet/rbi/gems/{regexp_parser@2.9.0.rbi → regexp_parser@2.9.2.rbi} +3 -2
- data/sorbet/rbi/gems/{reline@0.5.7.rbi → reline@0.5.8.rbi} +1 -0
- data/sorbet/rbi/gems/{rexml@3.2.6.rbi → rexml@3.2.8.rbi} +121 -108
- data/sorbet/rbi/gems/{rubocop-ast@1.30.0.rbi → rubocop-ast@1.31.3.rbi} +92 -62
- data/sorbet/rbi/gems/{rubocop-minitest@0.34.5.rbi → rubocop-minitest@0.35.0.rbi} +35 -0
- data/sorbet/rbi/gems/{rubocop-sorbet@0.7.4.rbi → rubocop-sorbet@0.8.3.rbi} +327 -162
- data/sorbet/rbi/gems/{rubocop@1.60.2.rbi → rubocop@1.64.0.rbi} +1719 -1065
- data/sorbet/rbi/gems/{spoom@1.2.4.rbi → spoom@1.3.2.rbi} +1057 -413
- data/sorbet/rbi/gems/strscan@3.1.0.rbi +9 -0
- data/sorbet/rbi/gems/{tapioca@0.12.0.rbi → tapioca@0.14.2.rbi} +123 -448
- data/sorbet/rbi/gems/{thor@1.3.0.rbi → thor@1.3.1.rbi} +57 -50
- data/sorbet/rbi/gems/{yard@0.9.34.rbi → yard@0.9.36.rbi} +230 -37
- data/sorbet/rbi/gems/{zeitwerk@2.6.13.rbi → zeitwerk@2.6.15.rbi} +47 -36
- data/vigiles.gemspec +1 -1
- metadata +27 -27
- data/sorbet/rbi/gems/concurrent-ruby@1.2.3.rbi +0 -8
- data/sorbet/rbi/gems/prettier_print@1.2.1.rbi +0 -951
- data/sorbet/rbi/gems/syntax_tree@6.2.0.rbi +0 -23136
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: '08d13600f7b4174e33a7e521448bf0e4f0ef47558e71a7efb7ce981a116f70da'
|
4
|
+
data.tar.gz: cf7c0fa969ae7583ee17ce277446dd1767277b3bb36af16b2fec807c411ef3b8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1a5320beaccd2f32fd8d622e7561a2230f001a7f551561fb01f6eb94bfba092369af3690c0dd5728d5d1118072e9e42c41e50f39f1dace9aafab0af74c1cdc2c
|
7
|
+
data.tar.gz: 6cbab6e02ee4513c9b9755779fc935d230989e789a9610dc9a0bd10cd882afd31c7a4f328a7461c123d951df534025d2e8f67f4a769a61bf7a0891a0461de574
|
data/.rubocop.yml
CHANGED
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
3.3.1
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# typed:
|
1
|
+
# typed: strict
|
2
2
|
# frozen_string_literal: true
|
3
3
|
|
4
4
|
module Vigiles
|
@@ -10,6 +10,33 @@ module Vigiles
|
|
10
10
|
const :payload, Types::Payload
|
11
11
|
const :status, Integer
|
12
12
|
|
13
|
+
class ResponseBodyTooDeepError < StandardError
|
14
|
+
sig { returns(Integer) }
|
15
|
+
attr_reader :max_stack_depth
|
16
|
+
|
17
|
+
sig { returns(Integer) }
|
18
|
+
attr_reader :stack_depth
|
19
|
+
|
20
|
+
sig { params(stack_depth: Integer, max_stack_depth: Integer).void }
|
21
|
+
def initialize(stack_depth, max_stack_depth)
|
22
|
+
@max_stack_depth = max_stack_depth
|
23
|
+
@stack_depth = stack_depth
|
24
|
+
|
25
|
+
super
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
sig { params(body: Rack::BodyProxy, stack_depth: Integer).returns(String) }
|
30
|
+
private_class_method def self.extract_body_from_rack_body_proxy(body, stack_depth = 1)
|
31
|
+
raise ResponseBodyTooDeepError.new(stack_depth, 5) unless stack_depth < 5
|
32
|
+
|
33
|
+
case (inner_body = body.instance_variable_get(:@body))
|
34
|
+
when Rack::BodyProxy then extract_body_from_rack_body_proxy(inner_body, stack_depth + 1)
|
35
|
+
when Array then inner_body[0] || "null"
|
36
|
+
else raise
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
13
40
|
sig { params(rack_response: Rack::Response).returns(Types::Payload) }
|
14
41
|
private_class_method def self.extract_payload(rack_response)
|
15
42
|
case (body = rack_response.body)
|
@@ -18,12 +45,11 @@ module Vigiles
|
|
18
45
|
|
19
46
|
{ __false_body: :not_empty_handle_later }
|
20
47
|
when Rack::BodyProxy
|
21
|
-
|
22
|
-
body_proxy = body_proxy.instance_variable_get(:@body) until body_proxy.is_a?(Array)
|
48
|
+
extracted_body = extract_body_from_rack_body_proxy(body)
|
23
49
|
begin
|
24
|
-
JSON.parse(
|
50
|
+
JSON.parse(extracted_body)
|
25
51
|
rescue StandardError
|
26
|
-
{ __false_body:
|
52
|
+
{ __false_body: extracted_body }
|
27
53
|
end
|
28
54
|
else
|
29
55
|
{ __false_body: :unknown_response_payload_type }
|
data/lib/vigiles/archive.rb
CHANGED
data/lib/vigiles/constants.rb
CHANGED
@@ -20,6 +20,9 @@ module Vigiles
|
|
20
20
|
|
21
21
|
abstract!
|
22
22
|
|
23
|
+
sig { abstract.params(req: ActionDispatch::Request).void }
|
24
|
+
def ensure_content_type_matches!(req); end
|
25
|
+
|
23
26
|
sig { abstract.params(req: ActionDispatch::Request, res: Rack::Response).returns(Archive::Conversation) }
|
24
27
|
def record(req:, res:); end
|
25
28
|
end
|
@@ -14,14 +14,19 @@ module Vigiles
|
|
14
14
|
Request = Vigiles::Archive::Request
|
15
15
|
Extras = Vigiles::Archive::Extras
|
16
16
|
|
17
|
+
sig { override.params(req: ActionDispatch::Request).void }
|
18
|
+
private def ensure_content_type_matches!(req)
|
19
|
+
return if req.content_type == ContentType::ApplicationJson.serialize
|
20
|
+
|
21
|
+
raise ConversationRecorder::MisconfiguredRecorderError.new(
|
22
|
+
expected: ContentType::ApplicationJson.serialize,
|
23
|
+
actual: req.content_type
|
24
|
+
)
|
25
|
+
end
|
26
|
+
|
17
27
|
sig { override.params(req: ActionDispatch::Request, res: Rack::Response).returns(Archive::Conversation) }
|
18
28
|
def record(req:, res:)
|
19
|
-
|
20
|
-
raise ConversationRecorder::MisconfiguredRecorderError.new(
|
21
|
-
expected: ContentType::ApplicationJson.serialize,
|
22
|
-
actual: req.content_type
|
23
|
-
)
|
24
|
-
end
|
29
|
+
ensure_content_type_matches!(req)
|
25
30
|
|
26
31
|
response = Response.from(res)
|
27
32
|
request = Request.from(req)
|
@@ -6,6 +6,9 @@ module Vigiles
|
|
6
6
|
class Unknown < ConversationRecorder
|
7
7
|
include Singleton
|
8
8
|
|
9
|
+
sig { override.params(req: ActionDispatch::Request).void }
|
10
|
+
def ensure_content_type_matches!(req); end
|
11
|
+
|
9
12
|
sig { override.params(req: ActionDispatch::Request, res: Rack::Response).returns(Archive::Conversation) }
|
10
13
|
def record(req:, res:) = Archive::Conversation.new
|
11
14
|
end
|
@@ -13,7 +13,7 @@ module Vigiles
|
|
13
13
|
to: :options
|
14
14
|
|
15
15
|
sig { params(app: T.untyped, options: Vigiles::Options).void }
|
16
|
-
def initialize(app, options=Vigiles::Options.make_default_options)
|
16
|
+
def initialize(app, options = Vigiles::Options.make_default_options)
|
17
17
|
@app = app
|
18
18
|
@options = options
|
19
19
|
end
|
@@ -36,7 +36,7 @@ module Vigiles
|
|
36
36
|
"[vigiles] conversation recorder: " \
|
37
37
|
"conversation=#{convo.nil? ? "not_recorded" : convo.id} " \
|
38
38
|
"request=#{req.request_id}"
|
39
|
-
rescue => e
|
39
|
+
rescue StandardError => e
|
40
40
|
capture_exception.call(e)
|
41
41
|
logger.warn \
|
42
42
|
"[vigiles] conversation recorder error: " \
|
data/lib/vigiles/version.rb
CHANGED