-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathserver.go
83 lines (62 loc) · 1.81 KB
/
server.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
package main
import(
"log"
"net/http"
"encoding/json"
"github.com/gorilla/mux"
"./connect"
"./structures"
)
func main() {
connect.InitializeDatabase()
defer connect.CloseConnection()
r := mux.NewRouter()
r.HandleFunc("/user/{id}", GetUser).Methods("GET")
r.HandleFunc("/user/new", NewUser).Methods("POST")
r.HandleFunc("/user/update/{id}", UpdateUser).Methods("PATCH")
r.HandleFunc("/user/delete/{id}", DeleteUser).Methods("DELETE")
log.Println("El servidor se encuentra en el puerto 8000")
log.Fatal(http.ListenAndServe(":8000", r))
}
func UpdateUser(w http.ResponseWriter, r* http.Request) {
vars := mux.Vars(r)
user_id := vars["id"]
user := GetUserRequest(r)
response := structures.Response{"success", connect.UpdateUser(user_id, user), ""}
json.NewEncoder(w).Encode(response)
}
func DeleteUser(w http.ResponseWriter, r* http.Request) {
vars := mux.Vars(r)
user_id := vars["id"]
var user structures.User
connect.DeleteUser(user_id)
response := structures.Response{"success", user, ""}
json.NewEncoder(w).Encode(response)
}
func GetUser(w http.ResponseWriter, r* http.Request) {
vars := mux.Vars(r)
user_id := vars["id"]
status := "success"
var message string
user := connect.GetUser(user_id)
if(user.Id <= 0) {
status = "error"
message = "user not found"
}
response := structures.Response{ status, user, message}
json.NewEncoder(w).Encode(response)
}
func NewUser(w http.ResponseWriter, r* http.Request) {
user := GetUserRequest(r)
response := structures.Response{"success", connect.CreateUser(user), ""}
json.NewEncoder(w).Encode(response)
}
func GetUserRequest(r* http.Request) structures.User{
var user structures.User
decoder := json.NewDecoder(r.Body)
err := decoder.Decode(&user)
if err != nil {
log.Fatal(err)
}
return user
}