module SparkPost::Request

Public Class Methods

configure_http(uri) click to toggle source
# File lib/sparkpost/request.rb, line 34
def configure_http(uri)
  http = Net::HTTP.new(uri.host, uri.port)
  http.use_ssl = true
  http
end
configure_request(uri, headers, data, verb) click to toggle source
# File lib/sparkpost/request.rb, line 40
def configure_request(uri, headers, data, verb)
  req = case verb
        when 'GET'
          Net::HTTP::Get.new(uri.path, headers)
        when 'PUT'
          Net::HTTP::Put.new(uri.path, headers)
        when 'DELETE'
          Net::HTTP::Delete.new(uri.path, headers)
        else
          Net::HTTP::Post.new(uri.path, headers)
        end

  req.body = JSON.generate(data) if data.present?
  req
end
process_response(response) click to toggle source
# File lib/sparkpost/request.rb, line 56
def process_response(response)
  response = JSON.parse(response.body)
  if response['errors']
    raise SparkPost::DeliveryException, response['errors']
  else
    response['results']
  end
end
request(url, api_key, data, verb = 'POST') click to toggle source
# File lib/sparkpost/request.rb, line 9
def request(url, api_key, data, verb = 'POST')
  uri = URI.parse(url)
  http = configure_http(uri)
  headers = {
    'User-Agent' => 'ruby-sparkpost/' + VERSION,
    'Content-Type' => 'application/json',
    'Authorization' => api_key
  }
  req = configure_request(uri, headers, data, verb)
  process_response(http.request(req))
end

Public Instance Methods

endpoint(subpath = nil, params = {}) click to toggle source
# File lib/sparkpost/request.rb, line 21
def endpoint(subpath = nil, params = {})
  url = String.new(@base_endpoint)
  if subpath
    url << '/' unless subpath.start_with?('/')
    url << subpath
  end
  if params && params.any?
    url << '?'
    url << params.to_a.map { |x| "#{x[0]}=#{x[1]}" }.join('&')
  end
  url
end

Private Instance Methods

configure_http(uri) click to toggle source
# File lib/sparkpost/request.rb, line 34
def configure_http(uri)
  http = Net::HTTP.new(uri.host, uri.port)
  http.use_ssl = true
  http
end
configure_request(uri, headers, data, verb) click to toggle source
# File lib/sparkpost/request.rb, line 40
def configure_request(uri, headers, data, verb)
  req = case verb
        when 'GET'
          Net::HTTP::Get.new(uri.path, headers)
        when 'PUT'
          Net::HTTP::Put.new(uri.path, headers)
        when 'DELETE'
          Net::HTTP::Delete.new(uri.path, headers)
        else
          Net::HTTP::Post.new(uri.path, headers)
        end

  req.body = JSON.generate(data) if data.present?
  req
end
process_response(response) click to toggle source
# File lib/sparkpost/request.rb, line 56
def process_response(response)
  response = JSON.parse(response.body)
  if response['errors']
    raise SparkPost::DeliveryException, response['errors']
  else
    response['results']
  end
end
request(url, api_key, data, verb = 'POST') click to toggle source
# File lib/sparkpost/request.rb, line 9
def request(url, api_key, data, verb = 'POST')
  uri = URI.parse(url)
  http = configure_http(uri)
  headers = {
    'User-Agent' => 'ruby-sparkpost/' + VERSION,
    'Content-Type' => 'application/json',
    'Authorization' => api_key
  }
  req = configure_request(uri, headers, data, verb)
  process_response(http.request(req))
end