module ActionDispatch::Http::URL::DomainExtractor
DomainExtractor предоставляет служебные методы для извлечения информации о домене и поддомене из строк хоста. Этот модуль используется внутри Action Dispatch для анализа имен хостов и отделения домена от поддоменов на основе длины домена верхнего уровня (TLD).
Модуль предполагает стандартную структуру домена, в которой домены состоят из: - Поддоменов (необязательно, могут быть многоуровневыми) - Доменного имени - Домена верхнего уровня (TLD, может быть многоуровневым, например .co.uk)
Например, в «api.staging.example.co.uk»: - Поддомены: [«api», «staging»] - Домен: «example.co.uk» (с tld_length=2) - TLD: «co.uk»
Открытые методы экземпляра
# File actionpack/lib/action_dispatch/http/url.rb, line 64
def domain_from(host, tld_length)
host.split(".").last(1 + tld_length).join(".")
end Извлекает доменную часть из строки хоста, включая указанное количество компонентов домена верхнего уровня.
Домен включает в себя основное доменное имя плюс компоненты TLD. Параметр tld_length указывает, сколько компонентов справа должны считаться частью TLD.
==== Parameters
[host] Строка хоста, из которой извлекается домен.
[tld_length] Количество компонентов домена, составляющих TLD. Например, используйте 1 для «.com» или 2 для «.co.uk».
==== Примеры
# Стандартный TLD (tld_length = 1) DomainExtractor.domain_from(“www.example.com”, 1) # => “example.com”
# TLD с кодом страны (tld_length = 2) DomainExtractor.domain_from(“www.example.co.uk”, 2) # => “example.co.uk”
# Несколько поддоменов DomainExtractor.domain_from(“api.staging.myapp.herokuapp.com”, 1) # => “herokuapp.com”
# Одиночный компонент (возвращает сам хост) DomainExtractor.domain_from(“localhost”, 1) # => “localhost”
# File actionpack/lib/action_dispatch/http/url.rb, line 104
def subdomains_from(host, tld_length)
parts = host.split(".")
parts[0..-(tld_length + 2)]
end Извлекает компоненты поддомена из строки хоста в виде Array.
Возвращает все компоненты, предшествующие частям домена и TLD. Параметр tld_length используется для определения того, где начинается домен, так что все, что находится перед ним, считается поддоменом.
==== Parameters
[host] Строка хоста, из которой извлекаются поддомены.
[tld_length] Количество компонентов домена, составляющих TLD. Это влияет на то, где рассчитывается граница домена.
==== Примеры
# Стандартный TLD (tld_length = 1) DomainExtractor.subdomains_from(“www.example.com”, 1) # => [“www”]
# TLD с кодом страны (tld_length = 2) DomainExtractor.subdomains_from(“api.staging.example.co.uk”, 2) # => [“api”, “staging”]
# Без поддоменов DomainExtractor.subdomains_from(“example.com”, 1) # => []
# Одиночный поддомен со сложным TLD DomainExtractor.subdomains_from(“www.mysite.co.uk”, 2) # => [“www”]
# Несколько уровней поддоменов DomainExtractor.subdomains_from(“dev.api.staging.example.com”, 1) # => [“dev”, “api”, “staging”]
© 2004–2021 David Heinemeier Hansson
Licensed under the MIT License.