noresponse 2.0.17
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/lib/crystalline/enum.rbi +17 -0
- data/lib/crystalline/metadata_fields.rb +263 -0
- data/lib/crystalline/module.rb +186 -0
- data/lib/crystalline/types.rb +168 -0
- data/lib/crystalline/utils.rb +67 -0
- data/lib/crystalline.rb +11 -0
- data/lib/no_response/assessments.rb +1252 -0
- data/lib/no_response/auth.rb +263 -0
- data/lib/no_response/issued_credential.rb +21 -0
- data/lib/no_response/keys.rb +318 -0
- data/lib/no_response/late_results.rb +301 -0
- data/lib/no_response/models/callbacks.rb +10 -0
- data/lib/no_response/models/errors/apistatuserror.rb +41 -0
- data/lib/no_response/models/errors/apistatuserror.rbi +30 -0
- data/lib/no_response/models/errors/authenticationerror.rb +108 -0
- data/lib/no_response/models/errors/authenticationerror.rbi +56 -0
- data/lib/no_response/models/errors/badrequesterror.rb +108 -0
- data/lib/no_response/models/errors/badrequesterror.rbi +56 -0
- data/lib/no_response/models/errors/conflicterror.rb +108 -0
- data/lib/no_response/models/errors/conflicterror.rbi +56 -0
- data/lib/no_response/models/errors/notfounderror.rb +108 -0
- data/lib/no_response/models/errors/notfounderror.rbi +56 -0
- data/lib/no_response/models/errors/permissiondeniederror.rb +108 -0
- data/lib/no_response/models/errors/permissiondeniederror.rbi +56 -0
- data/lib/no_response/models/errors/ratelimiterror.rb +108 -0
- data/lib/no_response/models/errors/ratelimiterror.rbi +56 -0
- data/lib/no_response/models/errors.rb +16 -0
- data/lib/no_response/models/operations/createassessment_request.rb +36 -0
- data/lib/no_response/models/operations/createassessment_request.rbi +20 -0
- data/lib/no_response/models/operations/createassessment_response.rb +32 -0
- data/lib/no_response/models/operations/createassessment_response.rbi +20 -0
- data/lib/no_response/models/operations/getassessment_request.rb +41 -0
- data/lib/no_response/models/operations/getassessment_request.rbi +20 -0
- data/lib/no_response/models/operations/getassessment_response.rb +32 -0
- data/lib/no_response/models/operations/getassessment_response.rbi +20 -0
- data/lib/no_response/models/operations/queryaccountassessments_response.rb +44 -0
- data/lib/no_response/models/operations/queryaccountassessments_response.rbi +20 -0
- data/lib/no_response/models/operations/recordassessmentoutcome_request.rb +52 -0
- data/lib/no_response/models/operations/recordassessmentoutcome_request.rbi +26 -0
- data/lib/no_response/models/operations/recordassessmentoutcome_response.rb +32 -0
- data/lib/no_response/models/operations/recordassessmentoutcome_response.rbi +20 -0
- data/lib/no_response/models/operations/rotateapikey_response.rb +32 -0
- data/lib/no_response/models/operations/rotateapikey_response.rbi +20 -0
- data/lib/no_response/models/operations.rb +17 -0
- data/lib/no_response/models/shared/alternate_name.rb +23 -0
- data/lib/no_response/models/shared/alternate_name.rbi +9 -0
- data/lib/no_response/models/shared/alternate_name_union.rb +23 -0
- data/lib/no_response/models/shared/alternate_name_union.rbi +9 -0
- data/lib/no_response/models/shared/assessment.rb +235 -0
- data/lib/no_response/models/shared/assessment.rbi +116 -0
- data/lib/no_response/models/shared/assessmentlist.rb +78 -0
- data/lib/no_response/models/shared/assessmentlist.rbi +38 -0
- data/lib/no_response/models/shared/assessmentoutcome.rb +61 -0
- data/lib/no_response/models/shared/assessmentoutcome.rbi +32 -0
- data/lib/no_response/models/shared/assessmentoutcomerequest.rb +71 -0
- data/lib/no_response/models/shared/assessmentoutcomerequest.rbi +32 -0
- data/lib/no_response/models/shared/assessmentquery.rb +70 -0
- data/lib/no_response/models/shared/assessmentquery.rbi +32 -0
- data/lib/no_response/models/shared/assessmentrequest.rb +125 -0
- data/lib/no_response/models/shared/assessmentrequest.rbi +62 -0
- data/lib/no_response/models/shared/assessmentrequestclientcontext.rb +125 -0
- data/lib/no_response/models/shared/assessmentrequestclientcontext.rbi +62 -0
- data/lib/no_response/models/shared/assessmentrequestidentifiers.rb +74 -0
- data/lib/no_response/models/shared/assessmentrequestidentifiers.rbi +38 -0
- data/lib/no_response/models/shared/assessmentrequestissuedcredential.rb +33 -0
- data/lib/no_response/models/shared/assessmentrequestissuedcredential.rbi +14 -0
- data/lib/no_response/models/shared/assessmentrequestpolicycontext.rb +46 -0
- data/lib/no_response/models/shared/assessmentrequestpolicycontext.rbi +20 -0
- data/lib/no_response/models/shared/assessmenttiming.rb +41 -0
- data/lib/no_response/models/shared/assessmenttiming.rbi +20 -0
- data/lib/no_response/models/shared/assurancelevel.rb +18 -0
- data/lib/no_response/models/shared/assurancelevel.rbi +9 -0
- data/lib/no_response/models/shared/authcontext.rb +285 -0
- data/lib/no_response/models/shared/authcontext.rbi +152 -0
- data/lib/no_response/models/shared/authcontextmfa.rb +55 -0
- data/lib/no_response/models/shared/authcontextmfa.rbi +26 -0
- data/lib/no_response/models/shared/authenticationerrorcode.rb +18 -0
- data/lib/no_response/models/shared/authenticationerrorcode.rbi +9 -0
- data/lib/no_response/models/shared/badrequesterrorcode.rb +20 -0
- data/lib/no_response/models/shared/badrequesterrorcode.rbi +9 -0
- data/lib/no_response/models/shared/band.rb +21 -0
- data/lib/no_response/models/shared/band.rbi +9 -0
- data/lib/no_response/models/shared/breach.rb +108 -0
- data/lib/no_response/models/shared/breach.rbi +56 -0
- data/lib/no_response/models/shared/breachexposed.rb +28 -0
- data/lib/no_response/models/shared/breachexposed.rbi +9 -0
- data/lib/no_response/models/shared/breachkind.rb +24 -0
- data/lib/no_response/models/shared/breachkind.rbi +9 -0
- data/lib/no_response/models/shared/breachselector.rb +20 -0
- data/lib/no_response/models/shared/breachselector.rbi +9 -0
- data/lib/no_response/models/shared/breachsummary.rb +109 -0
- data/lib/no_response/models/shared/breachsummary.rbi +56 -0
- data/lib/no_response/models/shared/confidence.rb +21 -0
- data/lib/no_response/models/shared/confidence.rbi +9 -0
- data/lib/no_response/models/shared/conflicterrorcode.rb +19 -0
- data/lib/no_response/models/shared/conflicterrorcode.rbi +9 -0
- data/lib/no_response/models/shared/consistency.rb +85 -0
- data/lib/no_response/models/shared/consistency.rbi +32 -0
- data/lib/no_response/models/shared/consistencyvalue.rb +21 -0
- data/lib/no_response/models/shared/consistencyvalue.rbi +9 -0
- data/lib/no_response/models/shared/country.rb +20 -0
- data/lib/no_response/models/shared/country.rbi +9 -0
- data/lib/no_response/models/shared/email.rb +23 -0
- data/lib/no_response/models/shared/email.rbi +9 -0
- data/lib/no_response/models/shared/email_union.rb +23 -0
- data/lib/no_response/models/shared/email_union.rbi +9 -0
- data/lib/no_response/models/shared/failurereason.rb +24 -0
- data/lib/no_response/models/shared/failurereason.rbi +9 -0
- data/lib/no_response/models/shared/flow.rb +18 -0
- data/lib/no_response/models/shared/flow.rbi +9 -0
- data/lib/no_response/models/shared/freshness.rb +20 -0
- data/lib/no_response/models/shared/freshness.rbi +9 -0
- data/lib/no_response/models/shared/hookpoint.rb +19 -0
- data/lib/no_response/models/shared/hookpoint.rbi +9 -0
- data/lib/no_response/models/shared/identifierkind.rb +21 -0
- data/lib/no_response/models/shared/identifierkind.rbi +9 -0
- data/lib/no_response/models/shared/incompletereason.rb +23 -0
- data/lib/no_response/models/shared/incompletereason.rbi +9 -0
- data/lib/no_response/models/shared/incompletesource.rb +53 -0
- data/lib/no_response/models/shared/incompletesource.rbi +20 -0
- data/lib/no_response/models/shared/ipsummary.rb +61 -0
- data/lib/no_response/models/shared/ipsummary.rbi +26 -0
- data/lib/no_response/models/shared/ipsummarytype.rb +24 -0
- data/lib/no_response/models/shared/ipsummarytype.rbi +9 -0
- data/lib/no_response/models/shared/keyrotation.rb +79 -0
- data/lib/no_response/models/shared/keyrotation.rbi +44 -0
- data/lib/no_response/models/shared/keyrotationrequest.rb +33 -0
- data/lib/no_response/models/shared/keyrotationrequest.rbi +14 -0
- data/lib/no_response/models/shared/lane.rb +21 -0
- data/lib/no_response/models/shared/lane.rbi +9 -0
- data/lib/no_response/models/shared/linetype.rb +22 -0
- data/lib/no_response/models/shared/linetype.rbi +9 -0
- data/lib/no_response/models/shared/location.rb +23 -0
- data/lib/no_response/models/shared/location.rbi +9 -0
- data/lib/no_response/models/shared/location_union.rb +23 -0
- data/lib/no_response/models/shared/location_union.rbi +9 -0
- data/lib/no_response/models/shared/name_candidate.rb +23 -0
- data/lib/no_response/models/shared/name_candidate.rbi +9 -0
- data/lib/no_response/models/shared/name_candidate_union.rb +23 -0
- data/lib/no_response/models/shared/name_candidate_union.rbi +9 -0
- data/lib/no_response/models/shared/notfounderrorcode.rb +18 -0
- data/lib/no_response/models/shared/notfounderrorcode.rbi +9 -0
- data/lib/no_response/models/shared/outcome.rb +23 -0
- data/lib/no_response/models/shared/outcome.rbi +9 -0
- data/lib/no_response/models/shared/permissiondeniederrorcode.rb +18 -0
- data/lib/no_response/models/shared/permissiondeniederrorcode.rbi +9 -0
- data/lib/no_response/models/shared/phoneenrichment.rb +32 -0
- data/lib/no_response/models/shared/phoneenrichment.rbi +14 -0
- data/lib/no_response/models/shared/phoneenrichmentfields.rb +451 -0
- data/lib/no_response/models/shared/phoneenrichmentfields.rbi +212 -0
- data/lib/no_response/models/shared/platform.rb +18 -0
- data/lib/no_response/models/shared/platform.rbi +9 -0
- data/lib/no_response/models/shared/probleminvalidparam.rb +48 -0
- data/lib/no_response/models/shared/probleminvalidparam.rbi +26 -0
- data/lib/no_response/models/shared/ratelimiterrorcode.rb +18 -0
- data/lib/no_response/models/shared/ratelimiterrorcode.rbi +9 -0
- data/lib/no_response/models/shared/reasoncode.rb +52 -0
- data/lib/no_response/models/shared/reasoncode.rbi +9 -0
- data/lib/no_response/models/shared/reasonidentifier.rb +23 -0
- data/lib/no_response/models/shared/reasonidentifier.rbi +9 -0
- data/lib/no_response/models/shared/recommendation.rb +20 -0
- data/lib/no_response/models/shared/recommendation.rbi +9 -0
- data/lib/no_response/models/shared/responsemode.rb +16 -0
- data/lib/no_response/models/shared/responsemode.rbi +9 -0
- data/lib/no_response/models/shared/risk.rb +171 -0
- data/lib/no_response/models/shared/risk.rbi +80 -0
- data/lib/no_response/models/shared/riskconfidence.rb +20 -0
- data/lib/no_response/models/shared/riskconfidence.rbi +9 -0
- data/lib/no_response/models/shared/riskcoverage.rb +49 -0
- data/lib/no_response/models/shared/riskcoverage.rbi +26 -0
- data/lib/no_response/models/shared/riskdetails.rb +55 -0
- data/lib/no_response/models/shared/riskdetails.rbi +26 -0
- data/lib/no_response/models/shared/riskdetailsbreachname.rb +40 -0
- data/lib/no_response/models/shared/riskdetailsbreachname.rbi +20 -0
- data/lib/no_response/models/shared/riskdetailsphonename.rb +40 -0
- data/lib/no_response/models/shared/riskdetailsphonename.rbi +20 -0
- data/lib/no_response/models/shared/riskreason.rb +67 -0
- data/lib/no_response/models/shared/riskreason.rbi +26 -0
- data/lib/no_response/models/shared/risksummary.rb +73 -0
- data/lib/no_response/models/shared/risksummary.rbi +38 -0
- data/lib/no_response/models/shared/risksummaryemail.rb +55 -0
- data/lib/no_response/models/shared/risksummaryemail.rbi +26 -0
- data/lib/no_response/models/shared/risksummaryphone.rb +69 -0
- data/lib/no_response/models/shared/risksummaryphone.rbi +32 -0
- data/lib/no_response/models/shared/risksummaryusername.rb +41 -0
- data/lib/no_response/models/shared/risksummaryusername.rbi +20 -0
- data/lib/no_response/models/shared/scope.rb +21 -0
- data/lib/no_response/models/shared/scope.rbi +9 -0
- data/lib/no_response/models/shared/security.rb +32 -0
- data/lib/no_response/models/shared/security.rbi +14 -0
- data/lib/no_response/models/shared/signal.rb +149 -0
- data/lib/no_response/models/shared/signal.rbi +68 -0
- data/lib/no_response/models/shared/signaloutcome.rb +22 -0
- data/lib/no_response/models/shared/signaloutcome.rbi +9 -0
- data/lib/no_response/models/shared/social_profile.rb +23 -0
- data/lib/no_response/models/shared/social_profile.rbi +9 -0
- data/lib/no_response/models/shared/social_profile_union.rb +23 -0
- data/lib/no_response/models/shared/social_profile_union.rbi +9 -0
- data/lib/no_response/models/shared/status.rb +20 -0
- data/lib/no_response/models/shared/status.rbi +9 -0
- data/lib/no_response/models/shared/timezone.rb +23 -0
- data/lib/no_response/models/shared/timezone.rbi +9 -0
- data/lib/no_response/models/shared/timezone_union.rb +23 -0
- data/lib/no_response/models/shared/timezone_union.rbi +9 -0
- data/lib/no_response/models/shared/transport.rb +17 -0
- data/lib/no_response/models/shared/transport.rbi +9 -0
- data/lib/no_response/models/shared/website.rb +23 -0
- data/lib/no_response/models/shared/website.rbi +9 -0
- data/lib/no_response/models/shared/website_union.rb +23 -0
- data/lib/no_response/models/shared/website_union.rbi +9 -0
- data/lib/no_response/models/shared.rb +92 -0
- data/lib/no_response/noresponseclient.rb +110 -0
- data/lib/no_response/sdk_hooks/hooks.rb +97 -0
- data/lib/no_response/sdk_hooks/idempotency_key_hook.rb +25 -0
- data/lib/no_response/sdk_hooks/registration.rb +43 -0
- data/lib/no_response/sdk_hooks/types.rb +178 -0
- data/lib/no_response/sdkconfiguration.rb +107 -0
- data/lib/no_response/sdkconfiguration.rbi +83 -0
- data/lib/no_response/utils/forms.rb +230 -0
- data/lib/no_response/utils/headers.rb +80 -0
- data/lib/no_response/utils/query_params.rb +165 -0
- data/lib/no_response/utils/request_bodies.rb +77 -0
- data/lib/no_response/utils/retries.rb +137 -0
- data/lib/no_response/utils/security.rb +156 -0
- data/lib/no_response/utils/url.rb +122 -0
- data/lib/no_response/utils/utils.rb +243 -0
- data/lib/no_response/wait.rb +66 -0
- data/lib/no_response/webhooks.rb +177 -0
- data/lib/noresponse.rb +25 -0
- metadata +501 -0
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
# typed: true
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
require "faraday"
|
|
5
|
+
require "faraday/multipart"
|
|
6
|
+
require "faraday/retry"
|
|
7
|
+
require "sorbet-runtime"
|
|
8
|
+
|
|
9
|
+
require_relative "sdk_hooks/hooks"
|
|
10
|
+
require_relative "utils/retries"
|
|
11
|
+
|
|
12
|
+
module NoResponse
|
|
13
|
+
extend T::Sig
|
|
14
|
+
|
|
15
|
+
class NoResponseClient
|
|
16
|
+
extend T::Sig
|
|
17
|
+
|
|
18
|
+
attr_accessor :assessments, :keys
|
|
19
|
+
|
|
20
|
+
# Instantiates the SDK, configuring it with the provided parameters.
|
|
21
|
+
#
|
|
22
|
+
# @param client [Faraday::Connection, nil] The faraday HTTP client to use for all operations
|
|
23
|
+
# @param retry_config [::NoResponse::Utils::RetryConfig, nil] The retry configuration to use for all operations
|
|
24
|
+
# @param timeout_ms [Integer, nil] Request timeout in milliseconds for all operations
|
|
25
|
+
# @param security [Models::Shared::Security, nil] The security details required for authentication
|
|
26
|
+
# @param security_source [Proc{|| Models::Shared::Security, nil}] A function that returns security details required for authentication
|
|
27
|
+
# @param server_idx [Integer, nil] The index of the server to use for all operations
|
|
28
|
+
# @param server_url [String, nil] The server URL to use for all operations
|
|
29
|
+
# @param url_params [Hash{Symbol => String}, nil] Parameters to optionally template the server URL with
|
|
30
|
+
sig do
|
|
31
|
+
params(
|
|
32
|
+
client: T.nilable(Faraday::Connection),
|
|
33
|
+
retry_config: T.nilable(::NoResponse::Utils::RetryConfig),
|
|
34
|
+
timeout_ms: T.nilable(Integer),
|
|
35
|
+
api_key: T.nilable(::String),
|
|
36
|
+
security_source: T.nilable(T.proc.returns(Models::Shared::Security)),
|
|
37
|
+
server_idx: T.nilable(Integer),
|
|
38
|
+
server_url: T.nilable(String),
|
|
39
|
+
url_params: T.nilable(T::Hash[Symbol, String])
|
|
40
|
+
)
|
|
41
|
+
.void
|
|
42
|
+
end
|
|
43
|
+
def initialize(
|
|
44
|
+
client: nil,
|
|
45
|
+
retry_config: nil,
|
|
46
|
+
timeout_ms: nil,
|
|
47
|
+
api_key: nil,
|
|
48
|
+
security_source: nil,
|
|
49
|
+
server_idx: nil,
|
|
50
|
+
server_url: nil,
|
|
51
|
+
url_params: nil
|
|
52
|
+
)
|
|
53
|
+
|
|
54
|
+
connection_options = {
|
|
55
|
+
request: {
|
|
56
|
+
params_encoder: Faraday::FlatParamsEncoder
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
connection_options[:request][:timeout] = (timeout_ms.to_f / 1000) unless timeout_ms.nil?
|
|
60
|
+
|
|
61
|
+
client ||= Faraday.new(**connection_options) do |f|
|
|
62
|
+
f.request(:multipart, {flat_encode: true})
|
|
63
|
+
# f.response :logger, nil, { headers: true, bodies: true, errors: true }
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
if !server_url.nil?
|
|
67
|
+
if !url_params.nil?
|
|
68
|
+
server_url = Utils.template_url(server_url, url_params)
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
server_idx = 0 if server_idx.nil?
|
|
73
|
+
hooks = SDKHooks::Hooks.new
|
|
74
|
+
@sdk_configuration = SDKConfiguration.new(
|
|
75
|
+
client,
|
|
76
|
+
hooks,
|
|
77
|
+
retry_config,
|
|
78
|
+
timeout_ms,
|
|
79
|
+
api_key,
|
|
80
|
+
security_source,
|
|
81
|
+
server_url,
|
|
82
|
+
server_idx
|
|
83
|
+
)
|
|
84
|
+
@sdk_configuration = hooks.sdk_init(config: @sdk_configuration)
|
|
85
|
+
init_sdks
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
sig { void }
|
|
89
|
+
def init_sdks
|
|
90
|
+
@assessments = Assessments.new(@sdk_configuration)
|
|
91
|
+
@keys = Keys.new(@sdk_configuration)
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
sig { params(base_url: String, url_variables: T.nilable(T::Hash[Symbol, T.any(String, T::Enum)])).returns(String) }
|
|
95
|
+
def get_url(base_url:, url_variables: nil)
|
|
96
|
+
sd_base_url, sd_options = @sdk_configuration.get_server_details
|
|
97
|
+
|
|
98
|
+
if base_url.nil?
|
|
99
|
+
base_url = sd_base_url
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
if url_variables.nil?
|
|
103
|
+
url_variables = sd_options
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
return Utils.template_url(base_url, url_variables)
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
end
|
|
110
|
+
end
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
# typed: true
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
require_relative "./types"
|
|
5
|
+
require_relative "./registration"
|
|
6
|
+
|
|
7
|
+
module NoResponse
|
|
8
|
+
module SDKHooks
|
|
9
|
+
class Hooks
|
|
10
|
+
extend T::Sig
|
|
11
|
+
|
|
12
|
+
sig { void }
|
|
13
|
+
def initialize
|
|
14
|
+
@sdk_init_hooks = T.let([], T::Array[AbstractSDKHook])
|
|
15
|
+
@before_request_hooks = T.let([], T::Array[AbstractSDKHook])
|
|
16
|
+
@after_success_hooks = T.let([], T::Array[AbstractSDKHook])
|
|
17
|
+
@after_error_hooks = T.let([], T::Array[AbstractSDKHook])
|
|
18
|
+
Registration.init_hooks(self)
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
sig { params(hook: AbstractSDKHook).void }
|
|
22
|
+
def register_sdk_init_hook(hook)
|
|
23
|
+
@sdk_init_hooks << hook
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
sig { params(hook: AbstractSDKHook).void }
|
|
27
|
+
def register_before_request_hook(hook)
|
|
28
|
+
@before_request_hooks << hook
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
sig { params(hook: AbstractSDKHook).void }
|
|
32
|
+
def register_after_success_hook(hook)
|
|
33
|
+
@after_success_hooks << hook
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
sig { params(hook: AbstractSDKHook).void }
|
|
37
|
+
def register_after_error_hook(hook)
|
|
38
|
+
@after_error_hooks << hook
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
sig { params(config: SDKConfiguration).returns(SDKConfiguration) }
|
|
42
|
+
def sdk_init(config:)
|
|
43
|
+
@sdk_init_hooks.each do |hook|
|
|
44
|
+
config = hook.sdk_init(config: config)
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
return config
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
sig do
|
|
51
|
+
params(
|
|
52
|
+
hook_ctx: BeforeRequestHookContext,
|
|
53
|
+
request: Faraday::Request
|
|
54
|
+
)
|
|
55
|
+
.returns(Faraday::Request)
|
|
56
|
+
end
|
|
57
|
+
def before_request(hook_ctx:, request:)
|
|
58
|
+
@before_request_hooks.each do |hook|
|
|
59
|
+
request = hook.before_request(hook_ctx: hook_ctx, request: request)
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
request
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
sig do
|
|
66
|
+
params(
|
|
67
|
+
hook_ctx: AfterSuccessHookContext,
|
|
68
|
+
response: Faraday::Response
|
|
69
|
+
)
|
|
70
|
+
.returns(Faraday::Response)
|
|
71
|
+
end
|
|
72
|
+
def after_success(hook_ctx:, response:)
|
|
73
|
+
@after_success_hooks.each do |hook|
|
|
74
|
+
response = hook.after_success(hook_ctx: hook_ctx, response: response)
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
response
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
sig do
|
|
81
|
+
params(
|
|
82
|
+
error: T.nilable(StandardError),
|
|
83
|
+
hook_ctx: AfterErrorHookContext,
|
|
84
|
+
response: T.nilable(Faraday::Response)
|
|
85
|
+
)
|
|
86
|
+
.returns(T.nilable(Faraday::Response))
|
|
87
|
+
end
|
|
88
|
+
def after_error(error:, hook_ctx:, response:)
|
|
89
|
+
@after_error_hooks.each do |hook|
|
|
90
|
+
response = hook.after_error(error: error, hook_ctx: hook_ctx, response: response)
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
response
|
|
94
|
+
end
|
|
95
|
+
end
|
|
96
|
+
end
|
|
97
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# typed: true
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
require 'securerandom'
|
|
5
|
+
|
|
6
|
+
module NoResponse
|
|
7
|
+
module SDKHooks
|
|
8
|
+
# Sends a fresh UUID as the Idempotency-Key when the caller gave none. The
|
|
9
|
+
# hook runs once per call, before any retry, so every attempt carries the
|
|
10
|
+
# same key.
|
|
11
|
+
class IdempotencyKeyHook < AbstractSDKHook
|
|
12
|
+
extend T::Sig
|
|
13
|
+
|
|
14
|
+
OPERATIONS = %w[createAssessment recordAssessmentOutcome].freeze
|
|
15
|
+
|
|
16
|
+
sig { override.params(hook_ctx: BeforeRequestHookContext, request: Faraday::Request).returns(Faraday::Request) }
|
|
17
|
+
def before_request(hook_ctx:, request:)
|
|
18
|
+
if OPERATIONS.include?(hook_ctx.operation_id) && !request.headers.key?('Idempotency-Key')
|
|
19
|
+
request.headers['Idempotency-Key'] = SecureRandom.uuid
|
|
20
|
+
end
|
|
21
|
+
request
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# typed: true
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
#
|
|
5
|
+
# This file is only ever generated once on the first generation and then is free to be modified.
|
|
6
|
+
# Any hooks you wish to add should be registered in the init_hooks method.
|
|
7
|
+
#
|
|
8
|
+
# Hooks are registered per SDK instance, and are valid for the lifetime of the SDK instance.
|
|
9
|
+
#
|
|
10
|
+
|
|
11
|
+
require_relative "./types"
|
|
12
|
+
# Hand-written helpers beside the generated client, loaded with the gem.
|
|
13
|
+
require_relative "../webhooks"
|
|
14
|
+
require_relative "../wait"
|
|
15
|
+
require_relative "../late_results"
|
|
16
|
+
require_relative "idempotency_key_hook"
|
|
17
|
+
require_relative "../models/errors/apistatuserror"
|
|
18
|
+
require_relative "../auth"
|
|
19
|
+
require_relative "../issued_credential"
|
|
20
|
+
|
|
21
|
+
module NoResponse
|
|
22
|
+
module SDKHooks
|
|
23
|
+
class Registration
|
|
24
|
+
extend T::Sig
|
|
25
|
+
|
|
26
|
+
sig do
|
|
27
|
+
params(
|
|
28
|
+
hooks: Hooks
|
|
29
|
+
)
|
|
30
|
+
.void
|
|
31
|
+
end
|
|
32
|
+
def self.init_hooks(hooks)
|
|
33
|
+
hooks.register_before_request_hook(IdempotencyKeyHook.new)
|
|
34
|
+
# example_hook = ExampleHook.new
|
|
35
|
+
|
|
36
|
+
# hooks.register_sdk_init_hook example_hook
|
|
37
|
+
# hooks.register_before_request_hook example_hook
|
|
38
|
+
# hooks.register_after_error_hook example_hook
|
|
39
|
+
# hooks.register_after_success_hook example_hook
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
# typed: true
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
require_relative "../sdkconfiguration"
|
|
5
|
+
|
|
6
|
+
module NoResponse
|
|
7
|
+
module SDKHooks
|
|
8
|
+
class HookContext
|
|
9
|
+
extend T::Sig
|
|
10
|
+
|
|
11
|
+
sig { returns(SDKConfiguration) }
|
|
12
|
+
attr_accessor :config
|
|
13
|
+
|
|
14
|
+
sig { returns(String) }
|
|
15
|
+
attr_accessor :base_url
|
|
16
|
+
|
|
17
|
+
sig { returns(T.nilable(T::Array[String])) }
|
|
18
|
+
attr_accessor :oauth2_scopes
|
|
19
|
+
|
|
20
|
+
sig { returns(String) }
|
|
21
|
+
attr_accessor :operation_id
|
|
22
|
+
|
|
23
|
+
sig { returns(T.nilable(T.proc.returns(T.untyped))) }
|
|
24
|
+
attr_accessor :security_source
|
|
25
|
+
|
|
26
|
+
sig do
|
|
27
|
+
params(
|
|
28
|
+
config: SDKConfiguration,
|
|
29
|
+
base_url: String,
|
|
30
|
+
oauth2_scopes: T.nilable(T::Array[String]),
|
|
31
|
+
operation_id: String,
|
|
32
|
+
security_source: T.nilable(T.proc.returns(T.untyped))
|
|
33
|
+
)
|
|
34
|
+
.void
|
|
35
|
+
end
|
|
36
|
+
def initialize(config:, base_url:, oauth2_scopes:, operation_id:, security_source:)
|
|
37
|
+
@config = T.let(config, SDKConfiguration)
|
|
38
|
+
@base_url = T.let(base_url, String)
|
|
39
|
+
@oauth2_scopes = T.let(oauth2_scopes, T.nilable(T::Array[String]))
|
|
40
|
+
@operation_id = T.let(operation_id, String)
|
|
41
|
+
@security_source = T.let(security_source, T.nilable(T.proc.returns(T.untyped)))
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
class BeforeRequestHookContext < HookContext
|
|
46
|
+
extend T::Sig
|
|
47
|
+
|
|
48
|
+
sig do
|
|
49
|
+
params(
|
|
50
|
+
hook_ctx: HookContext
|
|
51
|
+
)
|
|
52
|
+
.void
|
|
53
|
+
end
|
|
54
|
+
def initialize(hook_ctx:)
|
|
55
|
+
super(
|
|
56
|
+
config: hook_ctx.config,
|
|
57
|
+
base_url: hook_ctx.base_url,
|
|
58
|
+
operation_id: hook_ctx.operation_id,
|
|
59
|
+
oauth2_scopes: hook_ctx.oauth2_scopes,
|
|
60
|
+
security_source: hook_ctx.security_source
|
|
61
|
+
)
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
class AfterSuccessHookContext < HookContext
|
|
66
|
+
extend T::Sig
|
|
67
|
+
|
|
68
|
+
sig do
|
|
69
|
+
params(
|
|
70
|
+
hook_ctx: HookContext
|
|
71
|
+
)
|
|
72
|
+
.void
|
|
73
|
+
end
|
|
74
|
+
def initialize(hook_ctx:)
|
|
75
|
+
super(
|
|
76
|
+
config: hook_ctx.config,
|
|
77
|
+
base_url: hook_ctx.base_url,
|
|
78
|
+
operation_id: hook_ctx.operation_id,
|
|
79
|
+
oauth2_scopes: hook_ctx.oauth2_scopes,
|
|
80
|
+
security_source: hook_ctx.security_source
|
|
81
|
+
)
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
class AfterErrorHookContext < HookContext
|
|
86
|
+
extend T::Sig
|
|
87
|
+
|
|
88
|
+
sig do
|
|
89
|
+
params(
|
|
90
|
+
hook_ctx: HookContext
|
|
91
|
+
)
|
|
92
|
+
.void
|
|
93
|
+
end
|
|
94
|
+
def initialize(hook_ctx:)
|
|
95
|
+
super(
|
|
96
|
+
config: hook_ctx.config,
|
|
97
|
+
base_url: hook_ctx.base_url,
|
|
98
|
+
operation_id: hook_ctx.operation_id,
|
|
99
|
+
oauth2_scopes: hook_ctx.oauth2_scopes,
|
|
100
|
+
security_source: hook_ctx.security_source
|
|
101
|
+
)
|
|
102
|
+
end
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
module AbstractSDKInitHook
|
|
106
|
+
extend T::Sig
|
|
107
|
+
extend T::Helpers
|
|
108
|
+
abstract!
|
|
109
|
+
|
|
110
|
+
sig { overridable.params(config: SDKConfiguration).returns(SDKConfiguration) }
|
|
111
|
+
def sdk_init(config:)
|
|
112
|
+
Kernel.raise NotImplementedError.new
|
|
113
|
+
end
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
module AbstractBeforeRequestHook
|
|
117
|
+
extend T::Sig
|
|
118
|
+
extend T::Helpers
|
|
119
|
+
abstract!
|
|
120
|
+
|
|
121
|
+
sig do
|
|
122
|
+
overridable
|
|
123
|
+
.params(
|
|
124
|
+
hook_ctx: BeforeRequestHookContext,
|
|
125
|
+
request: Faraday::Request
|
|
126
|
+
)
|
|
127
|
+
.returns(Faraday::Request)
|
|
128
|
+
end
|
|
129
|
+
def before_request(hook_ctx:, request:)
|
|
130
|
+
Kernel.raise NotImplementedError.new
|
|
131
|
+
end
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
module AbstractAfterSuccessHook
|
|
135
|
+
extend T::Sig
|
|
136
|
+
extend T::Helpers
|
|
137
|
+
abstract!
|
|
138
|
+
|
|
139
|
+
sig do
|
|
140
|
+
overridable
|
|
141
|
+
.params(
|
|
142
|
+
hook_ctx: AfterSuccessHookContext,
|
|
143
|
+
response: Faraday::Response
|
|
144
|
+
)
|
|
145
|
+
.returns(Faraday::Response)
|
|
146
|
+
end
|
|
147
|
+
def after_success(hook_ctx:, response:)
|
|
148
|
+
Kernel.raise NotImplementedError.new
|
|
149
|
+
end
|
|
150
|
+
end
|
|
151
|
+
|
|
152
|
+
module AbstractAfterErrorHook
|
|
153
|
+
extend T::Sig
|
|
154
|
+
extend T::Helpers
|
|
155
|
+
abstract!
|
|
156
|
+
|
|
157
|
+
sig do
|
|
158
|
+
overridable
|
|
159
|
+
.params(
|
|
160
|
+
error: T.nilable(StandardError),
|
|
161
|
+
hook_ctx: AfterErrorHookContext,
|
|
162
|
+
response: T.nilable(Faraday::Response)
|
|
163
|
+
)
|
|
164
|
+
.returns(T.nilable(Faraday::Response))
|
|
165
|
+
end
|
|
166
|
+
def after_error(error:, hook_ctx:, response:)
|
|
167
|
+
Kernel.raise NotImplementedError.new
|
|
168
|
+
end
|
|
169
|
+
end
|
|
170
|
+
|
|
171
|
+
class AbstractSDKHook
|
|
172
|
+
include AbstractSDKInitHook
|
|
173
|
+
include AbstractBeforeRequestHook
|
|
174
|
+
include AbstractAfterSuccessHook
|
|
175
|
+
include AbstractAfterErrorHook
|
|
176
|
+
end
|
|
177
|
+
end
|
|
178
|
+
end
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
# typed: true
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
require "faraday"
|
|
5
|
+
require "faraday/multipart"
|
|
6
|
+
require "faraday/retry"
|
|
7
|
+
require "sorbet-runtime"
|
|
8
|
+
|
|
9
|
+
require_relative "sdk_hooks/hooks"
|
|
10
|
+
require_relative "utils/retries"
|
|
11
|
+
|
|
12
|
+
module NoResponse
|
|
13
|
+
extend T::Sig
|
|
14
|
+
|
|
15
|
+
SERVERS = T.let(
|
|
16
|
+
[
|
|
17
|
+
# 1 - Production
|
|
18
|
+
"https://api.noresponse.org"
|
|
19
|
+
].freeze,
|
|
20
|
+
T::Array[String]
|
|
21
|
+
)
|
|
22
|
+
# Contains the list of servers available to the SDK
|
|
23
|
+
|
|
24
|
+
class SDKConfiguration
|
|
25
|
+
extend T::Sig
|
|
26
|
+
|
|
27
|
+
sig { returns(T.nilable(Faraday::Connection)) }
|
|
28
|
+
attr_accessor :client
|
|
29
|
+
|
|
30
|
+
sig { returns(::NoResponse::SDKHooks::Hooks) }
|
|
31
|
+
attr_accessor :hooks
|
|
32
|
+
|
|
33
|
+
sig { returns(T.nilable(::NoResponse::Utils::RetryConfig)) }
|
|
34
|
+
attr_accessor :retry_config
|
|
35
|
+
|
|
36
|
+
sig { returns(T.nilable(Float)) }
|
|
37
|
+
attr_accessor :timeout
|
|
38
|
+
|
|
39
|
+
sig { returns(T.nilable(T.proc.returns(T.nilable(Models::Shared::Security)))) }
|
|
40
|
+
attr_accessor :security_source
|
|
41
|
+
|
|
42
|
+
sig { returns(T.nilable(String)) }
|
|
43
|
+
attr_accessor :server_url
|
|
44
|
+
|
|
45
|
+
sig { returns(T.nilable(Integer)) }
|
|
46
|
+
attr_accessor :server_idx
|
|
47
|
+
|
|
48
|
+
sig { returns(String) }
|
|
49
|
+
attr_accessor :language
|
|
50
|
+
|
|
51
|
+
sig { returns(String) }
|
|
52
|
+
attr_accessor :openapi_doc_version
|
|
53
|
+
|
|
54
|
+
sig { returns(String) }
|
|
55
|
+
attr_accessor :sdk_version
|
|
56
|
+
|
|
57
|
+
sig { returns(String) }
|
|
58
|
+
attr_accessor :gen_version
|
|
59
|
+
|
|
60
|
+
sig { returns(String) }
|
|
61
|
+
attr_accessor :user_agent
|
|
62
|
+
|
|
63
|
+
sig do
|
|
64
|
+
params(
|
|
65
|
+
client: T.nilable(Faraday::Connection),
|
|
66
|
+
hooks: ::NoResponse::SDKHooks::Hooks,
|
|
67
|
+
retry_config: T.nilable(::NoResponse::Utils::RetryConfig),
|
|
68
|
+
timeout_ms: T.nilable(Integer),
|
|
69
|
+
api_key: T.nilable(::String),
|
|
70
|
+
security_source: T.nilable(T.proc.returns(Models::Shared::Security)),
|
|
71
|
+
server_url: T.nilable(String),
|
|
72
|
+
server_idx: T.nilable(Integer)
|
|
73
|
+
)
|
|
74
|
+
.void
|
|
75
|
+
end
|
|
76
|
+
def initialize(client, hooks, retry_config, timeout_ms, api_key, security_source, server_url, server_idx)
|
|
77
|
+
@client = client
|
|
78
|
+
@hooks = hooks
|
|
79
|
+
@retry_config = retry_config
|
|
80
|
+
@server_url = server_url
|
|
81
|
+
@timeout = (timeout_ms.to_f / 1000) unless timeout_ms.nil?
|
|
82
|
+
@server_idx = server_idx.nil? ? 0 : server_idx
|
|
83
|
+
if @server_idx.negative? || @server_idx >= SERVERS.length
|
|
84
|
+
raise StandardError, "Invalid server index #{server_idx}"
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
if !security_source.nil?
|
|
88
|
+
@security_source = security_source
|
|
89
|
+
elsif !api_key.nil?
|
|
90
|
+
@security_source = -> { Models::Shared::Security.new(api_key: api_key) }
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
@language = "ruby"
|
|
94
|
+
@openapi_doc_version = "1"
|
|
95
|
+
@sdk_version = "2.0.17"
|
|
96
|
+
@gen_version = "internal"
|
|
97
|
+
@user_agent = "noresponse-sdk/ruby 2.0.17 internal 1 noresponse"
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
sig { returns([String, T::Hash[Symbol, String]]) }
|
|
101
|
+
def get_server_details
|
|
102
|
+
return [@server_url.delete_suffix("/"), {}] if !@server_url.nil?
|
|
103
|
+
@server_idx = T.must(@server_idx)
|
|
104
|
+
[T.must(SERVERS[@server_idx]), {}]
|
|
105
|
+
end
|
|
106
|
+
end
|
|
107
|
+
end
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
# typed: true
|
|
2
|
+
|
|
3
|
+
class NoResponse::SDKConfiguration
|
|
4
|
+
extend ::Crystalline::MetadataFields::ClassMethods
|
|
5
|
+
|
|
6
|
+
def client
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def client=(client)
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def gen_version
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def gen_version=(gen_version)
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def hooks
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def hooks=(hooks)
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def language
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def language=(language)
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def openapi_doc_version
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def openapi_doc_version=(openapi_doc_version)
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def retry_config
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def retry_config=(retry_config)
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def sdk_version
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def sdk_version=(sdk_version)
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def security_source
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def security_source=(security_source)
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def server_idx
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def server_idx=(server_idx)
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
def server_params
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
def server_params=(server_params)
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
def server_url
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
def server_url=(server_url)
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
def timeout
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
def timeout=(timeout)
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
def user_agent
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
def user_agent=(user_agent)
|
|
82
|
+
end
|
|
83
|
+
end
|