safetykit 0.5.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/.ignore +2 -0
- data/CHANGELOG.md +47 -0
- data/README.md +208 -0
- data/SECURITY.md +27 -0
- data/lib/safety_kit/client.rb +111 -0
- data/lib/safety_kit/errors.rb +228 -0
- data/lib/safety_kit/file_part.rb +58 -0
- data/lib/safety_kit/internal/transport/base_client.rb +575 -0
- data/lib/safety_kit/internal/transport/pooled_net_requester.rb +210 -0
- data/lib/safety_kit/internal/type/array_of.rb +168 -0
- data/lib/safety_kit/internal/type/base_model.rb +529 -0
- data/lib/safety_kit/internal/type/base_page.rb +55 -0
- data/lib/safety_kit/internal/type/boolean.rb +77 -0
- data/lib/safety_kit/internal/type/converter.rb +327 -0
- data/lib/safety_kit/internal/type/enum.rb +131 -0
- data/lib/safety_kit/internal/type/file_input.rb +111 -0
- data/lib/safety_kit/internal/type/hash_of.rb +188 -0
- data/lib/safety_kit/internal/type/request_parameters.rb +42 -0
- data/lib/safety_kit/internal/type/union.rb +237 -0
- data/lib/safety_kit/internal/type/unknown.rb +81 -0
- data/lib/safety_kit/internal/util.rb +966 -0
- data/lib/safety_kit/internal.rb +20 -0
- data/lib/safety_kit/models/agent_decision_create_agent_decision_params.rb +68 -0
- data/lib/safety_kit/models/agent_decision_create_agent_decision_response.rb +19 -0
- data/lib/safety_kit/models/beta/event_create_params.rb +1140 -0
- data/lib/safety_kit/models/beta/event_create_response.rb +41 -0
- data/lib/safety_kit/models/client_session_create_session_params.rb +30 -0
- data/lib/safety_kit/models/client_session_create_session_response.rb +19 -0
- data/lib/safety_kit/models/data_add_params.rb +52 -0
- data/lib/safety_kit/models/data_add_response.rb +44 -0
- data/lib/safety_kit/models/data_create_upload_url_params.rb +176 -0
- data/lib/safety_kit/models/data_create_upload_url_response.rb +69 -0
- data/lib/safety_kit/models/data_get_download_url_params.rb +30 -0
- data/lib/safety_kit/models/data_get_download_url_response.rb +80 -0
- data/lib/safety_kit/models/data_get_status_params.rb +30 -0
- data/lib/safety_kit/models/data_get_status_response.rb +128 -0
- data/lib/safety_kit/models/data_object.rb +24 -0
- data/lib/safety_kit/models/data_update_settings_params.rb +176 -0
- data/lib/safety_kit/models/data_update_settings_response.rb +34 -0
- data/lib/safety_kit/models/stream_add_frame_params.rb +50 -0
- data/lib/safety_kit/models/stream_add_frame_response.rb +34 -0
- data/lib/safety_kit/models/stream_add_params.rb +36 -0
- data/lib/safety_kit/models/stream_add_response.rb +34 -0
- data/lib/safety_kit/models/stream_add_transcript_params.rb +43 -0
- data/lib/safety_kit/models/stream_add_transcript_response.rb +34 -0
- data/lib/safety_kit/models.rb +65 -0
- data/lib/safety_kit/request_options.rb +77 -0
- data/lib/safety_kit/resources/agent_decisions.rb +55 -0
- data/lib/safety_kit/resources/beta/events.rb +45 -0
- data/lib/safety_kit/resources/beta.rb +19 -0
- data/lib/safety_kit/resources/client_sessions.rb +42 -0
- data/lib/safety_kit/resources/data.rb +159 -0
- data/lib/safety_kit/resources/streams.rb +113 -0
- data/lib/safety_kit/version.rb +5 -0
- data/lib/safety_kit.rb +84 -0
- data/manifest.yaml +17 -0
- data/rbi/safety_kit/client.rbi +68 -0
- data/rbi/safety_kit/errors.rbi +205 -0
- data/rbi/safety_kit/file_part.rbi +37 -0
- data/rbi/safety_kit/internal/transport/base_client.rbi +298 -0
- data/rbi/safety_kit/internal/transport/pooled_net_requester.rbi +83 -0
- data/rbi/safety_kit/internal/type/array_of.rbi +104 -0
- data/rbi/safety_kit/internal/type/base_model.rbi +308 -0
- data/rbi/safety_kit/internal/type/base_page.rbi +42 -0
- data/rbi/safety_kit/internal/type/boolean.rbi +58 -0
- data/rbi/safety_kit/internal/type/converter.rbi +216 -0
- data/rbi/safety_kit/internal/type/enum.rbi +82 -0
- data/rbi/safety_kit/internal/type/file_input.rbi +59 -0
- data/rbi/safety_kit/internal/type/hash_of.rbi +104 -0
- data/rbi/safety_kit/internal/type/request_parameters.rbi +29 -0
- data/rbi/safety_kit/internal/type/union.rbi +128 -0
- data/rbi/safety_kit/internal/type/unknown.rbi +58 -0
- data/rbi/safety_kit/internal/util.rbi +515 -0
- data/rbi/safety_kit/internal.rbi +18 -0
- data/rbi/safety_kit/models/agent_decision_create_agent_decision_params.rbi +95 -0
- data/rbi/safety_kit/models/agent_decision_create_agent_decision_response.rbi +31 -0
- data/rbi/safety_kit/models/beta/event_create_params.rbi +2379 -0
- data/rbi/safety_kit/models/beta/event_create_response.rbi +87 -0
- data/rbi/safety_kit/models/client_session_create_session_params.rbi +60 -0
- data/rbi/safety_kit/models/client_session_create_session_response.rbi +31 -0
- data/rbi/safety_kit/models/data_add_params.rbi +82 -0
- data/rbi/safety_kit/models/data_add_response.rbi +77 -0
- data/rbi/safety_kit/models/data_create_upload_url_params.rbi +473 -0
- data/rbi/safety_kit/models/data_create_upload_url_response.rbi +113 -0
- data/rbi/safety_kit/models/data_get_download_url_params.rbi +54 -0
- data/rbi/safety_kit/models/data_get_download_url_response.rbi +136 -0
- data/rbi/safety_kit/models/data_get_status_params.rbi +51 -0
- data/rbi/safety_kit/models/data_get_status_response.rbi +264 -0
- data/rbi/safety_kit/models/data_object.rbi +33 -0
- data/rbi/safety_kit/models/data_update_settings_params.rbi +458 -0
- data/rbi/safety_kit/models/data_update_settings_response.rbi +74 -0
- data/rbi/safety_kit/models/stream_add_frame_params.rbi +69 -0
- data/rbi/safety_kit/models/stream_add_frame_response.rbi +71 -0
- data/rbi/safety_kit/models/stream_add_params.rbi +55 -0
- data/rbi/safety_kit/models/stream_add_response.rbi +68 -0
- data/rbi/safety_kit/models/stream_add_transcript_params.rbi +64 -0
- data/rbi/safety_kit/models/stream_add_transcript_response.rbi +77 -0
- data/rbi/safety_kit/models.rbi +29 -0
- data/rbi/safety_kit/request_options.rbi +59 -0
- data/rbi/safety_kit/resources/agent_decisions.rbi +50 -0
- data/rbi/safety_kit/resources/beta/events.rbi +40 -0
- data/rbi/safety_kit/resources/beta.rbi +16 -0
- data/rbi/safety_kit/resources/client_sessions.rbi +33 -0
- data/rbi/safety_kit/resources/data.rbi +126 -0
- data/rbi/safety_kit/resources/streams.rbi +88 -0
- data/rbi/safety_kit/version.rbi +5 -0
- data/sig/safety_kit/client.rbs +34 -0
- data/sig/safety_kit/errors.rbs +117 -0
- data/sig/safety_kit/file_part.rbs +21 -0
- data/sig/safety_kit/internal/transport/base_client.rbs +133 -0
- data/sig/safety_kit/internal/transport/pooled_net_requester.rbs +48 -0
- data/sig/safety_kit/internal/type/array_of.rbs +48 -0
- data/sig/safety_kit/internal/type/base_model.rbs +102 -0
- data/sig/safety_kit/internal/type/base_page.rbs +24 -0
- data/sig/safety_kit/internal/type/boolean.rbs +26 -0
- data/sig/safety_kit/internal/type/converter.rbs +79 -0
- data/sig/safety_kit/internal/type/enum.rbs +32 -0
- data/sig/safety_kit/internal/type/file_input.rbs +25 -0
- data/sig/safety_kit/internal/type/hash_of.rbs +48 -0
- data/sig/safety_kit/internal/type/request_parameters.rbs +19 -0
- data/sig/safety_kit/internal/type/union.rbs +52 -0
- data/sig/safety_kit/internal/type/unknown.rbs +26 -0
- data/sig/safety_kit/internal/util.rbs +199 -0
- data/sig/safety_kit/internal.rbs +9 -0
- data/sig/safety_kit/models/agent_decision_create_agent_decision_params.rbs +53 -0
- data/sig/safety_kit/models/agent_decision_create_agent_decision_response.rbs +14 -0
- data/sig/safety_kit/models/beta/event_create_params.rbs +891 -0
- data/sig/safety_kit/models/beta/event_create_response.rbs +37 -0
- data/sig/safety_kit/models/client_session_create_session_params.rbs +32 -0
- data/sig/safety_kit/models/client_session_create_session_response.rbs +13 -0
- data/sig/safety_kit/models/data_add_params.rbs +38 -0
- data/sig/safety_kit/models/data_add_response.rbs +32 -0
- data/sig/safety_kit/models/data_create_upload_url_params.rbs +193 -0
- data/sig/safety_kit/models/data_create_upload_url_response.rbs +50 -0
- data/sig/safety_kit/models/data_get_download_url_params.rbs +28 -0
- data/sig/safety_kit/models/data_get_download_url_response.rbs +59 -0
- data/sig/safety_kit/models/data_get_status_params.rbs +28 -0
- data/sig/safety_kit/models/data_get_status_response.rbs +120 -0
- data/sig/safety_kit/models/data_object.rbs +13 -0
- data/sig/safety_kit/models/data_update_settings_params.rbs +189 -0
- data/sig/safety_kit/models/data_update_settings_response.rbs +35 -0
- data/sig/safety_kit/models/stream_add_frame_params.rbs +41 -0
- data/sig/safety_kit/models/stream_add_frame_response.rbs +35 -0
- data/sig/safety_kit/models/stream_add_params.rbs +32 -0
- data/sig/safety_kit/models/stream_add_response.rbs +35 -0
- data/sig/safety_kit/models/stream_add_transcript_params.rbs +36 -0
- data/sig/safety_kit/models/stream_add_transcript_response.rbs +35 -0
- data/sig/safety_kit/models.rbs +25 -0
- data/sig/safety_kit/request_options.rbs +34 -0
- data/sig/safety_kit/resources/agent_decisions.rbs +17 -0
- data/sig/safety_kit/resources/beta/events.rbs +14 -0
- data/sig/safety_kit/resources/beta.rbs +9 -0
- data/sig/safety_kit/resources/client_sessions.rbs +13 -0
- data/sig/safety_kit/resources/data.rbs +37 -0
- data/sig/safety_kit/resources/streams.rbs +30 -0
- data/sig/safety_kit/version.rbs +3 -0
- metadata +228 -0
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
# typed: strong
|
|
2
|
+
|
|
3
|
+
module SafetyKit
|
|
4
|
+
module Resources
|
|
5
|
+
# Ingest and monitor livestream content.
|
|
6
|
+
class Streams
|
|
7
|
+
# Monitor the livestream at the given stream URL. This method returns immediately.
|
|
8
|
+
sig do
|
|
9
|
+
params(
|
|
10
|
+
namespace: String,
|
|
11
|
+
id: String,
|
|
12
|
+
stream_url: String,
|
|
13
|
+
request_options: SafetyKit::RequestOptions::OrHash
|
|
14
|
+
).returns(SafetyKit::Models::StreamAddResponse)
|
|
15
|
+
end
|
|
16
|
+
def add(
|
|
17
|
+
# The namespace to ingest stream data into
|
|
18
|
+
namespace,
|
|
19
|
+
id:,
|
|
20
|
+
stream_url:,
|
|
21
|
+
request_options: {}
|
|
22
|
+
)
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
# Ingest a single livestream frame as an image data URI plus relative timestamp in
|
|
26
|
+
# milliseconds. The stream does not need to be created beforehand. Only
|
|
27
|
+
# image/jpeg, image/png, and image/webp are accepted. The decoded bytes must match
|
|
28
|
+
# the declared mime type, decode as a valid image, stay within 5 MB, and stay
|
|
29
|
+
# within 4096x4096 / 16,000,000 total pixels. Timestamps are relative milliseconds
|
|
30
|
+
# from stream start and must be unique and strictly increasing within a stream.
|
|
31
|
+
# Duplicate or out-of-order frame timestamps are accepted at the API boundary but
|
|
32
|
+
# ignored by downstream processing. This method returns immediately after the
|
|
33
|
+
# frame has been accepted for processing.
|
|
34
|
+
sig do
|
|
35
|
+
params(
|
|
36
|
+
namespace: String,
|
|
37
|
+
image_data_uri: String,
|
|
38
|
+
stream_id: String,
|
|
39
|
+
timestamp: Integer,
|
|
40
|
+
request_options: SafetyKit::RequestOptions::OrHash
|
|
41
|
+
).returns(SafetyKit::Models::StreamAddFrameResponse)
|
|
42
|
+
end
|
|
43
|
+
def add_frame(
|
|
44
|
+
# The namespace to ingest stream data into
|
|
45
|
+
namespace,
|
|
46
|
+
# A data URI containing a base64-encoded frame image. Only image/jpeg, image/png,
|
|
47
|
+
# and image/webp are accepted. The decoded bytes must match the declared mime
|
|
48
|
+
# type, decode as a valid image, stay within 5 MB, and stay within 4096x4096 /
|
|
49
|
+
# 16,000,000 total pixels.
|
|
50
|
+
image_data_uri:,
|
|
51
|
+
stream_id:,
|
|
52
|
+
timestamp:,
|
|
53
|
+
request_options: {}
|
|
54
|
+
)
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
# Ingest a single transcript segment for a livestream using a relative timestamp
|
|
58
|
+
# in milliseconds. The stream does not need to be created beforehand. Transcript
|
|
59
|
+
# timestamps are relative milliseconds from stream start and should be
|
|
60
|
+
# monotonically increasing within a stream so transcript context lines up
|
|
61
|
+
# correctly with later frames. This method returns immediately after the
|
|
62
|
+
# transcript has been accepted for processing.
|
|
63
|
+
sig do
|
|
64
|
+
params(
|
|
65
|
+
namespace: String,
|
|
66
|
+
stream_id: String,
|
|
67
|
+
text: String,
|
|
68
|
+
timestamp: Integer,
|
|
69
|
+
request_options: SafetyKit::RequestOptions::OrHash
|
|
70
|
+
).returns(SafetyKit::Models::StreamAddTranscriptResponse)
|
|
71
|
+
end
|
|
72
|
+
def add_transcript(
|
|
73
|
+
# The namespace to ingest stream data into
|
|
74
|
+
namespace,
|
|
75
|
+
stream_id:,
|
|
76
|
+
text:,
|
|
77
|
+
timestamp:,
|
|
78
|
+
request_options: {}
|
|
79
|
+
)
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
# @api private
|
|
83
|
+
sig { params(client: SafetyKit::Client).returns(T.attached_class) }
|
|
84
|
+
def self.new(client:)
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
end
|
|
88
|
+
end
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
module SafetyKit
|
|
2
|
+
class Client < SafetyKit::Internal::Transport::BaseClient
|
|
3
|
+
DEFAULT_MAX_RETRIES: 2
|
|
4
|
+
|
|
5
|
+
DEFAULT_TIMEOUT_IN_SECONDS: Float
|
|
6
|
+
|
|
7
|
+
DEFAULT_INITIAL_RETRY_DELAY: Float
|
|
8
|
+
|
|
9
|
+
DEFAULT_MAX_RETRY_DELAY: Float
|
|
10
|
+
|
|
11
|
+
attr_reader api_key: String
|
|
12
|
+
|
|
13
|
+
attr_reader data: SafetyKit::Resources::Data
|
|
14
|
+
|
|
15
|
+
attr_reader streams: SafetyKit::Resources::Streams
|
|
16
|
+
|
|
17
|
+
attr_reader agent_decisions: SafetyKit::Resources::AgentDecisions
|
|
18
|
+
|
|
19
|
+
attr_reader client_sessions: SafetyKit::Resources::ClientSessions
|
|
20
|
+
|
|
21
|
+
attr_reader beta: SafetyKit::Resources::Beta
|
|
22
|
+
|
|
23
|
+
private def auth_headers: -> ::Hash[String, String]
|
|
24
|
+
|
|
25
|
+
def initialize: (
|
|
26
|
+
?api_key: String?,
|
|
27
|
+
?base_url: String?,
|
|
28
|
+
?max_retries: Integer,
|
|
29
|
+
?timeout: Float,
|
|
30
|
+
?initial_retry_delay: Float,
|
|
31
|
+
?max_retry_delay: Float
|
|
32
|
+
) -> void
|
|
33
|
+
end
|
|
34
|
+
end
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
module SafetyKit
|
|
2
|
+
module Errors
|
|
3
|
+
class Error < StandardError
|
|
4
|
+
attr_accessor cause: StandardError?
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
class ConversionError < SafetyKit::Errors::Error
|
|
8
|
+
def cause: -> StandardError?
|
|
9
|
+
|
|
10
|
+
def initialize: (
|
|
11
|
+
on: Class,
|
|
12
|
+
method: Symbol,
|
|
13
|
+
target: top,
|
|
14
|
+
value: top,
|
|
15
|
+
?cause: StandardError?
|
|
16
|
+
) -> void
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
class APIError < SafetyKit::Errors::Error
|
|
20
|
+
attr_accessor url: URI::Generic
|
|
21
|
+
|
|
22
|
+
attr_accessor status: Integer?
|
|
23
|
+
|
|
24
|
+
attr_accessor headers: ::Hash[String, String]?
|
|
25
|
+
|
|
26
|
+
attr_accessor body: top?
|
|
27
|
+
|
|
28
|
+
def initialize: (
|
|
29
|
+
url: URI::Generic,
|
|
30
|
+
?status: Integer?,
|
|
31
|
+
?headers: ::Hash[String, String]?,
|
|
32
|
+
?body: Object?,
|
|
33
|
+
?request: nil,
|
|
34
|
+
?response: nil,
|
|
35
|
+
?message: String?
|
|
36
|
+
) -> void
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
class APIConnectionError < SafetyKit::Errors::APIError
|
|
40
|
+
def initialize: (
|
|
41
|
+
url: URI::Generic,
|
|
42
|
+
?status: nil,
|
|
43
|
+
?headers: ::Hash[String, String]?,
|
|
44
|
+
?body: nil,
|
|
45
|
+
?request: nil,
|
|
46
|
+
?response: nil,
|
|
47
|
+
?message: String?
|
|
48
|
+
) -> void
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
class APITimeoutError < SafetyKit::Errors::APIConnectionError
|
|
52
|
+
def initialize: (
|
|
53
|
+
url: URI::Generic,
|
|
54
|
+
?status: nil,
|
|
55
|
+
?headers: ::Hash[String, String]?,
|
|
56
|
+
?body: nil,
|
|
57
|
+
?request: nil,
|
|
58
|
+
?response: nil,
|
|
59
|
+
?message: String?
|
|
60
|
+
) -> void
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
class APIStatusError < SafetyKit::Errors::APIError
|
|
64
|
+
def self.for: (
|
|
65
|
+
url: URI::Generic,
|
|
66
|
+
status: Integer,
|
|
67
|
+
headers: ::Hash[String, String]?,
|
|
68
|
+
body: Object?,
|
|
69
|
+
request: nil,
|
|
70
|
+
response: nil,
|
|
71
|
+
?message: String?
|
|
72
|
+
) -> instance
|
|
73
|
+
|
|
74
|
+
def initialize: (
|
|
75
|
+
url: URI::Generic,
|
|
76
|
+
status: Integer,
|
|
77
|
+
headers: ::Hash[String, String]?,
|
|
78
|
+
body: Object?,
|
|
79
|
+
request: nil,
|
|
80
|
+
response: nil,
|
|
81
|
+
?message: String?
|
|
82
|
+
) -> void
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
class BadRequestError < SafetyKit::Errors::APIStatusError
|
|
86
|
+
HTTP_STATUS: 400
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
class AuthenticationError < SafetyKit::Errors::APIStatusError
|
|
90
|
+
HTTP_STATUS: 401
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
class PermissionDeniedError < SafetyKit::Errors::APIStatusError
|
|
94
|
+
HTTP_STATUS: 403
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
class NotFoundError < SafetyKit::Errors::APIStatusError
|
|
98
|
+
HTTP_STATUS: 404
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
class ConflictError < SafetyKit::Errors::APIStatusError
|
|
102
|
+
HTTP_STATUS: 409
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
class UnprocessableEntityError < SafetyKit::Errors::APIStatusError
|
|
106
|
+
HTTP_STATUS: 422
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
class RateLimitError < SafetyKit::Errors::APIStatusError
|
|
110
|
+
HTTP_STATUS: 429
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
class InternalServerError < SafetyKit::Errors::APIStatusError
|
|
114
|
+
HTTP_STATUS: Range[Integer]
|
|
115
|
+
end
|
|
116
|
+
end
|
|
117
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
module SafetyKit
|
|
2
|
+
class FilePart
|
|
3
|
+
attr_reader content: Pathname | StringIO | IO | String
|
|
4
|
+
|
|
5
|
+
attr_reader content_type: String?
|
|
6
|
+
|
|
7
|
+
attr_reader filename: String?
|
|
8
|
+
|
|
9
|
+
private def read: -> String
|
|
10
|
+
|
|
11
|
+
def to_json: (*top a) -> String
|
|
12
|
+
|
|
13
|
+
def to_yaml: (*top a) -> String
|
|
14
|
+
|
|
15
|
+
def initialize: (
|
|
16
|
+
Pathname | StringIO | IO | String content,
|
|
17
|
+
?filename: (Pathname | String)?,
|
|
18
|
+
?content_type: String?
|
|
19
|
+
) -> void
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
module SafetyKit
|
|
2
|
+
module Internal
|
|
3
|
+
module Transport
|
|
4
|
+
class BaseClient
|
|
5
|
+
extend SafetyKit::Internal::Util::SorbetRuntimeSupport
|
|
6
|
+
|
|
7
|
+
type request_components =
|
|
8
|
+
{
|
|
9
|
+
method: Symbol,
|
|
10
|
+
path: String | ::Array[String],
|
|
11
|
+
query: ::Hash[String, (::Array[String] | String)?]?,
|
|
12
|
+
headers: ::Hash[String, (String
|
|
13
|
+
| Integer
|
|
14
|
+
| ::Array[(String | Integer)?])?]?,
|
|
15
|
+
body: top?,
|
|
16
|
+
unwrap: (Symbol
|
|
17
|
+
| Integer
|
|
18
|
+
| ::Array[(Symbol | Integer)]
|
|
19
|
+
| (^(top arg0) -> top))?,
|
|
20
|
+
page: Class?,
|
|
21
|
+
stream: Class?,
|
|
22
|
+
model: SafetyKit::Internal::Type::Converter::input?,
|
|
23
|
+
options: SafetyKit::request_opts?
|
|
24
|
+
}
|
|
25
|
+
type request_input =
|
|
26
|
+
{
|
|
27
|
+
method: Symbol,
|
|
28
|
+
url: URI::Generic,
|
|
29
|
+
headers: ::Hash[String, String],
|
|
30
|
+
body: top,
|
|
31
|
+
max_retries: Integer,
|
|
32
|
+
timeout: Float
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
MAX_REDIRECTS: 20
|
|
36
|
+
|
|
37
|
+
PLATFORM_HEADERS: ::Hash[String, String]
|
|
38
|
+
|
|
39
|
+
def self.validate!: (
|
|
40
|
+
SafetyKit::Internal::Transport::BaseClient::request_components req
|
|
41
|
+
) -> void
|
|
42
|
+
|
|
43
|
+
def self.should_retry?: (
|
|
44
|
+
Integer status,
|
|
45
|
+
headers: ::Hash[String, String]
|
|
46
|
+
) -> bool
|
|
47
|
+
|
|
48
|
+
def self.follow_redirect: (
|
|
49
|
+
SafetyKit::Internal::Transport::BaseClient::request_input request,
|
|
50
|
+
status: Integer,
|
|
51
|
+
response_headers: ::Hash[String, String]
|
|
52
|
+
) -> SafetyKit::Internal::Transport::BaseClient::request_input
|
|
53
|
+
|
|
54
|
+
def self.reap_connection!: (
|
|
55
|
+
Integer | SafetyKit::Errors::APIConnectionError status,
|
|
56
|
+
stream: Enumerable[String]?
|
|
57
|
+
) -> void
|
|
58
|
+
|
|
59
|
+
attr_reader base_url: URI::Generic
|
|
60
|
+
|
|
61
|
+
attr_reader timeout: Float
|
|
62
|
+
|
|
63
|
+
attr_reader max_retries: Integer
|
|
64
|
+
|
|
65
|
+
attr_reader initial_retry_delay: Float
|
|
66
|
+
|
|
67
|
+
attr_reader max_retry_delay: Float
|
|
68
|
+
|
|
69
|
+
attr_reader headers: ::Hash[String, String]
|
|
70
|
+
|
|
71
|
+
attr_reader idempotency_header: String?
|
|
72
|
+
|
|
73
|
+
# @api private
|
|
74
|
+
attr_reader requester: SafetyKit::Internal::Transport::PooledNetRequester
|
|
75
|
+
|
|
76
|
+
def initialize: (
|
|
77
|
+
base_url: String,
|
|
78
|
+
?timeout: Float,
|
|
79
|
+
?max_retries: Integer,
|
|
80
|
+
?initial_retry_delay: Float,
|
|
81
|
+
?max_retry_delay: Float,
|
|
82
|
+
?headers: ::Hash[String, (String
|
|
83
|
+
| Integer
|
|
84
|
+
| ::Array[(String | Integer)?])?],
|
|
85
|
+
?idempotency_header: String?
|
|
86
|
+
) -> void
|
|
87
|
+
|
|
88
|
+
private def auth_headers: -> ::Hash[String, String]
|
|
89
|
+
|
|
90
|
+
private def user_agent: -> String
|
|
91
|
+
|
|
92
|
+
private def generate_idempotency_key: -> String
|
|
93
|
+
|
|
94
|
+
private def build_request: (
|
|
95
|
+
SafetyKit::Internal::Transport::BaseClient::request_components req,
|
|
96
|
+
SafetyKit::request_options opts
|
|
97
|
+
) -> SafetyKit::Internal::Transport::BaseClient::request_input
|
|
98
|
+
|
|
99
|
+
private def retry_delay: (
|
|
100
|
+
::Hash[String, String] headers,
|
|
101
|
+
retry_count: Integer
|
|
102
|
+
) -> Float
|
|
103
|
+
|
|
104
|
+
def send_request: (
|
|
105
|
+
SafetyKit::Internal::Transport::BaseClient::request_input request,
|
|
106
|
+
redirect_count: Integer,
|
|
107
|
+
retry_count: Integer,
|
|
108
|
+
send_retry_header: bool
|
|
109
|
+
) -> [Integer, top, Enumerable[String]]
|
|
110
|
+
|
|
111
|
+
def request: (
|
|
112
|
+
Symbol method,
|
|
113
|
+
String | ::Array[String] path,
|
|
114
|
+
?query: ::Hash[String, (::Array[String] | String)?]?,
|
|
115
|
+
?headers: ::Hash[String, (String
|
|
116
|
+
| Integer
|
|
117
|
+
| ::Array[(String | Integer)?])?]?,
|
|
118
|
+
?body: top?,
|
|
119
|
+
?unwrap: (Symbol
|
|
120
|
+
| Integer
|
|
121
|
+
| ::Array[(Symbol | Integer)]
|
|
122
|
+
| (^(top arg0) -> top))?,
|
|
123
|
+
?page: Class?,
|
|
124
|
+
?stream: Class?,
|
|
125
|
+
?model: SafetyKit::Internal::Type::Converter::input?,
|
|
126
|
+
?options: SafetyKit::request_opts?
|
|
127
|
+
) -> top
|
|
128
|
+
|
|
129
|
+
def inspect: -> String
|
|
130
|
+
end
|
|
131
|
+
end
|
|
132
|
+
end
|
|
133
|
+
end
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
module SafetyKit
|
|
2
|
+
module Internal
|
|
3
|
+
module Transport
|
|
4
|
+
class PooledNetRequester
|
|
5
|
+
extend SafetyKit::Internal::Util::SorbetRuntimeSupport
|
|
6
|
+
|
|
7
|
+
type request =
|
|
8
|
+
{
|
|
9
|
+
method: Symbol,
|
|
10
|
+
url: URI::Generic,
|
|
11
|
+
headers: ::Hash[String, String],
|
|
12
|
+
body: top,
|
|
13
|
+
deadline: Float
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
KEEP_ALIVE_TIMEOUT: 30
|
|
17
|
+
|
|
18
|
+
DEFAULT_MAX_CONNECTIONS: Integer
|
|
19
|
+
|
|
20
|
+
def self.connect: (
|
|
21
|
+
cert_store: OpenSSL::X509::Store,
|
|
22
|
+
url: URI::Generic
|
|
23
|
+
) -> top
|
|
24
|
+
|
|
25
|
+
def self.calibrate_socket_timeout: (top conn, Float deadline) -> void
|
|
26
|
+
|
|
27
|
+
def self.build_request: (
|
|
28
|
+
SafetyKit::Internal::Transport::PooledNetRequester::request request
|
|
29
|
+
) {
|
|
30
|
+
(String arg0) -> void
|
|
31
|
+
} -> [top, (^-> void)]
|
|
32
|
+
|
|
33
|
+
private def with_pool: (
|
|
34
|
+
URI::Generic url,
|
|
35
|
+
deadline: Float
|
|
36
|
+
) {
|
|
37
|
+
(top arg0) -> void
|
|
38
|
+
} -> void
|
|
39
|
+
|
|
40
|
+
def execute: (
|
|
41
|
+
SafetyKit::Internal::Transport::PooledNetRequester::request request
|
|
42
|
+
) -> [Integer, top, Enumerable[String]]
|
|
43
|
+
|
|
44
|
+
def initialize: (?size: Integer) -> void
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
module SafetyKit
|
|
2
|
+
module Internal
|
|
3
|
+
module Type
|
|
4
|
+
class ArrayOf[Elem]
|
|
5
|
+
include SafetyKit::Internal::Type::Converter
|
|
6
|
+
include SafetyKit::Internal::Util::SorbetRuntimeSupport
|
|
7
|
+
|
|
8
|
+
def self.[]: (
|
|
9
|
+
::Hash[Symbol, top]
|
|
10
|
+
| ^-> SafetyKit::Internal::Type::Converter::input
|
|
11
|
+
| SafetyKit::Internal::Type::Converter::input type_info,
|
|
12
|
+
?::Hash[Symbol, top] spec
|
|
13
|
+
) -> instance
|
|
14
|
+
|
|
15
|
+
def ===: (top other) -> bool
|
|
16
|
+
|
|
17
|
+
def ==: (top other) -> bool
|
|
18
|
+
|
|
19
|
+
def hash: -> Integer
|
|
20
|
+
|
|
21
|
+
def coerce: (
|
|
22
|
+
::Array[top] | top value,
|
|
23
|
+
state: SafetyKit::Internal::Type::Converter::coerce_state
|
|
24
|
+
) -> (::Array[top] | top)
|
|
25
|
+
|
|
26
|
+
def dump: (
|
|
27
|
+
::Array[top] | top value,
|
|
28
|
+
state: SafetyKit::Internal::Type::Converter::dump_state
|
|
29
|
+
) -> (::Array[top] | top)
|
|
30
|
+
|
|
31
|
+
def to_sorbet_type: -> top
|
|
32
|
+
|
|
33
|
+
def item_type: -> Elem
|
|
34
|
+
|
|
35
|
+
def nilable?: -> bool
|
|
36
|
+
|
|
37
|
+
def initialize: (
|
|
38
|
+
::Hash[Symbol, top]
|
|
39
|
+
| ^-> SafetyKit::Internal::Type::Converter::input
|
|
40
|
+
| SafetyKit::Internal::Type::Converter::input type_info,
|
|
41
|
+
?::Hash[Symbol, top] spec
|
|
42
|
+
) -> void
|
|
43
|
+
|
|
44
|
+
def inspect: (?depth: Integer) -> String
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
module SafetyKit
|
|
2
|
+
module Internal
|
|
3
|
+
module Type
|
|
4
|
+
class BaseModel
|
|
5
|
+
extend SafetyKit::Internal::Type::Converter
|
|
6
|
+
extend SafetyKit::Internal::Util::SorbetRuntimeSupport
|
|
7
|
+
|
|
8
|
+
type known_field =
|
|
9
|
+
{ mode: (:coerce | :dump)?, required: bool, nilable: bool }
|
|
10
|
+
|
|
11
|
+
def self.inherited: (self child) -> void
|
|
12
|
+
|
|
13
|
+
def self.known_fields: -> ::Hash[Symbol, (SafetyKit::Internal::Type::BaseModel::known_field
|
|
14
|
+
& { type_fn: (^-> SafetyKit::Internal::Type::Converter::input) })]
|
|
15
|
+
|
|
16
|
+
def self.fields: -> ::Hash[Symbol, (SafetyKit::Internal::Type::BaseModel::known_field
|
|
17
|
+
& { type: SafetyKit::Internal::Type::Converter::input })]
|
|
18
|
+
|
|
19
|
+
private def self.add_field: (
|
|
20
|
+
Symbol name_sym,
|
|
21
|
+
required: bool,
|
|
22
|
+
type_info: {
|
|
23
|
+
const: (nil | bool | Integer | Float | Symbol)?,
|
|
24
|
+
enum: ^-> SafetyKit::Internal::Type::Converter::input?,
|
|
25
|
+
union: ^-> SafetyKit::Internal::Type::Converter::input?,
|
|
26
|
+
api_name: Symbol
|
|
27
|
+
}
|
|
28
|
+
| ^-> SafetyKit::Internal::Type::Converter::input
|
|
29
|
+
| SafetyKit::Internal::Type::Converter::input,
|
|
30
|
+
spec: ::Hash[Symbol, top]
|
|
31
|
+
) -> void
|
|
32
|
+
|
|
33
|
+
def self.required: (
|
|
34
|
+
Symbol name_sym,
|
|
35
|
+
::Hash[Symbol, top]
|
|
36
|
+
| ^-> SafetyKit::Internal::Type::Converter::input
|
|
37
|
+
| SafetyKit::Internal::Type::Converter::input type_info,
|
|
38
|
+
?::Hash[Symbol, top] spec
|
|
39
|
+
) -> void
|
|
40
|
+
|
|
41
|
+
def self.optional: (
|
|
42
|
+
Symbol name_sym,
|
|
43
|
+
::Hash[Symbol, top]
|
|
44
|
+
| ^-> SafetyKit::Internal::Type::Converter::input
|
|
45
|
+
| SafetyKit::Internal::Type::Converter::input type_info,
|
|
46
|
+
?::Hash[Symbol, top] spec
|
|
47
|
+
) -> void
|
|
48
|
+
|
|
49
|
+
private def self.request_only: { -> void } -> void
|
|
50
|
+
|
|
51
|
+
private def self.response_only: { -> void } -> void
|
|
52
|
+
|
|
53
|
+
def self.==: (top other) -> bool
|
|
54
|
+
|
|
55
|
+
def self.hash: -> Integer
|
|
56
|
+
|
|
57
|
+
def ==: (top other) -> bool
|
|
58
|
+
|
|
59
|
+
def hash: -> Integer
|
|
60
|
+
|
|
61
|
+
def self.coerce: (
|
|
62
|
+
SafetyKit::Internal::Type::BaseModel | ::Hash[top, top] | top value,
|
|
63
|
+
state: SafetyKit::Internal::Type::Converter::coerce_state
|
|
64
|
+
) -> (instance | top)
|
|
65
|
+
|
|
66
|
+
def self.dump: (
|
|
67
|
+
instance | top value,
|
|
68
|
+
state: SafetyKit::Internal::Type::Converter::dump_state
|
|
69
|
+
) -> (::Hash[top, top] | top)
|
|
70
|
+
|
|
71
|
+
def self.to_sorbet_type: -> top
|
|
72
|
+
|
|
73
|
+
def self.recursively_to_h: (
|
|
74
|
+
SafetyKit::Internal::Type::BaseModel model,
|
|
75
|
+
convert: bool
|
|
76
|
+
) -> ::Hash[Symbol, top]
|
|
77
|
+
|
|
78
|
+
def []: (Symbol key) -> top?
|
|
79
|
+
|
|
80
|
+
def to_h: -> ::Hash[Symbol, top]
|
|
81
|
+
|
|
82
|
+
alias to_hash to_h
|
|
83
|
+
|
|
84
|
+
def deep_to_h: -> ::Hash[Symbol, top]
|
|
85
|
+
|
|
86
|
+
def deconstruct_keys: (::Array[Symbol]? keys) -> ::Hash[Symbol, top]
|
|
87
|
+
|
|
88
|
+
def to_json: (*top a) -> String
|
|
89
|
+
|
|
90
|
+
def to_yaml: (*top a) -> String
|
|
91
|
+
|
|
92
|
+
def initialize: (?::Hash[Symbol, top] | instance data) -> void
|
|
93
|
+
|
|
94
|
+
def self.inspect: (?depth: Integer) -> String
|
|
95
|
+
|
|
96
|
+
def to_s: -> String
|
|
97
|
+
|
|
98
|
+
def inspect: -> String
|
|
99
|
+
end
|
|
100
|
+
end
|
|
101
|
+
end
|
|
102
|
+
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
module SafetyKit
|
|
2
|
+
module Internal
|
|
3
|
+
module Type
|
|
4
|
+
module BasePage[Elem]
|
|
5
|
+
def next_page?: -> bool
|
|
6
|
+
|
|
7
|
+
def next_page: -> instance
|
|
8
|
+
|
|
9
|
+
def auto_paging_each: { (Elem arg0) -> void } -> void
|
|
10
|
+
|
|
11
|
+
def to_enum: -> Enumerable[Elem]
|
|
12
|
+
|
|
13
|
+
alias enum_for to_enum
|
|
14
|
+
|
|
15
|
+
def initialize: (
|
|
16
|
+
client: SafetyKit::Internal::Transport::BaseClient,
|
|
17
|
+
req: SafetyKit::Internal::Transport::BaseClient::request_components,
|
|
18
|
+
headers: ::Hash[String, String],
|
|
19
|
+
page_data: top
|
|
20
|
+
) -> void
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
module SafetyKit
|
|
2
|
+
module Internal
|
|
3
|
+
module Type
|
|
4
|
+
class Boolean
|
|
5
|
+
extend SafetyKit::Internal::Type::Converter
|
|
6
|
+
extend SafetyKit::Internal::Util::SorbetRuntimeSupport
|
|
7
|
+
|
|
8
|
+
def self.===: (top other) -> bool
|
|
9
|
+
|
|
10
|
+
def self.==: (top other) -> bool
|
|
11
|
+
|
|
12
|
+
def self.coerce: (
|
|
13
|
+
bool | top value,
|
|
14
|
+
state: SafetyKit::Internal::Type::Converter::coerce_state
|
|
15
|
+
) -> (bool | top)
|
|
16
|
+
|
|
17
|
+
def self.dump: (
|
|
18
|
+
bool | top value,
|
|
19
|
+
state: SafetyKit::Internal::Type::Converter::dump_state
|
|
20
|
+
) -> (bool | top)
|
|
21
|
+
|
|
22
|
+
def self.to_sorbet_type: -> top
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|