Files
PBinCLI/pbincli/api.py

93 lines
3.2 KiB
Python
Raw Normal View History

2017-02-19 13:26:22 +03:00
import requests
2018-05-22 20:44:18 +03:00
class PrivateBin:
def __init__(self, settings=None):
self.server = settings['server']
2017-02-19 13:26:22 +03:00
self.headers = {'X-Requested-With': 'JSONHttpRequest'}
if settings['proxy']:
self.proxy = {settings['proxy'].split('://')[0]: settings['proxy']}
2018-02-12 17:28:18 +03:00
else:
2018-05-22 20:44:18 +03:00
self.proxy = {}
2017-02-20 15:13:42 +03:00
if settings['noinsecurewarn']:
from requests.packages.urllib3.exceptions import InsecureRequestWarning
requests.packages.urllib3.disable_warnings(InsecureRequestWarning)
self.session = requests.Session()
self.session.verify = settings['nocheckcert']
2017-02-20 15:13:42 +03:00
def post(self, request):
result = self.session.post(
2019-06-02 14:04:38 +00:00
url = self.server,
headers = self.headers,
proxies = self.proxy,
data = request)
try:
return result.json()
except ValueError:
2019-06-21 13:12:17 +00:00
print("ERROR: Unable parse response as json. Received (size = {}):\n{}".format(len(result.text), result.text))
2019-06-02 14:04:38 +00:00
exit(1)
2017-02-20 15:13:42 +03:00
def get(self, request):
return self.session.get(
2019-06-02 14:04:38 +00:00
url = self.server + "?" + request,
headers = self.headers,
proxies = self.proxy).json()
def delete(self, request):
# using try as workaround for versions < 1.3 due to we cant detect
# if server used version 1.2, where auto-deletion is added
try:
result = self.session.post(
2019-06-19 10:58:41 +00:00
url = self.server,
headers = self.headers,
proxies = self.proxy,
data = request).json()
except ValueError:
2019-06-02 14:04:38 +00:00
# unable parse response as json because it can be empty (1.2), so simulate correct answer
2019-06-21 13:12:17 +00:00
print("NOTICE: Received empty response. We interpret that as our paste has already been deleted.")
2019-06-02 14:04:38 +00:00
from json import loads as json_loads
2019-06-19 10:58:41 +00:00
result = json_loads('{"status":0}')
if not result['status']:
print("Paste successfully deleted!")
elif result['status']:
print("Something went wrong...\nError:\t\t{}".format(result['message']))
exit(1)
else:
print("Something went wrong...\nError: Empty response.")
exit(1)
2017-02-20 15:13:42 +03:00
2019-06-02 14:04:38 +00:00
def getVersion(self):
jsonldSchema = self.session.get(
2019-06-02 14:04:38 +00:00
url = self.server + '?jsonld=paste',
proxies = self.proxy).json()
return jsonldSchema['@context']['v']['@value'] \
if ('@context' in jsonldSchema and
'v' in jsonldSchema['@context'] and
'@value' in jsonldSchema['@context']['v']) \
else 1
class Shortener:
def __init__(self, settings=None):
self.server = settings['server']
self.headers = {'X-Requested-With': 'JSONHttpRequest'}
if settings['proxy']:
self.proxy = {settings['proxy'].split('://')[0]: settings['proxy']}
else:
self.proxy = {}
if settings['noinsecurewarn']:
from requests.packages.urllib3.exceptions import InsecureRequestWarning
requests.packages.urllib3.disable_warnings(InsecureRequestWarning)
self.session = requests.Session()
self.session.verify = settings['nocheckcert']