diff --git a/libmxclient/mxclientlib.go b/libmxclient/mxclientlib.go index 50005fd..e66dc40 100644 --- a/libmxclient/mxclientlib.go +++ b/libmxclient/mxclientlib.go @@ -124,7 +124,10 @@ cli tools //export cli_discoverhs func cli_discoverhs(id *C.char) *C.char { mxid := C.GoString(id) - result := mxutils.DiscoverHS(mxid) + result, err := mxutils.DiscoverHS(mxid) + if err != nil { + return C.CString(fmt.Sprintf("ERR: %v", err)) + } return C.CString(result) } diff --git a/libmxclient/mxutils/utils.go b/libmxclient/mxutils/utils.go index 77a8ce3..4869528 100644 --- a/libmxclient/mxutils/utils.go +++ b/libmxclient/mxutils/utils.go @@ -12,7 +12,8 @@ import ( "maunium.net/go/mautrix/id" ) -func DiscoverHS(ids string) string { +// DiscoverHS try to discover the homeserver url from the given string. +func DiscoverHS(ids string) (string, error) { var domainname string @@ -30,17 +31,17 @@ func DiscoverHS(ids string) string { wk, err := mautrix.DiscoverClientAPI(context.Background(), domainname) if err != nil { - return fmt.Sprintf("ERR: %v", err) + return "", err } if wk == nil { - return fmt.Sprintf("No well-known. hs from input: %s", domainname) + return domainname, nil } j, err := json.Marshal(wk) if err != nil { - return fmt.Sprintf("ERR: %v", err) + return "", err } - return string(j) + return string(j), nil } func MkToken(ids string, pw string) string { diff --git a/smal/src/pymxutils/mxutils/discoverhs.py b/smal/src/pymxutils/mxutils/discoverhs.py index a422cf7..e9af657 100644 --- a/smal/src/pymxutils/mxutils/discoverhs.py +++ b/smal/src/pymxutils/mxutils/discoverhs.py @@ -7,8 +7,11 @@ import json @click.command() +@click.option( + "--json", "show_json", is_flag=True, help="show json as returned from server." +) @click.argument("domain", metavar="string") -def discoverhs(domain): +def discoverhs(domain, show_json): """Attempts to discover the homeserver from the given string""" mxid = domain.encode(encoding="utf-8") @@ -18,5 +21,8 @@ def discoverhs(domain): if result.startswith("ERR:"): print(result) sys.exit(1) - result_dict = json.loads(result) - print(result_dict["m.homeserver"]["base_url"]) + if show_json: + print(result) + else: + result_dict = json.loads(result) + print(result_dict["m.homeserver"]["base_url"])