From fbf14704e734ca812bbb2f1919706009a4188228 Mon Sep 17 00:00:00 2001 From: Niko Abeler Date: Tue, 8 Nov 2022 20:10:50 +0100 Subject: [PATCH] refactor handler --- cmd/owl/web/auth_handler.go | 46 +++++++++++++++---------------------- 1 file changed, 18 insertions(+), 28 deletions(-) diff --git a/cmd/owl/web/auth_handler.go b/cmd/owl/web/auth_handler.go index d1691c3..2e08638 100644 --- a/cmd/owl/web/auth_handler.go +++ b/cmd/owl/web/auth_handler.go @@ -40,6 +40,17 @@ type AccessTokenResponse struct { RefreshToken string `json:"refresh_token"` } +func jsonResponse(w http.ResponseWriter, response interface{}) { + jsonData, err := json.Marshal(response) + if err != nil { + println("Error marshalling json: ", err.Error()) + w.WriteHeader(http.StatusInternalServerError) + w.Write([]byte("Internal server error")) + } + w.Header().Add("Content-Type", "application/json") + w.Write(jsonData) +} + func userAuthMetadataHandler(repo *owl.Repository) func(http.ResponseWriter, *http.Request, httprouter.Params) { return func(w http.ResponseWriter, r *http.Request, ps httprouter.Params) { user, err := getUserFromRepo(repo, ps) @@ -48,8 +59,8 @@ func userAuthMetadataHandler(repo *owl.Repository) func(http.ResponseWriter, *ht notFoundHandler(repo)(w, r) return } - - response := IndieauthMetaDataResponse{ + w.WriteHeader(http.StatusOK) + jsonResponse(w, IndieauthMetaDataResponse{ Issuer: user.FullUrl(), AuthorizationEndpoint: user.AuthUrl(), TokenEndpoint: user.TokenUrl(), @@ -57,14 +68,7 @@ func userAuthMetadataHandler(repo *owl.Repository) func(http.ResponseWriter, *ht ScopesSupported: []string{"profile"}, ResponseTypesSupported: []string{"code"}, GrantTypesSupported: []string{"authorization_code"}, - } - jsonData, err := json.Marshal(response) - if err != nil { - println("Error marshalling json: ", err.Error()) - w.WriteHeader(http.StatusInternalServerError) - w.Write([]byte("Internal server error")) - } - w.Write(jsonData) + }) } } @@ -245,21 +249,14 @@ func userAuthProfileHandler(repo *owl.Repository) func(http.ResponseWriter, *htt valid, _ := verifyAuthCodeRequest(user, w, r) if valid { w.WriteHeader(http.StatusOK) - response := MeResponse{ + jsonResponse(w, MeResponse{ Me: user.FullUrl(), Profile: MeProfileResponse{ Name: user.Name(), Url: user.FullUrl(), Photo: user.AvatarUrl(), }, - } - jsonData, err := json.Marshal(response) - if err != nil { - println("Error marshalling json: ", err.Error()) - w.WriteHeader(http.StatusInternalServerError) - w.Write([]byte("Internal server error")) - } - w.Write(jsonData) + }) return } } @@ -289,20 +286,13 @@ func userAuthTokenHandler(repo *owl.Repository) func(http.ResponseWriter, *http. w.Write([]byte("Internal server error")) return } - response := AccessTokenResponse{ + jsonResponse(w, AccessTokenResponse{ Me: user.FullUrl(), TokenType: "Bearer", AccessToken: accessToken, Scope: authCode.Scope, ExpiresIn: duration, - } - jsonData, err := json.Marshal(response) - if err != nil { - println("Error marshalling json: ", err.Error()) - w.WriteHeader(http.StatusInternalServerError) - w.Write([]byte("Internal server error")) - } - w.Write(jsonData) + }) return } }