Sha256: 124273ce59b92265becfac58149c102150fb0fa1972d739b38a55419bf577ab9

Contents?: true

Size: 1.07 KB

Versions: 18

Compression:

Stored size: 1.07 KB

Contents

# frozen_string_literal: true

require 'apartment/elevators/generic'

module Apartment
  module Elevators
    #   Provides a rack based tenant switching solution based on the host
    #   Assumes that tenant name should match host
    #   Strips/ignores first subdomains in ignored_first_subdomains
    #   eg. example.com       => example.com
    #       www.example.bc.ca => www.example.bc.ca
    #   if ignored_first_subdomains = ['www']
    #       www.example.bc.ca => example.bc.ca
    #       www.a.b.c.d.com   => a.b.c.d.com
    #
    class Host < Generic
      def self.ignored_first_subdomains
        @ignored_first_subdomains ||= []
      end

      # rubocop:disable Style/TrivialAccessors
      def self.ignored_first_subdomains=(arg)
        @ignored_first_subdomains = arg
      end
      # rubocop:enable Style/TrivialAccessors

      def parse_tenant_name(request)
        return nil if request.host.blank?

        parts = request.host.split('.')
        self.class.ignored_first_subdomains.include?(parts[0]) ? parts.drop(1).join('.') : request.host
      end
    end
  end
end

Version data entries

18 entries across 18 versions & 3 rubygems

Version Path
ros-apartment-3.2.0 lib/apartment/elevators/host.rb
synerma-apartment-3.1.0 lib/apartment/elevators/host.rb
puzzle-apartment-2.13.0 lib/apartment/elevators/host.rb
puzzle-apartment-2.12.0 lib/apartment/elevators/host.rb
ros-apartment-2.11.0 lib/apartment/elevators/host.rb
ros-apartment-2.10.0 lib/apartment/elevators/host.rb
ros-apartment-2.9.0 lib/apartment/elevators/host.rb
ros-apartment-2.8.1 lib/apartment/elevators/host.rb
ros-apartment-2.8.1.rc2 lib/apartment/elevators/host.rb
ros-apartment-2.8.1.rc1 lib/apartment/elevators/host.rb
ros-apartment-2.8.0 lib/apartment/elevators/host.rb
ros-apartment-2.7.2 lib/apartment/elevators/host.rb
ros-apartment-2.7.1 lib/apartment/elevators/host.rb
ros-apartment-2.7.0 lib/apartment/elevators/host.rb
ros-apartment-2.6.1 lib/apartment/elevators/host.rb
ros-apartment-2.6.0 lib/apartment/elevators/host.rb
ros-apartment-2.5.0 lib/apartment/elevators/host.rb
ros-apartment-2.4.0 lib/apartment/elevators/host.rb