Extract logic for getting user by name & provider

pull/2132/head
Michael Desa 2017-10-18 12:34:23 -04:00
parent b86164e710
commit f0f5bc071b
1 changed files with 19 additions and 11 deletions

View File

@ -88,21 +88,12 @@ func (s *Service) Me(w http.ResponseWriter, r *http.Request) {
return
}
usrs, err := s.UsersStore.All(ctx)
usr, err := getUserBy(s.UsersStore, ctx, username, provider)
if err != nil {
msg := fmt.Errorf("error retrieving user with Username: %s, Provider: %s: %v", username, provider, err)
unknownErrorWithMessage(w, msg, s.Logger)
unknownErrorWithMessage(w, err, s.Logger)
return
}
var usr *chronograf.User
for _, u := range usrs {
if u.Name == username && u.Provider == provider {
usr = &u
break
}
}
if usr != nil {
res := newMeResponse(usr)
encodeJSON(w, http.StatusOK, res, s.Logger)
@ -124,3 +115,20 @@ func (s *Service) Me(w http.ResponseWriter, r *http.Request) {
res := newMeResponse(newUser)
encodeJSON(w, http.StatusOK, res, s.Logger)
}
func getUserBy(store chronograf.UsersStore, ctx context.Context, name, provider string) (*chronograf.User, error) {
usrs, err := store.All(ctx)
if err != nil {
msg := fmt.Errorf("error retrieving user with Username: %s, Provider: %s: %v", name, provider, err)
return nil, msg
}
for _, u := range usrs {
if u.Name == name && u.Provider == provider {
return &u, nil
}
}
// TODO: this should really return an error
return nil, nil
}