PrivateBin CLI on python 3
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.

56 lines
1.2 KiB

import json, ntpath, os, sys
from platform import system
8 years ago
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)
8 years ago
def check_readable(f):
# Checks if path exists and readable
8 years ago
if not os.path.exists(f) or not os.access(f, os.R_OK):
PBinCLIError("Error accessing path: {}".format(f))
8 years ago
8 years ago
def check_writable(f):
# Checks if path is writable
8 years ago
if not os.access(os.path.dirname(f) or ".", os.W_OK):
PBinCLIError("Path is not writable: {}".format(f))
8 years ago
def json_encode(s):
return json.dumps(s, separators=(',',':')).encode()
def validate_url_ending(s):
if not s.endswith('/'):
s = s + "/"
return s
def validate_path_ending(s):
if system() == 'Windows':
slash = '\\'
else:
slash = '/'
if not s.endswith(slash):
s = s + slash
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