aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--main.go64
1 files changed, 36 insertions, 28 deletions
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 <username>")
- os.Exit(1)
+ return "", fmt.Errorf("Usage: gh_authkey_checker <username>")
}
- 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
}