Repository navigation
[feature] add non-exhausive URI validation #352
Description
Activity
- linked a pull request that will close this issuefeat: lays foundation for URI validation #353
on Apr 3, 2024 - pinned this issue
on Apr 9, 2024 are you taking any new suggestions?
Constructive ones, please go ahead.
Reacted by lola--- # Define a list of valid URI schemes => VALID_SCHEMES = ['http', 'https', 'ftp', 'mailto', 'file']
- We could make the parameter-> value(str) flexible perhaps not restrict it to a type str, could be src/path/to/file; which could contain different urls
- do a recursive search(regex expression perhaps) to match pattern
Reacted by nandgatoris it something we should do?
Something similar yeah.
can I take up the challenge :)?
Sure, go ahead.
Hey @yozachar ,can we use socket.inet_aton(ip) in python to validate ip addresses as a function then update the schema in uri.py?
# URL-based schemes if any( value.startswith(item + "://") for item in { "ftp", "ftps", "git", "http", "https", "irc", "rtmp", "rtmps", "rtsp", "sftp", "ssh", "telnet", "gopher", "ldap", "sip", "nfs", "mqtt", "smb", "udp" } ):IP addresses are already validated in
ip_address.py. Why usesocket.inet_aton?Hi, that is cool I looked at the message thread, something about this error below , was why I thought this feature was asked for I guess, see code below.
import validators streamurl = "rtmp://192.168.1.123:1935/live/test" print(validators.url(streamurl))Output:
ValidationError(func=url, args={'value': 'rtmp://192.168.1.123:1935/live/test'})Or does it mean we just want to validate other schemas? like the ones few ones below, that I could not find in uri.py
proposed schemas
"Uri": { "udp": udp://192.168.1.1:1234/path;param=value?, "gopher": gopher://gopher.example.com/1/path;type=1?search#frag,\ "ldap": ldap://ldap.example.com/cn=John%20Doe,dc=example,dc=com;scope=one?sn#frag, \ "sip":sip://user:password@sip.example.com/path;transport=tcp?subject=Hello#frag, \ "smb": smb://fileserver.example.com/share/path;param=value?query=1#fragment\ }Few Thoughts
- Have a regex expression : that complies the schema above.
- uri_regrex: re.compile()
e.g
# Validate using regex for URL-based schemes if uri_regex.match(value): return True- locked and limited conversation to collaborators
on Jul 10, 2024
Suggestions are welcome:
validators/src/validators/uri.py
Lines 24 to 41 in cdc987d