class Mailgun::Client

def initialize(api_key = Mailgun.api_key,

def initialize(api_key = Mailgun.api_key,
               api_host = Mailgun.api_host || 'api.mailgun.net',
               api_version = Mailgun.api_version  || 'v3',
               ssl = true,
               test_mode = false,
               timeout = nil,
               proxy_url = Mailgun.proxy_url)
  endpoint = endpoint_generator(api_host, api_version, ssl)
  request_options = {
    url: endpoint,
    proxy: Mailgun.proxy_url,
    ssl: {verify: ssl},
    headers: {
               'User-Agent' => "mailgun-sdk-ruby/#{Mailgun::VERSION}",
               'Accept' =>'*/*'
              }
  }
  request_options.merge!(request: {timeout: timeout}) if timeout
  @http_client =  Faraday.new(request_options) do |conn|
    conn.request :multipart
    conn.request :authorization, :basic, 'api', api_key
    conn.request :url_encoded
    conn.response :raise_error, include_request: true
    conn.adapter Faraday.default_adapter
    conn.options.params_encoder = Faraday::FlatParamsEncoder
  end
  @test_mode = test_mode
  @api_version = api_version
end