reserved_subdomain 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,20 @@
1
+ class ReservedSubdomain
2
+ class Pattern
3
+ PATTERNS = [
4
+ /.*[_-]feed$/,
5
+ /.*[_-]support$/,
6
+ /^v[0-9]{,2}$/,
7
+ /^xn--/,
8
+ ].freeze
9
+
10
+ attr_reader :subdomain
11
+
12
+ def initialize(subdomain)
13
+ @subdomain = subdomain
14
+ end
15
+
16
+ def reserved?
17
+ PATTERNS.any? { |pattern| subdomain =~ pattern }
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,51 @@
1
+ class ReservedSubdomain
2
+ class Prefix
3
+ PREFIXES = %w[
4
+ db
5
+ dc
6
+ dev
7
+ dns
8
+ ftp
9
+ host
10
+ mail
11
+ mx
12
+ ns
13
+ ntp
14
+ server
15
+ smtp
16
+ static
17
+ support
18
+ test
19
+ vpn
20
+ web
21
+ www
22
+ ].freeze
23
+
24
+ attr_reader :subdomain
25
+
26
+ def initialize(subdomain)
27
+ @subdomain = subdomain
28
+ end
29
+
30
+ def reserved?
31
+ PREFIXES.any? { |prefix| Prefix.new(prefix, subdomain).reserved? }
32
+ end
33
+
34
+ class Prefix
35
+ def initialize(prefix, subdomain)
36
+ @prefix = prefix
37
+ @subdomain = subdomain
38
+ end
39
+
40
+ def reserved?
41
+ @subdomain =~ regex
42
+ end
43
+
44
+ private
45
+
46
+ def regex
47
+ /^#{@prefix}[-_]*[0-9]{,2}$/
48
+ end
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ class ReservedSubdomain
4
+ VERSION = '0.0.1'.freeze
5
+ end
@@ -0,0 +1,16 @@
1
+ lib = File.expand_path('lib', __dir__)
2
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
+ require 'reserved_subdomain/version'
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = 'reserved_subdomain'
7
+ s.version = ReservedSubdomain::VERSION
8
+ s.authors = ['Dominic Sayers']
9
+ s.email = ['dominic@sayers.cc']
10
+ s.summary = 'Identify subdomain names that should be reserved'
11
+ s.homepage = 'https://github.com/dominicsayers/reserved_subdomain'
12
+ s.license = 'MIT'
13
+
14
+ s.files = `git ls-files`.split($RS).reject { |file| file =~ %r{^spec/} }
15
+ s.require_paths = ['lib']
16
+ end
metadata ADDED
@@ -0,0 +1,67 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: reserved_subdomain
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Dominic Sayers
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2018-07-11 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description:
14
+ email:
15
+ - dominic@sayers.cc
16
+ executables: []
17
+ extensions: []
18
+ extra_rdoc_files: []
19
+ files:
20
+ - ".gitignore"
21
+ - ".rspec"
22
+ - ".rubocop.yml"
23
+ - ".travis.yml"
24
+ - Gemfile
25
+ - Gemfile.local.example
26
+ - LICENSE
27
+ - README.md
28
+ - Rakefile
29
+ - bin/build_literals
30
+ - bin/console
31
+ - bin/rspec
32
+ - bin/rubocop
33
+ - lib/reserved_subdomain.rb
34
+ - lib/reserved_subdomain/literal.rb
35
+ - lib/reserved_subdomain/literals/iso-3166-1.txt
36
+ - lib/reserved_subdomain/literals/iso-639-1.txt
37
+ - lib/reserved_subdomain/literals/reserved_subdomains.txt
38
+ - lib/reserved_subdomain/literals/tlds.txt
39
+ - lib/reserved_subdomain/pattern.rb
40
+ - lib/reserved_subdomain/prefix.rb
41
+ - lib/reserved_subdomain/version.rb
42
+ - reserved_subdomain.gemspec
43
+ homepage: https://github.com/dominicsayers/reserved_subdomain
44
+ licenses:
45
+ - MIT
46
+ metadata: {}
47
+ post_install_message:
48
+ rdoc_options: []
49
+ require_paths:
50
+ - lib
51
+ required_ruby_version: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - ">="
54
+ - !ruby/object:Gem::Version
55
+ version: '0'
56
+ required_rubygems_version: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: '0'
61
+ requirements: []
62
+ rubyforge_project:
63
+ rubygems_version: 2.7.7
64
+ signing_key:
65
+ specification_version: 4
66
+ summary: Identify subdomain names that should be reserved
67
+ test_files: []