etherpump/etherpump/commands/creatediffhtml.py

53 lines
1.6 KiB
Python

"""Calls the createDiffHTML API function for the given padid"""
import json
from argparse import ArgumentParser
from urllib.error import HTTPError, URLError
from urllib.parse import urlencode
from urllib.request import urlopen
def main(args):
p = ArgumentParser(
"calls the createDiffHTML API function for the given padid"
)
p.add_argument("padid", help="the padid")
p.add_argument(
"--padinfo",
default=".etherpump/settings.json",
help="settings, default: .etherdump/settings.json",
)
p.add_argument("--showurl", default=False, action="store_true")
p.add_argument(
"--format",
default="text",
help="output format, can be: text, json; default: text",
)
p.add_argument(
"--rev", type=int, default=None, help="revision, default: latest"
)
args = p.parse_args(args)
with open(args.padinfo) as f:
info = json.load(f)
apiurl = info.get("apiurl")
# apiurl = "{0[protocol]}://{0[hostname]}:{0[port]}{0[apiurl]}{0[apiversion]}/".format(info)
data = {}
data["apikey"] = info["apikey"]
data["padID"] = args.padid
data["startRev"] = "0"
if args.rev != None:
data["rev"] = args.rev
requesturl = apiurl + "createDiffHTML?" + urlencode(data)
if args.showurl:
print(requesturl)
else:
try:
results = json.load(urlopen(requesturl))["data"]
if args.format == "json":
print(json.dumps(results))
else:
print(results["html"])
except HTTPError as e:
pass