addressablerer 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/CHANGELOG.md +15 -0
- data/LICENSE +20 -0
- data/README.md +123 -0
- data/lib/addressabler.rb +110 -0
- data/lib/addressabler/query.rb +66 -0
- data/lib/addressabler/uri.rb +62 -0
- data/lib/addressabler/uri_deprecation.rb +23 -0
- data/lib/tlds +7027 -0
- data/spec/addressable/idna_spec.rb +238 -0
- data/spec/addressable/net_http_compat_spec.rb +28 -0
- data/spec/addressable/template_spec.rb +1152 -0
- data/spec/addressable/uri_spec.rb +5836 -0
- data/spec/addressabler/uri_deprecation_spec.rb +39 -0
- data/spec/addressabler/uri_spec.rb +116 -0
- data/spec/addressabler_spec.rb +18 -0
- data/spec/spec_helper.rb +1 -0
- metadata +86 -0
@@ -0,0 +1,39 @@
|
|
1
|
+
require 'addressabler/uri_deprecation'
|
2
|
+
|
3
|
+
describe Addressabler, "deprecation" do
|
4
|
+
describe "TLDS" do
|
5
|
+
it "returns public TLDS" do
|
6
|
+
Addressabler::TLDS.should == Addressabler.public_tlds
|
7
|
+
end
|
8
|
+
|
9
|
+
it "warns about the deprecated TLD constant" do
|
10
|
+
Addressabler.should_receive(:deprecation_warning)
|
11
|
+
Addressabler::TLDS
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
describe Addressable::URI, "deprecation" do
|
17
|
+
describe "custom_tlds" do
|
18
|
+
it "returns the Addressabler custom_tlds" do
|
19
|
+
Addressabler.custom_tlds = {foo: "bar"}
|
20
|
+
Addressable::URI.custom_tlds.should == {foo: "bar"}
|
21
|
+
end
|
22
|
+
|
23
|
+
it "sets the Addressabler custom_tlds" do
|
24
|
+
Addressable::URI.custom_tlds = {gert: "B. Frobe"}
|
25
|
+
Addressabler.custom_tlds.should == {gert: "B. Frobe"}
|
26
|
+
end
|
27
|
+
|
28
|
+
it "warns about the deprecated custom_tlds getter" do
|
29
|
+
Addressabler.should_receive(:deprecation_warning)
|
30
|
+
Addressable::URI.custom_tlds
|
31
|
+
end
|
32
|
+
|
33
|
+
it "warns about the deprecated custom_tlds setter" do
|
34
|
+
Addressabler.should_receive(:deprecation_warning)
|
35
|
+
Addressable::URI.custom_tlds = {bring_me: "a sandwich"}
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
@@ -0,0 +1,116 @@
|
|
1
|
+
require 'addressabler/uri'
|
2
|
+
|
3
|
+
describe Addressabler::URI do
|
4
|
+
it "does not prevent Addressable::URI from parsing" do
|
5
|
+
uri = Addressable::URI.parse("http://www.google.com/path?foo=bar#anchor")
|
6
|
+
uri.should be_instance_of(Addressable::URI)
|
7
|
+
end
|
8
|
+
|
9
|
+
it "resets when the host changes" do
|
10
|
+
uri = Addressable::URI.heuristic_parse("www.google.com")
|
11
|
+
uri.tld.should == 'com'
|
12
|
+
uri.domain.should == 'google'
|
13
|
+
uri.subdomain.should == 'www'
|
14
|
+
uri.host = 'www2.google.co.uk'
|
15
|
+
uri.tld.should == 'co.uk'
|
16
|
+
uri.domain.should == 'google'
|
17
|
+
uri.subdomain.should == 'www2'
|
18
|
+
end
|
19
|
+
|
20
|
+
it "does not explode on empty strings" do
|
21
|
+
uri = Addressable::URI.parse("")
|
22
|
+
uri.host.should be_nil
|
23
|
+
uri.domain.should be_nil
|
24
|
+
uri.tld.should be_nil
|
25
|
+
uri.subdomain.should be_nil
|
26
|
+
end
|
27
|
+
|
28
|
+
describe "#tld" do
|
29
|
+
it "returns a TLD" do
|
30
|
+
uri = Addressable::URI.parse("http://www.google.com/path?foo=bar#anchor")
|
31
|
+
uri.tld.should == 'com'
|
32
|
+
end
|
33
|
+
|
34
|
+
it "knows about complex TLDs" do
|
35
|
+
uri = Addressable::URI.parse("http://www.foo.bar.baz.co.uk/gjadgsg#sdgs?adg=f")
|
36
|
+
uri.tld.should == 'co.uk'
|
37
|
+
end
|
38
|
+
|
39
|
+
it "knows about newer TLDs" do
|
40
|
+
uri = Addressable::URI.parse("http://www.bart-blabla.cc")
|
41
|
+
uri.tld.should == 'cc'
|
42
|
+
end
|
43
|
+
|
44
|
+
it "doesn't know non-existant TLDs" do
|
45
|
+
uri = Addressable::URI.parse("http://www.bart-blabla.foobar")
|
46
|
+
uri.tld.should == ''
|
47
|
+
end
|
48
|
+
|
49
|
+
it "accepts custom TLDs" do
|
50
|
+
Addressabler.custom_tlds = { 'foobar' => {} }
|
51
|
+
uri = Addressable::URI.parse("http://www.bart-blabla.foobar")
|
52
|
+
uri.tld.should == 'foobar'
|
53
|
+
end
|
54
|
+
|
55
|
+
it "accepts nested custom TLDs" do
|
56
|
+
Addressabler.custom_tlds = { 'bar' => { 'foo' => {} } }
|
57
|
+
uri = Addressable::URI.parse("http://www.bart-blabla.foo.bar")
|
58
|
+
uri.tld.should == 'foo.bar'
|
59
|
+
end
|
60
|
+
|
61
|
+
it "is changeable" do
|
62
|
+
uri = Addressable::URI.heuristic_parse("www.google.com")
|
63
|
+
uri.tld = 'co.uk'
|
64
|
+
uri.to_s.should == 'http://www.google.co.uk'
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
describe "#domain" do
|
69
|
+
it "returns the domain" do
|
70
|
+
uri = Addressable::URI.heuristic_parse("i.am.a.subdomain.co.uk")
|
71
|
+
uri.domain.should == "subdomain"
|
72
|
+
end
|
73
|
+
|
74
|
+
it "is changeable" do
|
75
|
+
uri = Addressable::URI.heuristic_parse("www.google.com")
|
76
|
+
uri.domain = 'amazon'
|
77
|
+
uri.to_s.should == 'http://www.amazon.com'
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
describe "#subdomain" do
|
82
|
+
it "returns the subdomain" do
|
83
|
+
uri = Addressable::URI.heuristic_parse("i.am.a.subdomain.co.uk")
|
84
|
+
uri.subdomain.should == "i.am.a"
|
85
|
+
end
|
86
|
+
|
87
|
+
it "is changeable" do
|
88
|
+
uri = Addressable::URI.heuristic_parse("www.google.com")
|
89
|
+
uri.subdomain = 'www2'
|
90
|
+
uri.to_s.should == 'http://www2.google.com'
|
91
|
+
end
|
92
|
+
|
93
|
+
it "is blank when none exists" do
|
94
|
+
uri = Addressable::URI.parse("http://google.com")
|
95
|
+
uri.host.should == "google.com"
|
96
|
+
uri.domain.should == "google"
|
97
|
+
uri.tld.should == "com"
|
98
|
+
uri.subdomain.should == ""
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
describe "#query_hash" do
|
103
|
+
it "supports adding keys to the query" do
|
104
|
+
uri = Addressable::URI.parse("http://www.foo.bar.baz.co.uk/gjadgsg?adg=f")
|
105
|
+
uri.query_hash.should == {'adg' => 'f'}
|
106
|
+
uri.query_hash[:foo] = "bar"
|
107
|
+
uri.to_s.should == "http://www.foo.bar.baz.co.uk/gjadgsg?adg=f&foo=bar"
|
108
|
+
end
|
109
|
+
|
110
|
+
it "supports adding nested values to the query" do
|
111
|
+
uri = Addressable::URI.parse("http://www.amazon.ca")
|
112
|
+
uri.query_hash[:foo] = {:bar => "baz", :sommat => [:else, 1, true, false]}
|
113
|
+
uri.to_s.should == "http://www.amazon.ca?foo[bar]=baz&foo[sommat][]=else&foo[sommat][]=1&foo[sommat][]=true&foo[sommat][]=false"
|
114
|
+
end
|
115
|
+
end
|
116
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require "addressabler"
|
2
|
+
|
3
|
+
describe Addressabler do
|
4
|
+
describe ".parse_tlds" do
|
5
|
+
it "doesn't return private TLDs by default" do
|
6
|
+
host = 'fwefweewf.blogspot.com'
|
7
|
+
tld = Addressabler.parse_tld(host)
|
8
|
+
tld.should == 'com'
|
9
|
+
end
|
10
|
+
|
11
|
+
it "can switch private tlds on" do
|
12
|
+
Addressabler.use_private_tlds = true
|
13
|
+
host = 'fwefweewf.blogspot.com'
|
14
|
+
tld = Addressabler.parse_tld(host)
|
15
|
+
tld.should == 'blogspot.com'
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require 'rspec/autorun'
|
metadata
ADDED
@@ -0,0 +1,86 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: addressablerer
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Flip Sasser
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2014-03-15 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: addressable
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '2.3'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '2.3'
|
27
|
+
description: "\n Addressabler extends the Addressable::URI class to provide information
|
28
|
+
about, and manipulation of, specific parts of URI strings. It adds a `tld' method,
|
29
|
+
a `domain' method,\n and a `subdomain' method.\n\nIt also allows users to easily
|
30
|
+
modify the URL's query values as a hash.\n \n This is a fork to ensure the
|
31
|
+
gem works in Ruby versions > 1.9.3.\n "
|
32
|
+
email: flip@x451.com
|
33
|
+
executables: []
|
34
|
+
extensions: []
|
35
|
+
extra_rdoc_files:
|
36
|
+
- LICENSE
|
37
|
+
- README.md
|
38
|
+
files:
|
39
|
+
- CHANGELOG.md
|
40
|
+
- LICENSE
|
41
|
+
- README.md
|
42
|
+
- lib/addressabler.rb
|
43
|
+
- lib/addressabler/query.rb
|
44
|
+
- lib/addressabler/uri.rb
|
45
|
+
- lib/addressabler/uri_deprecation.rb
|
46
|
+
- lib/tlds
|
47
|
+
- spec/addressable/idna_spec.rb
|
48
|
+
- spec/addressable/net_http_compat_spec.rb
|
49
|
+
- spec/addressable/template_spec.rb
|
50
|
+
- spec/addressable/uri_spec.rb
|
51
|
+
- spec/addressabler/uri_deprecation_spec.rb
|
52
|
+
- spec/addressabler/uri_spec.rb
|
53
|
+
- spec/addressabler_spec.rb
|
54
|
+
- spec/spec_helper.rb
|
55
|
+
homepage: http://github.com/flipsasser/addressabler
|
56
|
+
licenses: []
|
57
|
+
metadata: {}
|
58
|
+
post_install_message:
|
59
|
+
rdoc_options: []
|
60
|
+
require_paths:
|
61
|
+
- lib
|
62
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
63
|
+
requirements:
|
64
|
+
- - ">="
|
65
|
+
- !ruby/object:Gem::Version
|
66
|
+
version: '0'
|
67
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
68
|
+
requirements:
|
69
|
+
- - ">="
|
70
|
+
- !ruby/object:Gem::Version
|
71
|
+
version: '0'
|
72
|
+
requirements: []
|
73
|
+
rubyforge_project:
|
74
|
+
rubygems_version: 2.2.0
|
75
|
+
signing_key:
|
76
|
+
specification_version: 4
|
77
|
+
summary: An Addressable::URI extension adding support for TLDs and query part editing
|
78
|
+
test_files:
|
79
|
+
- spec/addressable/idna_spec.rb
|
80
|
+
- spec/addressable/net_http_compat_spec.rb
|
81
|
+
- spec/addressable/template_spec.rb
|
82
|
+
- spec/addressable/uri_spec.rb
|
83
|
+
- spec/addressabler/uri_deprecation_spec.rb
|
84
|
+
- spec/addressabler/uri_spec.rb
|
85
|
+
- spec/addressabler_spec.rb
|
86
|
+
- spec/spec_helper.rb
|