Ross Light avatar Ross Light committed 8b856d7

Add MultiError type

Comments (0)

Files changed (1)

 
 import (
 	"encoding/json"
+	"fmt"
 	"net/http"
 )
 
 	w.Header().Set("Content-Type", JSONType)
 	return json.NewEncoder(w).Encode(v)
 }
+
+// A MultiError is returned by operations that have errors on particular elements.
+// This is functionally identical to appengine.MultiError.
+type MultiError []error
+
+func (e MultiError) Error() string {
+	msg, n := "", 0
+	for _, err := range e {
+		if err != nil {
+			if n == 0 {
+				msg = err.Error()
+			}
+			n++
+		}
+	}
+	switch n {
+	case 0:
+		return "0 errors"
+	case 1:
+		return msg
+	case 2:
+		return msg + " (and 1 other error)"
+	}
+	return fmt.Sprintf("%s (and %d other errors)", msg, n-1)
+}
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.