github.com/giovannyortegon/go@v0.0.0-20220115155912-8890063f5bdd/src/APIRest/handlers/handlers.go (about) 1 package handlers 2 3 import ( 4 "apirest/models" 5 "encoding/json" 6 "fmt" 7 "net/http" 8 "strconv" 9 10 "github.com/gorilla/mux" 11 ) 12 13 func GetUsers(rw http.ResponseWriter, r *http.Request) { 14 // fmt.Fprintln(rw, "Listar todos los Usuarios") 15 /*rw.Header().Set("Content-Type", "application/json") 16 // rw.Header().Set("Content-Type", "application/xml") 17 18 db.Connect_DB() 19 user, _ := models.ListUsers() 20 db.Close_DB() 21 output, _ := json.Marshal(user) 22 // output, _ := xml.Marshal(user) 23 // output, _ := yaml.Marshal(user) 24 fmt.Fprintln(rw, string(output))*/ 25 26 if users, err := models.ListUsers(); err != nil { 27 models.SendNotFound(rw) 28 } else { 29 models.SendData(rw, users) 30 } 31 } 32 func GetUser(rw http.ResponseWriter, r *http.Request) { 33 // fmt.Fprintln(rw, "Obtiene un Usuario") 34 /*rw.Header().Set("Content-Type", "application/json") 35 36 // obtener id 37 vars := mux.Vars(r) 38 39 userId, _ := strconv.Atoi(vars["id"]) 40 41 db.Connect_DB() 42 user, _ := models.GetUser(userId) 43 db.Close_DB() 44 output, _ := json.Marshal(user) 45 fmt.Fprintln(rw, string(output))*/ 46 if user, err := getUserByRequest(r); err != nil { 47 models.SendNotFound(rw) 48 } else { 49 models.SendData(rw, user) 50 } 51 52 } 53 54 func CreateUser(rw http.ResponseWriter, r *http.Request) { 55 // fmt.Fprintln(rw, "Crea un Usuario") 56 // rw.Header().Set("Content-Type", "application/json") 57 user := models.User{} 58 decoder := json.NewDecoder(r.Body) 59 60 if err := decoder.Decode(&user); err != nil { 61 models.SendUnprocessableEntity(rw) 62 } else { 63 user.Save() 64 models.SendData(rw, user) 65 } 66 // obtener id 67 output, _ := json.Marshal(user) 68 fmt.Fprintln(rw, string(output)) 69 } 70 func UpdateUser(rw http.ResponseWriter, r *http.Request) { 71 // rw.Header().Set("Content-Type", "application/json") 72 // fmt.Fprintln(rw, "Actuliza un Usuario") 73 // user := models.User{} 74 var userId int64 75 76 if user, err := getUserByRequest(r); err != nil { 77 models.SendNotFound(rw) 78 } else { 79 userId = user.Id 80 } 81 82 user := models.User{} 83 decoder := json.NewDecoder(r.Body) 84 85 if err := decoder.Decode(&user); err != nil { 86 models.SendUnprocessableEntity(rw) 87 } else { 88 user.Id = userId 89 user.Save() 90 models.SendData(rw, user) 91 } 92 /* 93 if err := decoder.Decode(&user); err != nil { 94 fmt.Fprintln(rw, http.StatusUnprocessableEntity) 95 } else { 96 db.Connect_DB() 97 user.Save() 98 db.Close_DB() 99 } 100 // obtener id 101 output, _ := json.Marshal(user) 102 fmt.Fprintln(rw, string(output))*/ 103 } 104 func DeleteUser(rw http.ResponseWriter, r *http.Request) { 105 // fmt.Fprintln(rw, "Elimina un Usuario") 106 /* rw.Header().Set("Content-Type", "application/json") 107 108 // obtener id 109 vars := mux.Vars(r) 110 111 userId, _ := strconv.Atoi(vars["id"]) 112 113 db.Connect_DB() 114 user, _ := models.GetUser(userId) 115 user.Delete() 116 db.Close_DB() 117 output, _ := json.Marshal(user) 118 fmt.Fprintln(rw, string(output))*/ 119 if user, err := getUserByRequest(r); err != nil { 120 models.SendNotFound(rw) 121 } else { 122 user.Delete() 123 models.SendData(rw, user) 124 } 125 } 126 127 func getUserByRequest(r *http.Request) (models.User, error) { 128 vars := mux.Vars(r) 129 userId, _ := strconv.Atoi(vars["id"]) 130 131 if user, err := models.GetUser(userId); err != nil { 132 return *user, err 133 } else { 134 return *user, nil 135 } 136 }