class MailerLite::Connection

A class responsible for connecting to MailerLite API and making requests.

Attributes

client[R]

Public Class Methods

new(client) click to toggle source
# File lib/mailerlite/connection.rb, line 17
def initialize(client)
  @client = client
end

Public Instance Methods

delete(path, options = {}) click to toggle source
# File lib/mailerlite/connection.rb, line 33
def delete(path, options = {})
  request(:delete, path, options).body
end
get(path, options = {}) click to toggle source
# File lib/mailerlite/connection.rb, line 21
def get(path, options = {})
  request(:get, path, options).body
end
post(path, options = {}) click to toggle source
# File lib/mailerlite/connection.rb, line 29
def post(path, options = {})
  request(:post, path, {}, options).body
end
put(path, options = {}) click to toggle source
# File lib/mailerlite/connection.rb, line 25
def put(path, options = {})
  request(:put, path, {}, options).body
end

Private Instance Methods

connection() click to toggle source
# File lib/mailerlite/connection.rb, line 46
def connection
  conn_opts = {
    url: client.config.url,
    builder: middleware,
    headers: headers
  }
  timeout = client.config.timeout
  conn_opts[:request] = { timeout: timeout } unless timeout.nil?

  Faraday.new(conn_opts)
end
headers() click to toggle source
# File lib/mailerlite/connection.rb, line 58
def headers
  headers = {
    'User-Agent' => client.config.user_agent,
    'Content-Type' => 'application/json'
  }

  headers['X-MailerLite-ApiKey'] = client.config.api_key if client.config.api_key

  headers
end
middleware() click to toggle source
# File lib/mailerlite/connection.rb, line 69
def middleware
  @middleware ||= Faraday::RackBuilder.new do |builder|
    builder.request :json

    builder.use FaradayMiddleware::FollowRedirects
    builder.use FaradayMiddleware::Mashify, mash_class: MailerLite::Mash
    builder.use MailerLite::Middleware::UnderscoreKeys
    builder.use MailerLite::Middleware::RaiseError
    builder.use FaradayMiddleware::ParseJson
    builder.use MailerLite::Middleware::FixUnparsedJson

    builder.adapter Faraday.default_adapter
  end
end
request(method, path, query_params = {}, body_params = {}) click to toggle source
# File lib/mailerlite/connection.rb, line 39
def request(method, path, query_params = {}, body_params = {})
  connection.send(method, path) do |request|
    request.params = query_params unless query_params.empty?
    request.body = body_params.to_json unless body_params.empty?
  end
end