-
Notifications
You must be signed in to change notification settings - Fork 0
/
add_contact.go
72 lines (60 loc) · 1.8 KB
/
add_contact.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
package main
import (
"encoding/json"
"fmt"
"log"
"net/http"
)
// MessagePost: POST
func AddContact(w http.ResponseWriter, r *http.Request) {
token := r.Header.Values("Authorization")
fmt.Println(len(token))
if len(token) == 0 {
json.NewEncoder(w).Encode(UserResponse{
Message: "You dont have a token, please sign in",
User: "",
})
// Check if token is Valid
} else {
var tokenUser = AuthenticateToken(token[0])
var users []UserValid
err := json.Unmarshal([]byte(tokenUser), &users)
if err != nil {
log.Fatal(err)
}
fmt.Println("This token belong to: " + users[0].User)
fmt.Println("Is a valid token?: ", users[0].Valid)
// Token is Valid continue
if users[0].Valid == true {
// Get select username the user wants to add from incoming json body
var jsonResponse UserResponse
// We decode the incoming data and convert it to a json this gets sent to the client
json.NewDecoder(r.Body).Decode(&jsonResponse)
fmt.Println(jsonResponse)
println("This user is search this name: ", jsonResponse.User)
// Check if the user exists
username, err := RedisClient.HGet("users", jsonResponse.User).Result()
// Error means user doesnt exist return response
if err != nil {
println("user not here", jsonResponse.User)
json.NewEncoder(w).Encode(UserResponse{
Message: "This " + jsonResponse.User + " is not a user, Maybe you typed the name wrong",
User: "",
})
} else {
println("User is in the database ", username)
// Send back user name
json.NewEncoder(w).Encode(UserResponse{
Message: "user is in the system",
User: jsonResponse.User,
})
}
} else {
// return not valid token
json.NewEncoder(w).Encode(UserResponse{
Message: "Token is invalid, please sign in again",
User: "",
})
}
}
}