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