Class: Absolutely::URI
- Inherits:
-
Object
- Object
- Absolutely::URI
- Defined in:
- lib/absolutely/uri.rb
Instance Attribute Summary collapse
-
#base ⇒ Object
Returns the value of attribute base.
-
#relative ⇒ Object
Returns the value of attribute relative.
Instance Method Summary collapse
- #base_uri ⇒ Object
-
#initialize(base:, relative:) ⇒ URI
constructor
A new instance of URI.
- #relative_uri ⇒ Object
- #to_absolute_uri ⇒ Object
Constructor Details
#initialize(base:, relative:) ⇒ URI
Returns a new instance of URI.
5 6 7 8 9 10 11 12 13 14 15 |
# File 'lib/absolutely/uri.rb', line 5 def initialize(base:, relative:) raise ArgumentError, "base must be a String (given #{base.class.name})" unless base.is_a?(String) raise ArgumentError, "relative must be a String (given #{relative.class.name})" unless relative.is_a?(String) @base = base @relative = relative raise ArgumentError, 'base must be an absolute URI (e.g. https://example.com)' unless base_uri.absolute? relative_uri end |
Instance Attribute Details
#base ⇒ Object
Returns the value of attribute base.
3 4 5 |
# File 'lib/absolutely/uri.rb', line 3 def base @base end |
#relative ⇒ Object
Returns the value of attribute relative.
3 4 5 |
# File 'lib/absolutely/uri.rb', line 3 def relative @relative end |
Instance Method Details
#base_uri ⇒ Object
17 18 19 20 21 |
# File 'lib/absolutely/uri.rb', line 17 def base_uri @base_uri ||= Addressable::URI.parse(base) rescue Addressable::URI::InvalidURIError => error raise InvalidURIError, error end |
#relative_uri ⇒ Object
23 24 25 26 27 |
# File 'lib/absolutely/uri.rb', line 23 def relative_uri @relative_uri ||= Addressable::URI.parse(relative) rescue Addressable::URI::InvalidURIError => error raise InvalidURIError, error end |
#to_absolute_uri ⇒ Object
29 30 31 32 33 |
# File 'lib/absolutely/uri.rb', line 29 def to_absolute_uri return relative_uri.to_s if relative_uri.absolute? (base_uri + relative_uri).to_s end |