class SaasRunner::Client

Attributes

api_host[R]
api_key[R]

Public Class Methods

new(options = {}) click to toggle source
# File lib/saas_runner/client.rb, line 5
def initialize(options = {})
  @api_key = options.fetch(:api_key)
  @api_host = options.fetch(:api_host, 'api.saasrunner.com')
end

Public Instance Methods

activations() click to toggle source
# File lib/saas_runner/client.rb, line 21
def activations
  @activations ||= Resource::Activation.new(self)
end
delete(path, params) click to toggle source
# File lib/saas_runner/client.rb, line 37
def delete(path, params)
  request(:delete, path, params)
end
events() click to toggle source
# File lib/saas_runner/client.rb, line 25
def events
  @events ||= Resource::Event.new(self)
end
get(path, params) click to toggle source
# File lib/saas_runner/client.rb, line 29
def get(path, params)
  request(:get, path, params)
end
post(path, body) click to toggle source
# File lib/saas_runner/client.rb, line 33
def post(path, body)
  request(:post, path, {}, body)
end
subscribers() click to toggle source

Public: Access the subscribers resource

Returns a Resource::Subscriber

# File lib/saas_runner/client.rb, line 13
def subscribers
  @subscribers ||= Resource::Subscriber.new(self)
end
transactions() click to toggle source
# File lib/saas_runner/client.rb, line 17
def transactions
  @transactions ||= Resource::Transaction.new(self)
end

Private Instance Methods

connection() click to toggle source
# File lib/saas_runner/client.rb, line 53
def connection
  @connection ||= Faraday.new(url: "http://#{api_host}") do |builder|
    builder.request :url_encoded

    builder.use Faraday::Response::RaiseResponseError

    builder.use FaradayMiddleware::Mashify
    builder.use FaradayMiddleware::ParseJson, content_type: /\bjson$/

    builder.adapter :net_http
  end
end
request(method, path, params = {}, body = {}) click to toggle source
# File lib/saas_runner/client.rb, line 43
def request(method, path, params = {}, body = {})
  connection.send(method) do |request|
    request.headers['X-API-Key'] = api_key
    request.params = params
    request.body = body

    request.url(path)
  end
end