in src/users/src/users-service/handlers.go [28:91]
func UserIndex(w http.ResponseWriter, r *http.Request) {
enableCors(&w)
var offset = 0
var count = 20
var keys = r.URL.Query()
var offsetParam = keys.Get("offset")
if len(offsetParam) > 0 {
i, err := strconv.Atoi(offsetParam)
if err != nil {
panic(err)
}
if i < 0 {
http.Error(w, "Offset must be >= 0", http.StatusUnprocessableEntity)
return
}
offset = i
}
var countParam = keys.Get("count")
if len(countParam) > 0 {
i, err := strconv.Atoi(countParam)
if err != nil {
panic(err)
}
if i < 1 {
http.Error(w, "Count must be > 0", http.StatusUnprocessableEntity)
return
}
if i > 10000 {
http.Error(w, "Count exceeds maximum value; please use paging by offset", http.StatusUnprocessableEntity)
return
}
count = i
}
w.Header().Set("Content-Type", "application/json; charset=UTF-8")
var end = offset + count
if end > len(users) {
end = len(users)
}
ret := make([]User, 0, count)
idx := offset
for len(ret) < count && idx < len(users) {
// Do NOT return any users with an associated identity ID.
if len(users[idx].IdentityId) == 0 {
ret = append(ret, users[idx])
}
idx++
}
if err := json.NewEncoder(w).Encode(ret); err != nil {
panic(err)
}
}