restless-sdk 0.1.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.
- checksums.yaml +7 -0
- data/CONFORMANCE.md +112 -0
- data/README.md +148 -0
- data/exe/restless-conformance +108 -0
- data/install.md +299 -0
- data/lib/restless/caches.rb +147 -0
- data/lib/restless/capture.rb +289 -0
- data/lib/restless/client.rb +111 -0
- data/lib/restless/conformance.rb +164 -0
- data/lib/restless/env.rb +82 -0
- data/lib/restless/fingerprint.rb +287 -0
- data/lib/restless/har.rb +113 -0
- data/lib/restless/injection.rb +99 -0
- data/lib/restless/mask.rb +57 -0
- data/lib/restless/rack.rb +374 -0
- data/lib/restless/redact.rb +342 -0
- data/lib/restless/request_id.rb +63 -0
- data/lib/restless/settings.rb +101 -0
- data/lib/restless/stack_frames.rb +146 -0
- data/lib/restless/text.rb +171 -0
- data/lib/restless/uploader.rb +319 -0
- data/lib/restless/version.rb +25 -0
- data/lib/restless.rb +57 -0
- data/spec/VECTORS_VERSION +1 -0
- data/spec/vectors/fingerprint.json +1119 -0
- data/spec/vectors/har.json +500 -0
- data/spec/vectors/mask.json +175 -0
- data/spec/vectors/recovery-slug.json +102 -0
- data/spec/vectors/redact.json +775 -0
- data/spec/vectors/request-id.json +120 -0
- metadata +82 -0
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$generated": "GENERATED FILE - do not edit by hand. Inputs live in spec/cases.ts; run `npm run spec:vectors` to regenerate.",
|
|
3
|
+
"$contract": "spec/CONTRACT.md",
|
|
4
|
+
"specVersion": "1.0.0",
|
|
5
|
+
"cases": [
|
|
6
|
+
{
|
|
7
|
+
"id": "reqid/format-with-prefix",
|
|
8
|
+
"requirement": "REQID-004",
|
|
9
|
+
"op": "formatRequestId",
|
|
10
|
+
"input": {
|
|
11
|
+
"rawId": "9f18a0e2-1c3d-4b5a-8e7f-0a1b2c3d4e5f",
|
|
12
|
+
"prefix": "TST"
|
|
13
|
+
},
|
|
14
|
+
"expected": "TST-9f18a0e2-1c3d-4b5a-8e7f-0a1b2c3d4e5f"
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"id": "reqid/format-without-prefix",
|
|
18
|
+
"requirement": "REQID-004",
|
|
19
|
+
"op": "formatRequestId",
|
|
20
|
+
"input": {
|
|
21
|
+
"rawId": "9f18a0e2-1c3d-4b5a-8e7f-0a1b2c3d4e5f"
|
|
22
|
+
},
|
|
23
|
+
"expected": "9f18a0e2-1c3d-4b5a-8e7f-0a1b2c3d4e5f"
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"id": "reqid/strip",
|
|
27
|
+
"requirement": "REQID-005",
|
|
28
|
+
"op": "stripRequestIdPrefix",
|
|
29
|
+
"input": {
|
|
30
|
+
"requestId": "TST-9f18a0e2-1c3d-4b5a-8e7f-0a1b2c3d4e5f"
|
|
31
|
+
},
|
|
32
|
+
"expected": "9f18a0e2-1c3d-4b5a-8e7f-0a1b2c3d4e5f"
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"id": "reqid/strip-noop",
|
|
36
|
+
"requirement": "REQID-005",
|
|
37
|
+
"op": "stripRequestIdPrefix",
|
|
38
|
+
"input": {
|
|
39
|
+
"requestId": "9f18a0e2-1c3d-4b5a-8e7f-0a1b2c3d4e5f"
|
|
40
|
+
},
|
|
41
|
+
"expected": "9f18a0e2-1c3d-4b5a-8e7f-0a1b2c3d4e5f"
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"id": "reqid/strip-rejects-non-uuid-tail",
|
|
45
|
+
"requirement": "REQID-005",
|
|
46
|
+
"op": "stripRequestIdPrefix",
|
|
47
|
+
"input": {
|
|
48
|
+
"requestId": "TST-not-a-uuid"
|
|
49
|
+
},
|
|
50
|
+
"expected": "TST-not-a-uuid",
|
|
51
|
+
"note": "Group 1 must itself be a valid UUID, otherwise the input is returned untouched."
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"id": "reqid/strip-rejects-long-prefix",
|
|
55
|
+
"requirement": "REQID-005",
|
|
56
|
+
"op": "stripRequestIdPrefix",
|
|
57
|
+
"input": {
|
|
58
|
+
"requestId": "TOOLONGP-9f18a0e2-1c3d-4b5a-8e7f-0a1b2c3d4e5f"
|
|
59
|
+
},
|
|
60
|
+
"expected": "TOOLONGP-9f18a0e2-1c3d-4b5a-8e7f-0a1b2c3d4e5f",
|
|
61
|
+
"note": "Prefixes are 1 to 7 alphanumerics."
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
"id": "reqid/headers-fresh",
|
|
65
|
+
"requirement": "REQID-010",
|
|
66
|
+
"op": "requestIdHeaders",
|
|
67
|
+
"input": {
|
|
68
|
+
"ourId": "9f18a0e2-1c3d-4b5a-8e7f-0a1b2c3d4e5f",
|
|
69
|
+
"incomingHeaders": {},
|
|
70
|
+
"hasApiKey": true
|
|
71
|
+
},
|
|
72
|
+
"expected": {
|
|
73
|
+
"x-request-id": "9f18a0e2-1c3d-4b5a-8e7f-0a1b2c3d4e5f"
|
|
74
|
+
}
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
"id": "reqid/headers-incoming-chain",
|
|
78
|
+
"requirement": "REQID-010",
|
|
79
|
+
"op": "requestIdHeaders",
|
|
80
|
+
"input": {
|
|
81
|
+
"ourId": "9f18a0e2-1c3d-4b5a-8e7f-0a1b2c3d4e5f",
|
|
82
|
+
"incomingHeaders": {
|
|
83
|
+
"x-request-id": "upstream-value"
|
|
84
|
+
},
|
|
85
|
+
"hasApiKey": true
|
|
86
|
+
},
|
|
87
|
+
"expected": {
|
|
88
|
+
"x-restless-id": "9f18a0e2-1c3d-4b5a-8e7f-0a1b2c3d4e5f"
|
|
89
|
+
},
|
|
90
|
+
"note": "An existing chain is never clobbered; we fall back to our own header name."
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
"id": "reqid/headers-with-prefix",
|
|
94
|
+
"requirement": "REQID-004",
|
|
95
|
+
"op": "requestIdHeaders",
|
|
96
|
+
"input": {
|
|
97
|
+
"ourId": "9f18a0e2-1c3d-4b5a-8e7f-0a1b2c3d4e5f",
|
|
98
|
+
"incomingHeaders": {},
|
|
99
|
+
"prefix": "TST",
|
|
100
|
+
"hasApiKey": true
|
|
101
|
+
},
|
|
102
|
+
"expected": {
|
|
103
|
+
"x-request-id": "TST-9f18a0e2-1c3d-4b5a-8e7f-0a1b2c3d4e5f"
|
|
104
|
+
}
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
"id": "reqid/headers-missing-key",
|
|
108
|
+
"requirement": "REQID-011",
|
|
109
|
+
"op": "requestIdHeaders",
|
|
110
|
+
"input": {
|
|
111
|
+
"ourId": "9f18a0e2-1c3d-4b5a-8e7f-0a1b2c3d4e5f",
|
|
112
|
+
"incomingHeaders": {},
|
|
113
|
+
"hasApiKey": false
|
|
114
|
+
},
|
|
115
|
+
"expected": {
|
|
116
|
+
"x-request-id": "missing-key"
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
]
|
|
120
|
+
}
|
metadata
ADDED
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: restless-sdk
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 0.1.0
|
|
5
|
+
platform: ruby
|
|
6
|
+
authors:
|
|
7
|
+
- Restless
|
|
8
|
+
autorequire:
|
|
9
|
+
bindir: bin
|
|
10
|
+
cert_chain: []
|
|
11
|
+
date: 2026-08-11 00:00:00.000000000 Z
|
|
12
|
+
dependencies: []
|
|
13
|
+
description: |
|
|
14
|
+
Rack middleware that captures API traffic, redacts secrets before anything
|
|
15
|
+
leaves the process, fingerprints error responses so they can be grouped and
|
|
16
|
+
recovered from, and uploads the result to Restless. Works with Rails,
|
|
17
|
+
Sinatra, Hanami, Grape, Roda and anything else that speaks Rack.
|
|
18
|
+
|
|
19
|
+
Implements version 1.0.0 of the Restless SDK Contract at
|
|
20
|
+
level L2.
|
|
21
|
+
email:
|
|
22
|
+
executables: []
|
|
23
|
+
extensions: []
|
|
24
|
+
extra_rdoc_files: []
|
|
25
|
+
files:
|
|
26
|
+
- CONFORMANCE.md
|
|
27
|
+
- README.md
|
|
28
|
+
- exe/restless-conformance
|
|
29
|
+
- install.md
|
|
30
|
+
- lib/restless.rb
|
|
31
|
+
- lib/restless/caches.rb
|
|
32
|
+
- lib/restless/capture.rb
|
|
33
|
+
- lib/restless/client.rb
|
|
34
|
+
- lib/restless/conformance.rb
|
|
35
|
+
- lib/restless/env.rb
|
|
36
|
+
- lib/restless/fingerprint.rb
|
|
37
|
+
- lib/restless/har.rb
|
|
38
|
+
- lib/restless/injection.rb
|
|
39
|
+
- lib/restless/mask.rb
|
|
40
|
+
- lib/restless/rack.rb
|
|
41
|
+
- lib/restless/redact.rb
|
|
42
|
+
- lib/restless/request_id.rb
|
|
43
|
+
- lib/restless/settings.rb
|
|
44
|
+
- lib/restless/stack_frames.rb
|
|
45
|
+
- lib/restless/text.rb
|
|
46
|
+
- lib/restless/uploader.rb
|
|
47
|
+
- lib/restless/version.rb
|
|
48
|
+
- spec/VECTORS_VERSION
|
|
49
|
+
- spec/vectors/fingerprint.json
|
|
50
|
+
- spec/vectors/har.json
|
|
51
|
+
- spec/vectors/mask.json
|
|
52
|
+
- spec/vectors/recovery-slug.json
|
|
53
|
+
- spec/vectors/redact.json
|
|
54
|
+
- spec/vectors/request-id.json
|
|
55
|
+
homepage: https://restless.ai
|
|
56
|
+
licenses:
|
|
57
|
+
- ISC
|
|
58
|
+
metadata:
|
|
59
|
+
source_code_uri: https://github.com/restlesshq/ruby
|
|
60
|
+
bug_tracker_uri: https://github.com/restlesshq/ruby/issues
|
|
61
|
+
restless_spec_version: 1.0.0
|
|
62
|
+
restless_conformance_level: L2
|
|
63
|
+
post_install_message:
|
|
64
|
+
rdoc_options: []
|
|
65
|
+
require_paths:
|
|
66
|
+
- lib
|
|
67
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
68
|
+
requirements:
|
|
69
|
+
- - ">="
|
|
70
|
+
- !ruby/object:Gem::Version
|
|
71
|
+
version: '2.6'
|
|
72
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
73
|
+
requirements:
|
|
74
|
+
- - ">="
|
|
75
|
+
- !ruby/object:Gem::Version
|
|
76
|
+
version: '0'
|
|
77
|
+
requirements: []
|
|
78
|
+
rubygems_version: 3.0.3.1
|
|
79
|
+
signing_key:
|
|
80
|
+
specification_version: 4
|
|
81
|
+
summary: Capture your API traffic and send it to Restless.
|
|
82
|
+
test_files: []
|