mirror of https://github.com/r4sas/PBinCLI
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
45 lines
1.0 KiB
45 lines
1.0 KiB
import json, ntpath, os, sys |
|
|
|
class PBinCLIException(Exception): |
|
pass |
|
|
|
|
|
def PBinCLIError(message): |
|
print("PBinCLI Error: {}".format(message), file=sys.stderr) |
|
sys.exit(1) |
|
|
|
|
|
def path_leaf(path): |
|
head, tail = ntpath.split(path) |
|
return tail or ntpath.basename(head) |
|
|
|
|
|
def check_readable(f): |
|
# Checks if path exists and readable |
|
if not os.path.exists(f) or not os.access(f, os.R_OK): |
|
PBinCLIError("Error accessing path: {}".format(f)) |
|
|
|
|
|
def check_writable(f): |
|
# Checks if path is writable |
|
if not os.access(os.path.dirname(f) or ".", os.W_OK): |
|
PBinCLIError("Path is not writable: {}".format(f)) |
|
|
|
|
|
def json_encode(s): |
|
return json.dumps(s, separators=(',',':')).encode() |
|
|
|
|
|
def validate_url_ending(s): |
|
if not s.endswith('/'): |
|
s = s + "/" |
|
return s |
|
|
|
def uri_validator(x): |
|
from urllib.parse import urlsplit |
|
try: |
|
result = urlsplit(x) |
|
isuri = all([result.scheme, result.netloc]) |
|
return result, isuri |
|
except ValueError: |
|
return False |