module SendGrid4r::REST::Request

SendGrid Web API v3 Request

Constants

BASE_URL

Public Instance Methods

create_args(method, auth, endpoint, params, payload) click to toggle source
# File lib/sendgrid4r/rest/request.rb, line 42
def create_args(method, auth, endpoint, params, payload)
  args = {}
  args[:method] = method
  args[:url] = process_url_params(endpoint, params)
  headers = {}
  headers[:content_type] = :json
  # Added for Campaign API
  headers['Accept-Encoding'] = 'plain'
  #
  if !auth.api_key.nil?
    headers[:authorization] = "Bearer #{auth.api_key}"
  else
    args[:user] = auth.username
    args[:password] = auth.password
  end
  args[:headers] = headers
  args[:payload] = payload.to_json unless payload.nil?
  args
end
delete(auth, endpoint, params = nil, payload = nil, &block) click to toggle source
# File lib/sendgrid4r/rest/request.rb, line 29
def delete(auth, endpoint, params = nil, payload = nil, &block)
  execute(:delete, auth, endpoint, params, payload, &block)
end
execute(method, auth, endpoint, params, payload, &block) click to toggle source
# File lib/sendgrid4r/rest/request.rb, line 33
def execute(method, auth, endpoint, params, payload, &block)
  args = create_args(method, auth, endpoint, params, payload)
  RestClient::Request.execute(args, &block)
rescue RestClient::TooManyRequests => e
  duration = e.response.headers[:x_ratelimit_remaining].to_i
  sleep duration if duration > 0
  retry
end
finish(resp, raw_resp = false) { |parse| ... } click to toggle source
# File lib/sendgrid4r/rest/request.rb, line 81
def finish(resp, raw_resp = false)
  return resp if raw_resp || resp.nil? || resp.length < 2
  yield(JSON.parse(resp))
end
get(auth, endpoint, params = nil, payload = nil, &block) click to toggle source
# File lib/sendgrid4r/rest/request.rb, line 13
def get(auth, endpoint, params = nil, payload = nil, &block)
  execute(:get, auth, endpoint, params, payload, &block)
end
patch(auth, endpoint, payload, &block) click to toggle source
# File lib/sendgrid4r/rest/request.rb, line 21
def patch(auth, endpoint, payload, &block)
  execute(:patch, auth, endpoint, nil, payload, &block)
end
post(auth, endpoint, payload = nil, &block) click to toggle source
# File lib/sendgrid4r/rest/request.rb, line 17
def post(auth, endpoint, payload = nil, &block)
  execute(:post, auth, endpoint, nil, payload, &block)
end
process_array_params(v) click to toggle source
# File lib/sendgrid4r/rest/request.rb, line 77
def process_array_params(v)
  v.is_a?(Array) ? v.join(',') : v.to_s
end
process_url_params(endpoint, params) click to toggle source
# File lib/sendgrid4r/rest/request.rb, line 62
def process_url_params(endpoint, params)
  return endpoint if params.nil? || params.empty?
  if params.is_a?(Array)
    ary_params = params
  elsif params.is_a?(Hash)
    ary_params = [params]
  end
  query_string = ary_params.collect do |hash|
    hash.collect do |k, v|
      "#{k}=#{CGI.escape(process_array_params(v))}"
    end.join('&')
  end.join('&')
  "#{endpoint}?#{query_string}"
end
put(auth, endpoint, payload, &block) click to toggle source
# File lib/sendgrid4r/rest/request.rb, line 25
def put(auth, endpoint, payload, &block)
  execute(:put, auth, endpoint, nil, payload, &block)
end