diff --git a/.env b/.env index 0c1b390..080241e 100644 --- a/.env +++ b/.env @@ -1,5 +1,5 @@ -MONGO_URI="mongodb://adminLinh:linhporo1@10.10.0.216:27017/linhporo1?authSource=admin" +MONGO_URI="mongodb://adminLinh:linhporo1@localhost:27017" API_TEST_PORT=":8080" -REDIS_URI="redis://10.10.0.216:6379/0" +REDIS_URI="redis://localhost:6479/0" STMP_PASS="btmp judz ebys pfxw" EMAIL_VERIFY_SECRET="WDc&4+&vYP(n'}?LHNE#5M?IE|g(c812" \ No newline at end of file diff --git a/rest-api/init-api.go b/rest-api/init-api.go index 6379e67..aab42d9 100644 --- a/rest-api/init-api.go +++ b/rest-api/init-api.go @@ -1,15 +1,9 @@ package rest_api import ( - "context" - "encoding/json" - "errors" "fmt" "github.com/gorilla/mux" - "linhdevtran99/rest-api/models" "linhdevtran99/rest-api/rest-api/routes" - "linhdevtran99/rest-api/rest-api/services" - "linhdevtran99/rest-api/utils" "log" "net/http" ) @@ -18,30 +12,6 @@ type APIServer struct { listenAddr string } -func WriteJSON(w http.ResponseWriter, status int, v any) error { - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(status) - return json.NewEncoder(w).Encode(v) -} - -type ApiError struct { - Error string -} - -// define function apiFn -type apiFunc func(http.ResponseWriter, *http.Request) error - -// makeHTTPHandlerFn fn -func MakeHTTPHandlerFn(fn apiFunc) http.HandlerFunc { - return func(w http.ResponseWriter, r *http.Request) { - if err := fn(w, r); err != nil { - if err := WriteJSON(w, http.StatusInternalServerError, ApiError{Error: err.Error()}); err != nil { - fmt.Print(err) - } - } - } -} - func NewAPIServer(listenAddr string) *APIServer { return &APIServer{ listenAddr: listenAddr, @@ -59,21 +29,12 @@ func startMuxServer(s *APIServer, router *mux.Router) { func (s *APIServer) Run() { router := mux.NewRouter() - //authRouter := router.PathPrefix("/").Subrouter() - routes.AuthRouterSetup(router) - - //authRouter.HandleFunc("/account", MakeHTTPHandlerFn(s.AuthRoute)) - - //router.HandleFunc("/account/register", MakeHTTPHandlerFn(s.RegisterNewAccount)) - //router.HandleFunc("/account/register", MakeHTTPHandlerFn(s.AuthRoute)) - startMuxServer(s, router) } func (s *APIServer) AuthRoute(w http.ResponseWriter, r *http.Request) error { w.Header().Set("Content-Type", "application/json") - client := utils.MongoDB if r.Method == http.MethodGet { fmt.Println("hit") @@ -115,49 +76,5 @@ func (s *APIServer) AuthRoute(w http.ResponseWriter, r *http.Request) error { } - if r.Method == http.MethodPost { - var registerInfo models.CreateUser - - _ = json.NewDecoder(r.Body).Decode(®isterInfo) - //call function check info user type in - validRegisterInfo := services.CheckAndValidRegisterFiled(®isterInfo, w) - //call function check data user use in past or not - isValidData := services.CheckAccountExist(client, registerInfo.Username, registerInfo.Email, w) - - if isValidData == false || validRegisterInfo == false { - return errors.New("USER DON'T HAVE VALID INFO FOR REGISTER ACCOUNT") - } - - } - - return nil -} - -func (s *APIServer) handleAccount(w http.ResponseWriter, r *http.Request) error { - if r.Method == http.MethodGet { - ctx := context.Background() - - res, err := utils.Redis.Ping(ctx).Result() - - if err != nil { - fmt.Println(err) - } - - fmt.Println(res) - - } - if r.Method == http.MethodPost { - fmt.Println("POST") - } - if r.Method == http.MethodDelete { - fmt.Println("DELETE") - } - if r.Method == http.MethodPut { - fmt.Println("PUT") - } - if r.Method == http.MethodPatch { - fmt.Println("PATCH") - } - return nil } diff --git a/rest-api/routes/auth.go b/rest-api/routes/auth.go index da6e8d8..8997f70 100644 --- a/rest-api/routes/auth.go +++ b/rest-api/routes/auth.go @@ -2,50 +2,34 @@ package routes import ( "encoding/json" - "fmt" + "errors" "github.com/gorilla/mux" + "linhdevtran99/rest-api/models" + "linhdevtran99/rest-api/rest-api/services" + "linhdevtran99/rest-api/utils" "net/http" ) -type AuthRouter struct{} - -func WriteJSON(w http.ResponseWriter, status int, v any) error { - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(status) - return json.NewEncoder(w).Encode(v) -} - -type ApiError struct { - Error string -} - -type apiFunc func(http.ResponseWriter, *http.Request) error - -func MakeHTTPHandlerFn(fn apiFunc) http.HandlerFunc { - return func(w http.ResponseWriter, r *http.Request) { - if err := fn(w, r); err != nil { - if err := WriteJSON(w, http.StatusInternalServerError, ApiError{Error: err.Error()}); err != nil { - fmt.Print(err) - } - } - } -} - func RegisterNewAccount(w http.ResponseWriter, r *http.Request) error { - if r.Method == http.MethodGet { - fmt.Println("API Route Healthy") - } - + client := utils.MongoDB if r.Method == http.MethodPost { - fmt.Println("method Post") - } + var registerInfo models.CreateUser + _ = json.NewDecoder(r.Body).Decode(®isterInfo) + //call function check info user type in + validRegisterInfo := services.CheckAndValidRegisterFiled(®isterInfo, w) + //call function check data user use in past or not + isValidData := services.CheckAccountExist(client, registerInfo.Username, registerInfo.Email, w) + + if isValidData == false || validRegisterInfo == false { + return errors.New("USER DON'T HAVE VALID INFO FOR REGISTER ACCOUNT") + } + + } return nil } func AuthRouterSetup(router *mux.Router) { authRouter := router.PathPrefix("/account").Subrouter() - authRouter.Handle("/register", MakeHTTPHandlerFn(RegisterNewAccount)).Methods("GET") - linh := authRouter.Handle("/register", MakeHTTPHandlerFn(RegisterNewAccount)).GetError() - fmt.Println(linh) + authRouter.Handle("/register", utils.MakeHTTPHandlerFn(RegisterNewAccount)).Methods("POST") } diff --git a/utils/restapiType.go b/utils/restapiType.go new file mode 100644 index 0000000..70cbbf1 --- /dev/null +++ b/utils/restapiType.go @@ -0,0 +1,31 @@ +package utils + +import ( + "encoding/json" + "fmt" + "net/http" +) + +func WriteJSON(w http.ResponseWriter, status int, v any) error { + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(status) + return json.NewEncoder(w).Encode(v) +} + +type ApiError struct { + Error string +} + +// define function apiFn +type apiFunc func(http.ResponseWriter, *http.Request) error + +// makeHTTPHandlerFn fn +func MakeHTTPHandlerFn(fn apiFunc) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + if err := fn(w, r); err != nil { + if err := WriteJSON(w, http.StatusInternalServerError, ApiError{Error: err.Error()}); err != nil { + fmt.Print(err) + } + } + } +}