FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
python-validators/src/validators/uri.py at master · sysfce2/python-validators · GitHub
sysfce2
python-validators
Repository navigation
Code
Pull requests
1
(1)
Actions
Security and quality
Insights
Expand file tree
Breadcrumbs
python-validators
/
src
/
validators
/
uri.py
Copy path
More file actions
More file actions
Latest commit
History
History
History
91 lines (69 loc) · 1.78 KB
Breadcrumbs
python-validators
/
src
/
validators
/
uri.py
Copy path
File metadata and controls
91 lines (69 loc) · 1.78 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
"""URI."""
# Read: https://stackoverflow.com/questions/176264
# https://www.rfc-editor.org/rfc/rfc3986#section-3
# local
from
.
email
import
email
from
.
url
import
url
from
.
utils
import
validator
def
_file_url
(
value
:
str
):
if
not
value
.
startswith
(
"file:///"
):
return
False
return
True
def
_ipfs_url
(
value
:
str
):
if
not
value
.
startswith
(
"ipfs://"
):
return
False
return
True
@
validator
def
uri
(
value
:
str
,
/
):
"""Return whether or not given value is a valid URI.
Examples:
>>> uri('mailto:example@domain.com')
# Output: True
>>> uri('file:path.txt')
# Output: ValidationError(func=uri, ...)
Args:
value:
URI to validate.
Returns:
(Literal[True]): If `value` is a valid URI.
(ValidationError): If `value` is an invalid URI.
"""
if
not
value
:
return
False
# TODO: work on various validations
# url
if
any
(
# fmt: off
value
.
startswith
(
item
)
for
item
in
{
"ftp"
,
"ftps"
,
"git"
,
"http"
,
"https"
,
"irc"
,
"rtmp"
,
"rtmps"
,
"rtsp"
,
"sftp"
,
"ssh"
,
"telnet"
,
}
# fmt: on
):
return
url
(
value
)
# email
if
value
.
startswith
(
"mailto:"
):
return
email
(
value
.
lstrip
(
"mailto:"
))
# file
if
value
.
startswith
(
"file:"
):
return
_file_url
(
value
)
# ipfs
if
value
.
startswith
(
"ipfs:"
):
return
_ipfs_url
(
value
)
# magnet
if
value
.
startswith
(
"magnet:?"
):
return
True
# telephone
if
value
.
startswith
(
"tel:"
):
return
True
# data
if
value
.
startswith
(
"data:"
):
return
True
# urn
if
value
.
startswith
(
"urn:"
):
return
True
# urc
if
value
.
startswith
(
"urc:"
):
return
True
return
False
Back
|
FazBrowse Home
|
New Git URL