class DingSDK::Ding

def config_security(security)

def config_security(security)
  @sdk_configuration.security = security
end

def config_server(server_idx)

def config_server(server_idx)
  raise StandardError, "Invalid server index #{server_idx}" if server_idx.negative? || server_idx >= SERVERS.length
  @sdk_configuration.server_idx = server_idx
  init_sdks
end

def config_server_url(server_url)

def config_server_url(server_url)
  @sdk_configuration.server_url = server_url
  init_sdks
end

def init_sdks

def init_sdks
  @otp = Otp.new(@sdk_configuration)
  @lookup = Lookup.new(@sdk_configuration)
end

def initialize(client: nil,

def initialize(client: nil,
               security: nil,
               server_idx: nil,
               server_url: nil,
               url_params: nil)
  ## Instantiates the SDK configuring it with the provided parameters.
  # @param [Faraday::Request] client The faraday HTTP client to use for all operations
  # @param [Shared::Security] security The security details required for authentication
  # @param [::Integer] server_idx The index of the server to use for all operations
  # @param [::String] server_url The server URL to use for all operations
  # @param [::Hash<::Symbol, ::String>] url_params Parameters to optionally template the server URL with
  if client.nil?
    client = Faraday.new(request: {
                      params_encoder: Faraday::FlatParamsEncoder
                    }) do |f|
      f.request :multipart, {}
      # f.response :logger
    end
  end
  if !server_url.nil?
    if !url_params.nil?
      server_url = Utils.template_url(server_url, url_params)
    end
  end
  server_idx = 0 if server_idx.nil?
  @sdk_configuration = SDKConfiguration.new(client, security, server_url, server_idx)
  init_sdks
end