ungleich-cli/ungleich_pay.py

59 lines
2.3 KiB
Python

import urllib.request
import json
import sys
from pyotp import TOTP
UNGLEICH_PAY_SERVER_URL = "https://pay.ungleich.ch"
class ungleichPay(object):
def __init__(self, parser, parents):
self.parser = parser
self.parser['customers-list'] = self.parser['sub'].add_parser(
'customers-list',
help="List customers who have an active VM at ungleich",
parents=[parents])
self.parser['customers-list'].add_argument('--username', required=True)
self.parser['customers-list'].add_argument('--realm', required=True)
self.parser['customers-list'].add_argument(
'--seed', required=True,
help="A valid seed obtained from ungleich"
)
self.parser['customers-list'].add_argument(
'--email', required=True,
help="Email associated with the username"
)
self.parser['customers-list'].add_argument(
'--ungleich-pay-server', required=False,
help="A valid ungleich pay server url"
)
self.parser['customers-list'].set_defaults(func=self.customers_list)
def customers_list(self, args):
customers_list_endpoint = "/customers-list/"
if args.ungleich_pay_server:
request_url = args.ungleich_pay_server + customers_list_endpoint
else:
request_url = UNGLEICH_PAY_SERVER_URL + customers_list_endpoint
print(f"request_url={request_url}")
req = urllib.request.Request(url=request_url,
method='GET',
headers={
"email": args.email,
"username": args.username,
"realm": args.realm,
"token": TOTP(args.seed).now(),
"Accept": "application/json"
})
try:
response = urllib.request.urlopen(req)
except urllib.error.HTTPError as err:
print(str(err))
sys.exit(1)
except urllib.error.URLError as uerr:
print(str(uerr))
sys.exit(2)
response_json = json.loads(response.read().decode('utf-8'))
print(response_json["data"])