Sha256: f75d7fdb039d1ca180becf89e2608e57817ff6781058a420488f0a4b4706eff8

Contents?: true

Size: 751 Bytes

Versions: 1

Compression:

Stored size: 751 Bytes

Contents

# frozen_string_literal: true

require 'passenger_api/request'
require 'passenger_api/version'

class PassengerAPI
  def initialize
    require 'passenger_api/ext'
  end

  def call(env)
    to_rack_response(call_api(build_argv(Request.new(env))))
  end

  private

  def build_argv(req)
    argv = [req.method, req.path]
    argv << '--data' << req.body unless req.body.empty?
    argv
  end

  def call_api(argv)
    argv += ['--show-headers']
    catch :response do
      PhusionPassenger::Config::ApiCallCommand.new(argv).run
    end
  end

  def to_rack_response(res)
    # for Ruby 1.8.7
    # headers = res.each_capitalized.to_h
    headers = {}
    res.each_capitalized { |n, v| headers[n] = v }

    [res.code, headers, [res.body]]
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
passenger_api-0.1.0 lib/passenger_api.rb