Comments (6)
It's called every time you parse a URI. It'll raise an exception if the URI is invalid.
For example: Addressable::URI.parse('http://example.com:bogus/')
from addressable.
Not if you don't set a port
>> Addressable::URI.parse('not even close to valid')
=> #<Addressable::URI:0x829c96cc URI:not even close to valid>
I guess a better question is why is the hostname part of the validate method checking if port, user, etc are nil?
from addressable.
That is, in fact, a valid URI, believe it or not. It just happens to be relative and it's not in normal form, but it is a URI.
from addressable.
If you'd like to reject relative URIs, you can just do this:
if uri.relative?
raise ArgumentError, 'URI must be absolute.'
end
Also, if you're accepting input from humans, please be sure to use Addressable::URI.heuristic_parse
, not Addressable::URI.parse
.
from addressable.
Thank you for the detailed responses. I'm not clear at all on how that's relative, so it's time for me to RTFM a bit more.
from addressable.
>> uri = Addressable::URI.parse('not even close to valid').normalize
=> #<Addressable::URI:0x80ad6a44 URI:not%20even%20close%20to%20valid>
>> uri.path
=> "not%20even%20close%20to%20valid"
>> uri.relative?
=> true
If a URI doesn't have a scheme component, it's relative.
This allows, for example, web pages to place anchors like this:
<a href="not even close to valid.html">elsewhere</a>
In this case, this link would resolve to:
>> uri_of_current_document = 'http://example.com/document.html'
=> "http://example.com/document.html"
>> (Addressable::URI.parse(uri_of_current_document) +
?> "not even close to valid.html").normalize
=> #<Addressable::URI:0x80ac60cc URI:http://example.com/not%20even%20close%20to%20valid.html>
from addressable.
Related Issues (20)
- Improve pure ruby IDNA implementation to match browsers behavior (IDNA2008 and UTS#46) HOT 3
- Equivalent of `URI.regexp(schemes)`? HOT 4
- Crypto mining
- undefined method `to_str' for :id:Symbol (NoMethodError) in 2.8.2 HOT 8
- Template expansion does not work with symbolized hashes in 2.8.1 HOT 1
- Update to 2.8.2 break test env HOT 1
- Any version after 2.8.1 causes errors in our test suite coming from addressable. HOT 8
- Drop support for Ruby 2.2 (and more?) HOT 3
- Disallow backtick in host HOT 1
- Normalize errors when trying to run a simple url normalize HOT 4
- Unsafe concurrent Hash access HOT 9
- k
- feed:http: crashes servers HOT 11
- Valid domain not parsing HOT 1
- Improve release flow HOT 7
- Addressable::URI.escape method does not escape & properly as path param HOT 1
- "CWE-798 - Hardcoded credentials" in Amazon Inspector from uri_spec.rb
- Allow Public Suffix 6
- Stop testing on `macos-11` HOT 2
- Downgrade the dependency for public_suffix HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from addressable.