Sha256: 12c4a070c2082da9529dd856bd466cd6eae2fded1755a07b0da485e09b5ae835

Contents?: true

Size: 990 Bytes

Versions: 4

Compression:

Stored size: 990 Bytes

Contents

require 'faraday'

module Infrataster
  module Contexts
    class HttpContext < BaseContext
      def response
        server.forward_port(resource.uri.port) do |address, port|
          url = "#{resource.uri.scheme}://#{address}:#{port}"

          conn = Faraday.new(:url => url) do |faraday|
            faraday.request  :url_encoded
            faraday.response :logger, Logger
            faraday.adapter  Faraday.default_adapter
          end

          conn.public_send(resource.method) do |req|
            resource.params.each_pair do |k, v|
              req.params[k] = v
            end
            req.headers['Host'] = determine_host(address)
            resource.headers.each_pair do |k, v|
              req.headers[k] = v
            end
            req.url resource.uri.path
          end
        end
      end

      def determine_host(default)
        resource.uri.host || (server.options[:http] && server.options[:http][:host]) || default
      end
    end
  end
end


Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
infrataster-0.2.0 lib/infrataster/contexts/http_context.rb
infrataster-0.2.0.beta1 lib/infrataster/contexts/http_context.rb
infrataster-0.1.13 lib/infrataster/contexts/http_context.rb
infrataster-0.1.12 lib/infrataster/contexts/http_context.rb