class SendGridWebApi::Base

Attributes

api_key[RW]

Public Class Methods

new(api_key) click to toggle source
# File lib/base.rb, line 7
def initialize api_key
  @api_key  = api_key
end

Public Instance Methods

builder_options(options) click to toggle source
# File lib/base.rb, line 15
def builder_options options
  to_query(options)
end
make_request_url(url, options) click to toggle source
# File lib/base.rb, line 11
def make_request_url url, options
  "#{url}?#{builder_options(options)}"
end
query_api(url, options) click to toggle source
# File lib/base.rb, line 19
def query_api url, options
  headers = options.delete(:headers)
  (session.get(make_request_url(url, options)) do |req|
    req.headers.merge!(headers) unless headers.nil?
  end).body
end
query_delete_api(url, options) click to toggle source
# File lib/base.rb, line 51
def query_delete_api url, options
  headers = options.delete(:headers)
  (session.delete(make_request_url(url, options)) do |req|
    req.headers.merge!(headers) unless headers.nil?
  end).body
end
query_patch_api(url, options) click to toggle source
# File lib/base.rb, line 42
def query_patch_api url, options
  headers = options.delete(:headers)
  (session.patch(url) do |req|
    req.headers[:content_type] = 'application/json'
    req.headers.merge!(headers) unless headers.nil?
    req.body = options.to_json
  end).body
end
query_post_api(url, options) click to toggle source
# File lib/base.rb, line 26
def query_post_api url, options
  headers = options.delete(:headers)
  (session.post(url, builder_options(options)) do |req|
    req.headers.merge!(headers) unless headers.nil?
  end).body
end
query_post_json_api(url, options) click to toggle source
# File lib/base.rb, line 33
def query_post_json_api url, options
  headers = options.delete(:headers)
  (session.post(url) do |req|
    req.headers[:content_type] = 'application/json'
    req.headers.merge!(headers) unless headers.nil?
    req.body = options.to_json
  end).body
end
session() click to toggle source
# File lib/base.rb, line 62
def session
  @connection ||= ::Faraday.new(
    url: base_url,
    headers: {"Authorization" => "Bearer #{@api_key}"}
  ) do |conn|
    # Forces the connection request and response to be JSON even though
    # Sendgrids API headers do not specify the content type is JSON
    conn.request :url_encoded
    conn.response :json #, :content_type => /\bjson$/
    conn.adapter Faraday.default_adapter
  end
end
to_query(options) click to toggle source
# File lib/base.rb, line 58
def to_query(options)
  Faraday::Utils.build_nested_query(options)
end