lib/base.rb in sendgrid_webapi-0.0.8 vs lib/base.rb in sendgrid_webapi-0.1.0
- old
+ new
@@ -1,39 +1,70 @@
require 'faraday_middleware'
module SendGridWebApi
class Base
- attr_accessor :api_user, :api_key
+ attr_accessor :api_key
- def initialize api_user, api_key
- @api_user = api_user
+ def initialize api_key
@api_key = api_key
end
def make_request_url url, options
"#{url}?#{builder_options(options)}"
end
def builder_options options
- options.merge!(:api_user => @api_user, :api_key => @api_key)
to_query(options)
end
def query_api url, options
- session.get(make_request_url(url, options)).body
+ headers = options.delete(:headers)
+ (session.get(make_request_url(url, options)) do |req|
+ req.headers.merge!(headers) unless headers.nil?
+ end).body
end
def query_post_api url, options
- builder_options(options)
- session.post(url, builder_options(options)).body
+ headers = options.delete(:headers)
+ (session.post(url, builder_options(options)) do |req|
+ req.headers.merge!(headers) unless headers.nil?
+ end).body
end
+ 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
+
+ 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
+
+ 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
+
def to_query(options)
Faraday::Utils.build_nested_query(options)
end
def session
- @connection ||= ::Faraday.new base_url do |conn|
+ @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