Sha256: 3f1d63cf0ee6378a671a8185a21c142706be7f6afb95ed55201db297b0ca90a5
Contents?: true
Size: 828 Bytes
Versions: 1
Compression:
Stored size: 828 Bytes
Contents
require 'rack/utils' require 'sinatra/base' module Mirage class Server < Sinatra::Base module Helpers module HttpHeaders def extract_http_headers(env) headers = env.reject do |k, v| k.to_s.upcase != 'CONTENT_TYPE' && (!(/^HTTP_[A-Z_]+$/ === k) || v.nil?) end.map do |k, v| [reconstruct_header_name(k), v] end.inject(Rack::Utils::HeaderHash.new) do |hash, k_v| k, v = k_v hash[k] = v hash end x_forwarded_for = (headers["X-Forwarded-For"].to_s.split(/, +/) << env["REMOTE_ADDR"]).join(", ") headers.merge!("X-Forwarded-For" => x_forwarded_for) end def reconstruct_header_name(name) name.sub(/^HTTP_/, "").gsub("_", "-") end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
mirage-3.0.7 | server/helpers/http_headers.rb |