github.com/k0marov/go-socnet@v0.0.0-20220715154813-90d07867c782/features/profiles/delivery/http/handlers/displayers.go (about) 1 package handlers 2 3 import ( 4 "github.com/k0marov/go-socnet/core/general/client_errors" 5 helpers "github.com/k0marov/go-socnet/core/helpers/http_helpers" 6 "net/http" 7 8 "github.com/k0marov/go-socnet/features/profiles/delivery/http/responses" 9 10 "github.com/k0marov/go-socnet/features/profiles/domain/service" 11 12 "github.com/go-chi/chi/v5" 13 ) 14 15 func NewGetMeHandler(getProfile service.ProfileGetter) http.HandlerFunc { 16 return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { 17 user, ok := helpers.GetUserOrAddUnauthorized(w, r) 18 if !ok { 19 return 20 } 21 profile, err := getProfile(user.Id, user.Id) 22 if err != nil { 23 helpers.HandleServiceError(w, err) 24 return 25 } 26 helpers.WriteJson(w, responses.NewProfileResponse(profile)) 27 }) 28 } 29 30 func NewGetByIdHandler(profileGetter service.ProfileGetter) http.HandlerFunc { 31 return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { 32 user, ok := helpers.GetUserOrAddUnauthorized(w, r) 33 if !ok { 34 return 35 } 36 id := chi.URLParam(r, "id") 37 if id == "" { 38 helpers.ThrowClientError(w, client_errors.IdNotProvided) 39 return 40 } 41 profile, err := profileGetter(id, user.Id) 42 if err != nil { 43 helpers.HandleServiceError(w, err) 44 return 45 } 46 helpers.WriteJson(w, responses.NewProfileResponse(profile)) 47 }) 48 } 49 50 func NewGetFollowsHandler(followsGetter service.FollowsGetter) http.HandlerFunc { 51 return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { 52 caller, ok := helpers.GetUserOrAddUnauthorized(w, r) 53 if !ok { 54 return 55 } 56 id := chi.URLParam(r, "id") 57 if id == "" { 58 helpers.ThrowClientError(w, client_errors.IdNotProvided) 59 return 60 } 61 follows, err := followsGetter(id, caller.Id) 62 if err != nil { 63 helpers.HandleServiceError(w, err) 64 return 65 } 66 helpers.WriteJson(w, responses.NewProfilesResponse(follows)) 67 }) 68 }