module Bloopi::HTTPService

Constants

DEFAULT_MIDDLEWARE

Bloopi's default middleware stack. and use whichever adapter has been configured for this application.

Attributes

faraday_middleware[RW]

A customized stack of Faraday middleware that will be used to make each request.

http_options[RW]

Public Class Methods

make_request(request) click to toggle source

Makes a request directly to Bloopi. @note You'll rarely need to call this method directly.

@param request a Bloopi::HTTPService::Request object

@raise an appropriate connection error if unable to make the request to Bloopi

@return [Bloopi::HTTPService::Response] a response object representing the results from Bloopi

# File lib/bloopi/http_service.rb, line 31
def self.make_request(request)
  # set up our Faraday connection
  conn = Faraday.new(request.server, faraday_options(request.options), &(faraday_middleware || DEFAULT_MIDDLEWARE))
  if request.verb == "post" && request.json?
    # JSON requires a bit more handling
    # remember, all non-GET requests are turned into POSTs, so this covers everything but GETs
    response = conn.post do |req|
      req.path = request.path
      req.headers["Content-Type"] = "application/json"
      req.headers['Bearer'] = Bloopi.config.access_token if Bloopi.config.access_token
      req.body = request.post_args.to_json
      req
    end
  else
    # response = conn.send(request.verb, request.path, request.post_args)
    response = conn.get do |req|
        req.path = request.path
        req.headers['Bearer'] = Bloopi.config.access_token if Bloopi.config.access_token
    end
  end

  # Log URL information
  # Bloopi::Utils.debug "#{request.verb.upcase}: #{request.path} params: #{request.raw_args.inspect}"
  Bloopi::HTTPService::Response.new(response.status.to_i, response.body, response.headers)
end

Private Class Methods

faraday_options(options) click to toggle source
# File lib/bloopi/http_service.rb, line 60
def self.faraday_options(options)
  valid_options = [:request, :proxy, :ssl, :builder, :url, :parallel_manager, :params, :headers, :builder_class]
  Hash[ options.select { |key,value| valid_options.include?(key) } ]
end