{"action":"created","issue":{"url":"https://api.github.com/repos/hapijs/joi/issues/457","labels_url":"https://api.github.com/repos/hapijs/joi/issues/457/labels{/name}","comments_url":"https://api.github.com/repos/hapijs/joi/issues/457/comments","events_url":"https://api.github.com/repos/hapijs/joi/issues/457/events","html_url":"https://github.com/hapijs/joi/pull/457","id":46061239,"number":457,"title":"Add URI Validation","user":{"login":"DavidTPate","id":2223120,"avatar_url":"https://avatars.githubusercontent.com/u/2223120?v=3","gravatar_id":"","url":"https://api.github.com/users/DavidTPate","html_url":"https://github.com/DavidTPate","followers_url":"https://api.github.com/users/DavidTPate/followers","following_url":"https://api.github.com/users/DavidTPate/following{/other_user}","gists_url":"https://api.github.com/users/DavidTPate/gists{/gist_id}","starred_url":"https://api.github.com/users/DavidTPate/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/DavidTPate/subscriptions","organizations_url":"https://api.github.com/users/DavidTPate/orgs","repos_url":"https://api.github.com/users/DavidTPate/repos","events_url":"https://api.github.com/users/DavidTPate/events{/privacy}","received_events_url":"https://api.github.com/users/DavidTPate/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/hapijs/joi/labels/enhancement","name":"enhancement","color":"207de5"}],"state":"open","locked":false,"assignee":{"login":"Marsup","id":796194,"avatar_url":"https://avatars.githubusercontent.com/u/796194?v=3","gravatar_id":"","url":"https://api.github.com/users/Marsup","html_url":"https://github.com/Marsup","followers_url":"https://api.github.com/users/Marsup/followers","following_url":"https://api.github.com/users/Marsup/following{/other_user}","gists_url":"https://api.github.com/users/Marsup/gists{/gist_id}","starred_url":"https://api.github.com/users/Marsup/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Marsup/subscriptions","organizations_url":"https://api.github.com/users/Marsup/orgs","repos_url":"https://api.github.com/users/Marsup/repos","events_url":"https://api.github.com/users/Marsup/events{/privacy}","received_events_url":"https://api.github.com/users/Marsup/received_events","type":"User","site_admin":false},"milestone":{"url":"https://api.github.com/repos/hapijs/joi/milestones/29","labels_url":"https://api.github.com/repos/hapijs/joi/milestones/29/labels","id":946814,"number":29,"title":"6.0.0","description":"","creator":{"login":"Marsup","id":796194,"avatar_url":"https://avatars.githubusercontent.com/u/796194?v=3","gravatar_id":"","url":"https://api.github.com/users/Marsup","html_url":"https://github.com/Marsup","followers_url":"https://api.github.com/users/Marsup/followers","following_url":"https://api.github.com/users/Marsup/following{/other_user}","gists_url":"https://api.github.com/users/Marsup/gists{/gist_id}","starred_url":"https://api.github.com/users/Marsup/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Marsup/subscriptions","organizations_url":"https://api.github.com/users/Marsup/orgs","repos_url":"https://api.github.com/users/Marsup/repos","events_url":"https://api.github.com/users/Marsup/events{/privacy}","received_events_url":"https://api.github.com/users/Marsup/received_events","type":"User","site_admin":false},"open_issues":2,"closed_issues":15,"state":"open","created_at":"2015-01-22T12:40:40Z","updated_at":"2015-02-22T16:11:06Z","due_on":null,"closed_at":null},"comments":14,"created_at":"2014-10-17T04:05:56Z","updated_at":"2015-02-24T18:24:09Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/hapijs/joi/pulls/457","html_url":"https://github.com/hapijs/joi/pull/457","diff_url":"https://github.com/hapijs/joi/pull/457.diff","patch_url":"https://github.com/hapijs/joi/pull/457.patch"},"body":"Hi there! Just started using this library and really enjoying it. Came up with a use case where I need to validate some URIs and noticed there were a few Pulls that came up but they were missing functionality. I went ahead and created a new library [isUri](/DavidTPate/isuri) which implements the full [RFC 3986](http://tools.ietf.org/html/rfc3986) in a build-up to a regular expression which it then uses to validate the URIs.\r\n\r\nI added accompanying tests (similar to how email is tested currently) and also the error message as needed. I included all of the URLs that I've gathered thus far for testing my library as part of the tests, if there are any additional I'd love to add them to both implementations."},"comment":{"url":"https://api.github.com/repos/hapijs/joi/issues/comments/75814675","html_url":"https://github.com/hapijs/joi/pull/457#issuecomment-75814675","issue_url":"https://api.github.com/repos/hapijs/joi/issues/457","id":75814675,"user":{"login":"DavidTPate","id":2223120,"avatar_url":"https://avatars.githubusercontent.com/u/2223120?v=3","gravatar_id":"","url":"https://api.github.com/users/DavidTPate","html_url":"https://github.com/DavidTPate","followers_url":"https://api.github.com/users/DavidTPate/followers","following_url":"https://api.github.com/users/DavidTPate/following{/other_user}","gists_url":"https://api.github.com/users/DavidTPate/gists{/gist_id}","starred_url":"https://api.github.com/users/DavidTPate/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/DavidTPate/subscriptions","organizations_url":"https://api.github.com/users/DavidTPate/orgs","repos_url":"https://api.github.com/users/DavidTPate/repos","events_url":"https://api.github.com/users/DavidTPate/events{/privacy}","received_events_url":"https://api.github.com/users/DavidTPate/received_events","type":"User","site_admin":false},"created_at":"2015-02-24T18:24:09Z","updated_at":"2015-02-24T18:24:09Z","body":"Thanks @hueniverse I'll do a benchmark test on it. During initial development Regex proved to be faster, but that was tested with a less complex Regex. I definitely want to go through and re-evaluate a little to see if I can simplify/gain processing velocity."}}