From 30bbc1de3365620e24097812cf919dde9f9fd3f4 Mon Sep 17 00:00:00 2001 From: Matt Baer Date: Thu, 28 Nov 2024 13:52:49 -0500 Subject: [PATCH] Add basic webfinger check utility --- cmd/ap-find/main.go | 55 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 cmd/ap-find/main.go diff --git a/cmd/ap-find/main.go b/cmd/ap-find/main.go new file mode 100644 index 0000000..4e0211f --- /dev/null +++ b/cmd/ap-find/main.go @@ -0,0 +1,55 @@ +package main + +import ( + "bytes" + "encoding/json" + "fmt" + "io/ioutil" + "log" + "net/http" + "os" + "strings" +) + +func main() { + if len(os.Args) < 2 { + log.Fatalln("usage: ap-inspect HANDLE") + } + handle := strings.TrimLeft(os.Args[1], "@") + parts := strings.Split(handle, "@") + if len(parts) < 2 { + log.Fatalln("invalid handle (expected @handle@host.name)") + } + + // Set up request + wfURL := "https://" + parts[1] + "/.well-known/webfinger?resource=acct:" + handle + log.Printf("Webfinger: %s", wfURL) + req, err := http.NewRequest("GET", wfURL, nil) + if err != nil { + log.Fatalln(err) + } + + // Send request + client := &http.Client{} + resp, err := client.Do(req) + if err != nil { + log.Fatalln(err) + } + if resp != nil && resp.Body != nil { + defer resp.Body.Close() + } + + body, err := ioutil.ReadAll(resp.Body) + if err != nil { + log.Fatalln(err) + } + fmt.Printf("Status : %s\n", resp.Status) + + // Pretty-print the response + var fmttd bytes.Buffer + err = json.Indent(&fmttd, body, "", " ") + if err != nil { + log.Fatalln(err) + } + fmt.Printf("Response:\n%s\n", fmttd.String()) +}