Sha256: 902a137e3e0c97365b1af27a693ef304a7c01dda7e615f291429010b1ec7ebf7

Contents?: true

Size: 950 Bytes

Versions: 1

Compression:

Stored size: 950 Bytes

Contents

# frozen_string_literal: true

require "rack/proxy"
require "socket"
require "vite_rb/utils"

module ViteRb
  # Proxy server for Vite
  class Proxy < Rack::Proxy
    def initialize(app = nil, opts = {})
      opts[:streaming] = false if Rails.env.test? && !opts.key?(:streaming)
      super
    end

    def perform_request(env)
      output_dir = %r{/#{ViteRb.config.output_dir}/}

      if env["PATH_INFO"].start_with?(output_dir) && Utils.dev_server_running?
        env["HTTP_HOST"] = env["HTTP_X_FORWARDED_HOST"] = ViteRb
        env["HTTP_X_FORWARDED_SERVER"] = Utils.host_with_port
        env["HTTP_PORT"] = env["HTTP_X_FORWARDED_PORT"] = ViteRb
        env["HTTP_X_FORWARDED_PROTO"] = env["HTTP_X_FORWARDED_SCHEME"] = "http"

        unless Utils.https?
          env["HTTPS"] = env["HTTP_X_FORWARDED_SSL"] = "off"
        end

        env["SCRIPT_NAME"] = ""
        super(env)
      else
        @app.call(env)
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
vite_rb-0.0.1.alpha1 lib/vite_rb/proxy.rb