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