Files
plexruby/lib/plex_ruby_sdk/sdk_hooks/hooks.rb

104 lines
2.7 KiB
Ruby

# Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
# typed: true
# frozen_string_literal: true
require_relative './registration'
require_relative './types'
require 'sorbet-runtime'
module PlexRubySDK
module SDKHooks
class Hooks
extend T::Sig
sig { void }
def initialize
@sdk_init_hooks = T.let([], T::Array[AbstractSDKInitHook])
@before_request_hooks = T.let([], T::Array[AbstractBeforeRequestHook])
@after_success_hooks = T.let([], T::Array[AbstractAfterSuccessHook])
@after_error_hooks = T.let([], T::Array[AbstractAfterErrorHook])
Registration.init_hooks self
end
sig { params(hook: AbstractSDKInitHook).void }
def register_sdk_init_hook(hook)
@sdk_init_hooks << hook
end
sig { params(hook: AbstractBeforeRequestHook).void }
def register_before_request_hook(hook)
@before_request_hooks << hook
end
sig { params(hook: AbstractAfterSuccessHook).void }
def register_after_success_hook(hook)
@after_success_hooks << hook
end
sig { params(hook: AbstractAfterErrorHook).void }
def register_after_error_hook(hook)
@after_error_hooks << hook
end
sig do
params(
base_url: String,
client: Faraday::Connection
).returns([String, Faraday::Connection])
end
def sdk_init(base_url:, client:)
@sdk_init_hooks.each do |hook|
base_url, client = hook.sdk_init(base_url: base_url, client: client)
end
return base_url, client
end
sig do
params(
hook_ctx: BeforeRequestHookContext,
request: Faraday::Request
).returns(Faraday::Request)
end
def before_request(hook_ctx:, request:)
@before_request_hooks.each do |hook|
request = hook.before_request(hook_ctx: hook_ctx, request: request)
end
request
end
sig do
params(
hook_ctx: AfterSuccessHookContext,
response: Faraday::Response
).returns(Faraday::Response)
end
def after_success(hook_ctx:, response:)
@after_success_hooks.each do |hook|
response = hook.after_success(hook_ctx: hook_ctx, response: response)
end
response
end
sig do
params(
error: T.nilable(StandardError),
hook_ctx: AfterErrorHookContext,
response: T.nilable(Faraday::Response)
).returns(T.nilable(Faraday::Response))
end
def after_error(error:, hook_ctx:, response:)
@after_error_hooks.each do |hook|
response = hook.after_error(error: error, hook_ctx: hook_ctx, response: response)
end
response
end
end
end
end