domain_routing 0.1.2

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,21 @@
1
+ module DomainRouting
2
+ class Config
3
+ class << self
4
+ def main_domains
5
+ @main_domains || []
6
+ end
7
+
8
+ def invalid_subdomains
9
+ @invalid_subdomains || []
10
+ end
11
+
12
+ def main_domains=(*values)
13
+ @main_domains = values.flatten
14
+ end
15
+
16
+ def invalid_subdomains=(*values)
17
+ @invalid_subdomains = values.flatten
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,81 @@
1
+ module DomainRouting
2
+ module RoutingAdditions
3
+ def with_domain
4
+ constraints DomainRouting::DomainConstraints do
5
+ yield
6
+ end
7
+ end
8
+
9
+ def without_domain
10
+ constraints DomainRouting::Negated::DomainConstraints do
11
+ yield
12
+ end
13
+ end
14
+
15
+ def with_subdomain
16
+ constraints DomainRouting::SubdomainConstraints do
17
+ yield
18
+ end
19
+ end
20
+
21
+ def without_subdomain
22
+ constraints DomainRouting::Negated::SubdomainConstraints do
23
+ yield
24
+ end
25
+ end
26
+
27
+ def with_domain_or_subdomain
28
+ constraints DomainRouting::DomainOrSubdomainConstraints do
29
+ yield
30
+ end
31
+ end
32
+
33
+ def without_domain_or_subdomain
34
+ constraints DomainRouting::Negated::DomainOrSubdomainConstraints do
35
+ yield
36
+ end
37
+ end
38
+ end
39
+
40
+ class DomainConstraints
41
+ def self.matches?(request)
42
+ DomainRouting::Util.domain_for(request).present?
43
+ end
44
+ end
45
+
46
+ class SubdomainConstraints
47
+ def self.matches?(request)
48
+ DomainRouting::Util.subdomain_for(request).present?
49
+ end
50
+ end
51
+
52
+ class DomainOrSubdomainConstraints
53
+ def self.matches?(request)
54
+ DomainRouting::DomainConstraints.matches?(request) || DomainRouting::SubdomainConstraints.matches?(request)
55
+ end
56
+ end
57
+
58
+ module Negated
59
+ class DomainConstraints
60
+ def self.matches?(request)
61
+ !DomainRouting::DomainConstraints.matches?(request)
62
+ end
63
+ end
64
+
65
+ class SubdomainConstraints
66
+ def self.matches?(request)
67
+ !DomainRouting::SubdomainConstraints.matches?(request)
68
+ end
69
+ end
70
+
71
+ class DomainOrSubdomainConstraints
72
+ def self.matches?(request)
73
+ !DomainRouting::DomainOrSubdomainConstraints.matches?(request)
74
+ end
75
+ end
76
+ end
77
+ end
78
+
79
+ class ActionDispatch::Routing::Mapper
80
+ include DomainRouting::RoutingAdditions
81
+ end
@@ -0,0 +1,17 @@
1
+ module DomainRouting
2
+ class Util
3
+ class << self
4
+ def domain_for(request)
5
+ return "" if DomainRouting::Config.main_domains.include?(request.domain)
6
+ request.domain
7
+ end
8
+
9
+ def subdomain_for(request)
10
+ return "" unless request.subdomains.present?
11
+ subdomain = request.subdomains.last
12
+ return "" if DomainRouting::Config.invalid_subdomains.include?(subdomain)
13
+ subdomain
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,3 @@
1
+ require "domain_routing/config"
2
+ require "domain_routing/util"
3
+ require "domain_routing/routing_additions"
metadata ADDED
@@ -0,0 +1,65 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: domain_routing
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 1
8
+ - 2
9
+ version: 0.1.2
10
+ platform: ruby
11
+ authors:
12
+ - Mike Stone
13
+ autorequire:
14
+ bindir: bin
15
+ cert_chain: []
16
+
17
+ date: 2011-07-26 00:00:00 -07:00
18
+ default_executable:
19
+ dependencies: []
20
+
21
+ description: A Rails 3 gem that allows easy routing using different domains and subdomains
22
+ email: stonemj@gmail.com
23
+ executables: []
24
+
25
+ extensions: []
26
+
27
+ extra_rdoc_files: []
28
+
29
+ files:
30
+ - lib/domain_routing.rb
31
+ - lib/domain_routing/config.rb
32
+ - lib/domain_routing/routing_additions.rb
33
+ - lib/domain_routing/util.rb
34
+ has_rdoc: true
35
+ homepage: https://github.com/mikestone/Domain-Routing
36
+ licenses: []
37
+
38
+ post_install_message:
39
+ rdoc_options: []
40
+
41
+ require_paths:
42
+ - lib
43
+ required_ruby_version: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ segments:
48
+ - 0
49
+ version: "0"
50
+ required_rubygems_version: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ segments:
55
+ - 0
56
+ version: "0"
57
+ requirements: []
58
+
59
+ rubyforge_project:
60
+ rubygems_version: 1.3.6
61
+ signing_key:
62
+ specification_version: 3
63
+ summary: Domain Routing
64
+ test_files: []
65
+