Sha256: 2701c19e0c58a1678837470c9001e2be7db3a0b7458abef34858066df3f7d4e1

Contents?: true

Size: 962 Bytes

Versions: 1

Compression:

Stored size: 962 Bytes

Contents

require 'rack/mime'

module Rack
  module SeoRedirect
    class Base
      def initialize app
        @app = app
      end

      private

      def request
        Rack::Request.new(@env)
      end

      def headers url
        {
          'Location' => url,
          'Content-Type' => ::Rack::Mime.mime_type(::File.extname(request.path), 'text/html')
        }
      end

      def redirect_message url
        "Redirecting to <a href='#{url}'>#{url}</a>"
      end

      def build_url options = {}
        options[:host] ||= request.host
        options[:path] ||= request.path

        url = "#{request.scheme}://#{options[:host]}"

        if request.scheme == "https" && request.port != 443 ||
          request.scheme == "http" && request.port != 80
          url << ":#{request.port}"
        end

        url << "#{options[:path]}"
        url << "?#{request.query_string}" unless request.query_string.empty?

        url
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rack-seo_redirect-0.0.1 lib/rack/seo_redirect/base.rb