From 376f08237158c7ceab15cec4b9e8af5ca0d293a1 Mon Sep 17 00:00:00 2001 From: Alex Mayer Date: Wed, 19 Jun 2019 23:59:52 -0400 Subject: Return Errors From Functions And Log In Main Clean up returns Add empty line above each final return for consistency --- main.go | 64 ++++++++++++++++++++++++++++++++++++---------------------------- 1 file changed, 36 insertions(+), 28 deletions(-) (limited to 'main.go') diff --git a/main.go b/main.go index 18969d0..ff48177 100644 --- a/main.go +++ b/main.go @@ -8,59 +8,67 @@ import ( "os" ) -func parseArgs() string { +func parseArgs() (string, error) { // We can only accept one argument if len(os.Args) != 2 { - fmt.Println("Usage: gh_authkey_checker ") - os.Exit(1) + return "", fmt.Errorf("Usage: gh_authkey_checker ") } - return os.Args[1] -} -func fetchKeys(username string) string { - log.Printf("Fetching keys for user %s", username) + return os.Args[1], nil +} +func fetchKeys(username string) (string, error) { url := fmt.Sprintf("https://github.com/%s.keys", username) resp, err := http.Get(url) if err != nil { log.Fatal(err) } - defer resp.Body.Close() - if resp.StatusCode == http.StatusOK { - bodyBytes, err := ioutil.ReadAll(resp.Body) - if err != nil { - log.Fatalln(err) - } - bodyString := string(bodyBytes) - return bodyString + if resp.StatusCode != http.StatusOK { + return "", fmt.Errorf("Expected http 200 but got %d instead", resp.StatusCode) } - return "" -} -func checkUsername(username string) { - log.Printf("Checking for GitHub user %s", username) + bodyBytes, err := ioutil.ReadAll(resp.Body) + if err != nil { + return "", err + } + + return string(bodyBytes), nil +} +func checkUsername(username string) error { url := fmt.Sprintf("https://github.com/%s.keys", username) response, err := http.Get(url) if err != nil { - log.Fatalln(err) + return err } if response.StatusCode != http.StatusOK { - log.Fatalf("%s is an invalid user", username) + return fmt.Errorf("%s is an invalid user", username) } - log.Printf("Found valid user %s", username) - - return + return nil } func main() { - username := parseArgs() - checkUsername(username) - keys := fetchKeys(username) + username, err := parseArgs() + if err != nil { + log.Fatal(err) + } + + log.Printf("Checking for GitHub user %s", username) + err = checkUsername(username) + if err != nil { + log.Fatal(err) + } + log.Printf("Found valid user %s", username) + + log.Printf("Fetching keys for user %s", username) + keys, err := fetchKeys(username) + if err != nil { + log.Fatal(err) + } + fmt.Print(keys) - return } -- cgit v1.2.3