Sha256: 7b2b9aec5217b52a5ca672e38a85164b848587f42ac7ba910f7d8fe5e095a55b

Contents?: true

Size: 1.12 KB

Versions: 14

Compression:

Stored size: 1.12 KB

Contents

module Locomotive
  module Routing
    class DefaultConstraint

      def self.matches?(request)
        domain, subdomain = domain_and_subdomain(request)
        subdomain = 'www' if subdomain.blank?

        domain == Locomotive.config.default_domain && Locomotive.config.reserved_subdomains.include?(subdomain)
      end

      # see actionpack/lib/action_dispatch/http/url.rb for more information
      def self.domain_and_subdomain(request)
        [extract_domain(request), extract_subdomain(request)]
      end

      def self.extract_domain(request, tld_length = 1)
        return nil unless named_host?(request.host)
        request.host.split('.').last(1 + tld_length).join('.')
      end

      def self.extract_subdomain(request, tld_length = 1)
        subdomains(request, tld_length).join('.')
      end

      def self.named_host?(host)
        !(host.nil? || /\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/.match(host))
      end

      def self.subdomains(request, tld_length = 1)
        return [] unless named_host?(request.host)
        parts = request.host.split('.')
        parts[0..-(tld_length+2)]
      end

    end
  end
end

Version data entries

14 entries across 14 versions & 1 rubygems

Version Path
locomotive_cms-1.0.0.beta.2 lib/locomotive/routing/default_constraint.rb
locomotive_cms-1.0.0.beta lib/locomotive/routing/default_constraint.rb
locomotive_cms-0.0.4.beta12 lib/locomotive/routing/default_constraint.rb
locomotive_cms-0.0.4.beta11 lib/locomotive/routing/default_constraint.rb
locomotive_cms-0.0.4.beta10 lib/locomotive/routing/default_constraint.rb
locomotive_cms-0.0.4.beta9 lib/locomotive/routing/default_constraint.rb
locomotive_cms-0.0.4.beta8 lib/locomotive/routing/default_constraint.rb
locomotive_cms-0.0.4.beta7 lib/locomotive/routing/default_constraint.rb
locomotive_cms-0.0.4.beta5 lib/locomotive/routing/default_constraint.rb
locomotive_cms-0.0.4.beta4 lib/locomotive/routing/default_constraint.rb
locomotive_cms-0.0.4.beta3 lib/locomotive/routing/default_constraint.rb
locomotive_cms-0.0.4.beta2 lib/locomotive/routing/default_constraint.rb
locomotive_cms-0.0.4.beta1 lib/locomotive/routing/default_constraint.rb
locomotive_cms-0.0.4 lib/locomotive/routing/default_constraint.rb