flare-url 0.1.0

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.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 6a4fbc4672dd1db7618e90563e1052b81dfa3e98
4
+ data.tar.gz: 9a2d16945a05ef687cbcea9408d48993a633a3e5
5
+ SHA512:
6
+ metadata.gz: 0b178be6b6576b34aebad1611be4c59aae643dc3214e350858eade76608b7a58b4137b1c4f808d037de01a4f9358d4a39a56b451e418df243ca927e05f2c97ed
7
+ data.tar.gz: 0d8e9676a23d74d8ad6a467086d4f8ca9cc21bc8c63bf900e65c2f8f09085f4cb5f39d86157f485adb413dce44efcd42e41e35730bb0436e65b1a198540de103
data/Rakefile ADDED
@@ -0,0 +1,6 @@
1
+ begin
2
+ require "bundler/setup"
3
+ require "rake"
4
+ rescue LoadError
5
+ puts "You must `gem install bundler` and `bundle install` to run rake tasks"
6
+ end
data/lib/flare/mail.rb ADDED
@@ -0,0 +1,21 @@
1
+ module Flare
2
+ class Mail
3
+
4
+ #
5
+ # Parses a string into a Address object or returns nil if it's invalid.
6
+ #
7
+ def self.parsed(string)
8
+ ::Mail::Address.new(string)
9
+ rescue ::Mail::Field::ParseError => error
10
+ nil
11
+ end
12
+
13
+ #
14
+ # Attempts to parse an email string to get the domain from it.
15
+ #
16
+ def self.domain(string)
17
+ parsed(string)&.domain
18
+ end
19
+
20
+ end
21
+ end
data/lib/flare/url.rb ADDED
@@ -0,0 +1,44 @@
1
+ module Flare
2
+ class Url
3
+
4
+ #
5
+ # Base parse method which handles invalid uris.
6
+ #
7
+ def self.parsed(url)
8
+ Addressable::URI.heuristic_parse(url)
9
+ rescue Addressable::URI::InvalidURIError => error
10
+ nil
11
+ end
12
+
13
+ #
14
+ # Uses PublicSuffix to lookup validated domain names.
15
+ #
16
+ def self.parse_host(string)
17
+ PublicSuffix.parse(host(string))
18
+ end
19
+
20
+ #
21
+ # Returns if a url is valid after being parsed.
22
+ #
23
+ def self.is_valid?(url)
24
+ %w(http https).include?(scheme(url))
25
+ end
26
+
27
+ #
28
+ # Attempts to parse a string to get the `host` value from it. Typically
29
+ # this value is in the form of `google.com` or `inbox.google.com` with
30
+ # subdomains.
31
+ #
32
+ def self.host(string)
33
+ parsed(string)&.host
34
+ end
35
+
36
+ #
37
+ # Returns the scheme (http, https, ftp) for a url.
38
+ #
39
+ def self.scheme(url)
40
+ parsed(url)&.scheme
41
+ end
42
+
43
+ end
44
+ end
data/lib/flare-url.rb ADDED
@@ -0,0 +1,11 @@
1
+ # Ruby
2
+ require "uri"
3
+
4
+ # 3rd Party
5
+ require "addressable"
6
+ require "mail"
7
+ require "public_suffix"
8
+
9
+ # Url
10
+ require "flare/mail"
11
+ require "flare/url"
data/readme.md ADDED
@@ -0,0 +1,3 @@
1
+ # flare-url
2
+
3
+ Url and mail parser for ruby.
metadata ADDED
@@ -0,0 +1,104 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: flare-url
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Mark Miyashita
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-10-27 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.4.0
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '='
25
+ - !ruby/object:Gem::Version
26
+ version: 2.4.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: mail
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '='
32
+ - !ruby/object:Gem::Version
33
+ version: 2.6.4
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '='
39
+ - !ruby/object:Gem::Version
40
+ version: 2.6.4
41
+ - !ruby/object:Gem::Dependency
42
+ name: public_suffix
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '='
46
+ - !ruby/object:Gem::Version
47
+ version: 1.5.1
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '='
53
+ - !ruby/object:Gem::Version
54
+ version: 1.5.1
55
+ - !ruby/object:Gem::Dependency
56
+ name: rake
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - '='
60
+ - !ruby/object:Gem::Version
61
+ version: 10.5.0
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '='
67
+ - !ruby/object:Gem::Version
68
+ version: 10.5.0
69
+ description: Url and Mail string parsers.
70
+ email: negativetwelve@gmail.com
71
+ executables: []
72
+ extensions: []
73
+ extra_rdoc_files: []
74
+ files:
75
+ - Rakefile
76
+ - lib/flare-url.rb
77
+ - lib/flare/mail.rb
78
+ - lib/flare/url.rb
79
+ - readme.md
80
+ homepage: http://markmiyashita.com
81
+ licenses:
82
+ - MIT
83
+ metadata: {}
84
+ post_install_message:
85
+ rdoc_options: []
86
+ require_paths:
87
+ - lib
88
+ required_ruby_version: !ruby/object:Gem::Requirement
89
+ requirements:
90
+ - - ">="
91
+ - !ruby/object:Gem::Version
92
+ version: 2.3.0
93
+ required_rubygems_version: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - ">="
96
+ - !ruby/object:Gem::Version
97
+ version: 2.6.7
98
+ requirements: []
99
+ rubyforge_project:
100
+ rubygems_version: 2.6.7
101
+ signing_key:
102
+ specification_version: 4
103
+ summary: Url and Mail parsers.
104
+ test_files: []