From 4850a7b496cb77816236f9fab37098bace2547dc Mon Sep 17 00:00:00 2001 From: Marcos Lilljedahl Date: Mon, 16 Oct 2017 19:43:56 -0300 Subject: [PATCH] Add endpoint to retrieve user by userId --- handlers/bootstrap.go | 1 + handlers/user.go | 23 +++++++++++++++++++++++ storage/file.go | 2 +- 3 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 handlers/user.go diff --git a/handlers/bootstrap.go b/handlers/bootstrap.go index e46bdae..2438e1d 100644 --- a/handlers/bootstrap.go +++ b/handlers/bootstrap.go @@ -80,6 +80,7 @@ func Register(extend HandlerExtender) { }).Methods("GET") r.HandleFunc("/users/me", LoggedInUser).Methods("GET") + r.HandleFunc("/users/{userId}", GetUser).Methods("GET") r.HandleFunc("/oauth/providers", ListProviders).Methods("GET") r.HandleFunc("/oauth/providers/{provider}/login", Login).Methods("GET") r.HandleFunc("/oauth/providers/{provider}/callback", LoginCallback).Methods("GET") diff --git a/handlers/user.go b/handlers/user.go new file mode 100644 index 0000000..002281a --- /dev/null +++ b/handlers/user.go @@ -0,0 +1,23 @@ +package handlers + +import ( + "encoding/json" + "log" + "net/http" + + "github.com/gorilla/mux" +) + +func GetUser(rw http.ResponseWriter, req *http.Request) { + vars := mux.Vars(req) + userId := vars["userId"] + + u, err := core.UserGet(userId) + if err != nil { + log.Println(err) + rw.WriteHeader(http.StatusInternalServerError) + return + } + + json.NewEncoder(rw).Encode(u) +} diff --git a/storage/file.go b/storage/file.go index 6baaade..ea84c9d 100644 --- a/storage/file.go +++ b/storage/file.go @@ -351,7 +351,7 @@ func (store *storage) UserPut(user *types.User) error { store.db.UsersByProvider[fmt.Sprintf("%s_%s", user.Provider, user.ProviderUserId)] = user.Id store.db.Users[user.Id] = user - return nil + return store.save() } func (store *storage) UserGet(id string) (*types.User, error) { store.rw.Lock()