cmd/checker: list only my own checkers
diff --git a/cmd/checker/main.go b/cmd/checker/main.go
index b2b35b6..6a6a67d 100644
--- a/cmd/checker/main.go
+++ b/cmd/checker/main.go
@@ -21,7 +21,6 @@
 	"encoding/json"
 	"flag"
 	"fmt"
-	"io"
 	"io/ioutil"
 	"log"
 	"net/http"
@@ -204,7 +203,6 @@
 		return err
 	}
 	*ts = Timestamp(t)
-	log.Println("unmarshal", t)
 	return nil
 }
 
@@ -227,7 +225,6 @@
 
 func (w *wrapJar) Cookies(u *url.URL) []*http.Cookie {
 	cs := w.CookieJar.Cookies(u)
-	//	log.Println("cookies for", u, cs)
 	return cs
 }
 
@@ -236,11 +233,13 @@
 	cs = w.CookieJar.Cookies(u)
 }
 
+const checkerScheme = "fmt:"
+
 func (g *gerrit) CreateChecker(repo string) (*CheckerInfo, error) {
 	var uuidRandom [20]byte
 	rand.Reader.Read(uuidRandom[:])
 
-	uuid := fmt.Sprintf("fmt:%x", uuidRandom)
+	uuid := fmt.Sprintf("%s%x", checkerScheme, uuidRandom)
 	in := CheckerInput{
 		UUID:        uuid,
 		Name:        "fmtserver",
@@ -259,17 +258,11 @@
 	if err != nil {
 		return nil, err
 	}
-	if !bytes.HasPrefix(content, jsonPrefix) {
-		if len(content) > 100 {
-			content = content[:100]
-		}
-		bodyStr := string(content)
 
-		return nil, fmt.Errorf("prefix %q not found, got %s", jsonPrefix, bodyStr)
-	}
-
-	content = bytes.TrimPrefix(content, []byte(jsonPrefix))
 	out := CheckerInfo{}
+	if err := unmarshal(content, &out); err != nil {
+		return nil, err
+	}
 
 	log.Printf("return value: %s", string(content))
 	if err := json.Unmarshal(content, &out); err != nil {
@@ -280,6 +273,43 @@
 	return &out, nil
 }
 
+func unmarshal(content []byte, dest interface{}) error {
+	if !bytes.HasPrefix(content, jsonPrefix) {
+		if len(content) > 100 {
+			content = content[:100]
+		}
+		bodyStr := string(content)
+
+		return fmt.Errorf("prefix %q not found, got %s", jsonPrefix, bodyStr)
+	}
+
+	content = bytes.TrimPrefix(content, []byte(jsonPrefix))
+
+	return json.Unmarshal(content, dest)
+}
+
+func (g *gerrit) ListCheckers() ([]*CheckerInfo, error) {
+	c, err := g.getPath("plugins/checks/checkers/")
+	if err != nil {
+		log.Fatalf("ListCheckers: %v", err)
+	}
+
+	var out []*CheckerInfo
+	if err := unmarshal(c, &out); err != nil {
+		return nil, err
+	}
+
+	filtered := out[:0]
+	for _, o := range out {
+		if !strings.HasPrefix(o.UUID, checkerScheme) {
+			continue
+		}
+
+		filtered = append(filtered, o)
+	}
+	return filtered, nil
+}
+
 type gerritChecker struct {
 	gerrit    *gerrit
 	fmtClient *rpc.Client
@@ -368,20 +398,20 @@
 	}
 
 	// Do a GET first to complete any cookie dance, because POST aren't redirected properly.
-	if c, err := g.getPath("a/accounts/self"); err != nil {
+	if _, err := g.getPath("a/accounts/self"); err != nil {
 		log.Fatalf("accounts/self: %v", err)
-	} else {
-		io.Copy(os.Stdout, bytes.NewBuffer(c))
 	}
 
 	if *list {
-		if c, err := g.getPath("plugins/checks/checkers/"); err != nil {
-			log.Fatalf("ListCheckers: %v", err)
+		if out, err := g.ListCheckers(); err != nil {
+			log.Fatalf("Lits: %v", err)
 		} else {
-			io.Copy(os.Stdout, bytes.NewBuffer(c))
+			log.Println(out)
 		}
+
 		os.Exit(0)
 	}
+
 	if *register {
 		if *repo == "" {
 			log.Fatalf("need to set --repo")