# typed: ignore # Copyright (c) 2015 Sqreen. All Rights Reserved. # Please refer to our terms for more information: https://www.sqreen.com/terms.html require 'sqreen/kit/configuration' require 'sqreen/kit/retry_policy' require 'sqreen/kit/http_client' require 'sqreen/kit/http_client/authentication_error' require 'sqreen/kit/signals/batch_collector' require 'sqreen/kit/signals/auth_signals_client' require 'sqreen/kit/signals/signals_client' module Sqreen; end module Sqreen module Kit # Factories using the global configuration class << self def version @version ||= Gem.loaded_specs['sqreen-kit'].version end def auth_signals_client @auth_signals_client ||= Signals::AuthSignalsClient.new( signals_client, session_key: Configuration.session_key, api_key: Configuration.api_key, app_name: Configuration.app_name, ) end def signals_client @signals_client ||= Signals::SignalsClient.new(http_client) end def batch_collector @batch_collector ||= Signals::BatchCollector.new( auth_signals_client, flush_size: Configuration.batch_flush_size, max_batch_size: Configuration.batch_max_size, max_delay_s: Configuration.batch_max_delay_s, ) end def reset @auth_signals_client = nil @signals_client = nil @batch_collector = nil @http_client = nil @retry_policy = nil end private def http_client @http_client ||= HttpClient.new(Configuration.ingestion_url, retry_policy, proxy_address: Configuration.proxy_address, proxy_port: Configuration.proxy_port, proxy_user: Configuration.proxy_user, proxy_pass: Configuration.proxy_pass, connect_timeout: Configuration.connect_timeout, read_timeout: Configuration.read_timeout) end def retry_policy @retry_policy ||= RetryPolicy.new( max_retries: Configuration.retry_max_retries, wait_s: Configuration.retry_max_retries, fatal_exceptions: [Sqreen::Kit::HttpClient::AuthenticationError], ) end end end end