Issue #12867 has been updated by Matthew Kerwin.


Shlok Srivastava wrote:
> Shyouhei Urabe wrote:
> > Doesn't URI.parse work for you?
> 
> As URI.parse actually check for valid URIs and not URLs
> 
> I tried something like this:
> 
> ~~~ ruby
> URI.parse(some_string).scheme == "http"
> ~~~
> 
> But it returns true for invalid URLs which seem to be valid URIs ( Example: `http:invalid-url` )

`http:invalid-url` is invalid according to the scheme-specific definition in RFC7230, but is valid and parses according to RFC3986. Depending on one's viewpoint, there's either no way to know whether or not a given URI is a URL/URN without implementing that particular scheme's specification, or all URIs are URLs except for those in the "urn:" scheme. And without implementing a scheme's spec, there's no way to know whether a given URI (which is valid according to RFC3986) is valid *for that scheme*.

So from that I infer that you either want a scheme-aware validator, or you want a http(s)-specific validator. Is that correct? And if so, which is it? Will you ever want to validate (s)ftp URIs? Or mailto? Or xmpp? Or file? etc. all of which are URL schemes.

----------------------------------------
Feature #12867: Add ability to check validity of a URL
https://bugs.ruby-lang.org/issues/12867#change-61049

* Author: Shlok Srivastava
* Status: Open
* Priority: Normal
* Assignee: 
----------------------------------------
Hi!
Going through the URI module of Ruby, it was obvious that we can check the validity of a URI by using URI.regexp . However, I found out there is no way we can accurately check for a valid URL by using the URI module. Won't it be better if there was a built in method in the URI module that could check for the validity of a URL or a URN as well ? 

This is just a suggestion and feel free to close it if this doesn't seems like something that should be implemented. :)

PS- If you feel this can or should be implemented, I would love to work on it. ;)
Thank you. 




-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>