summaryrefslogtreecommitdiff
path: root/http-server/main.go
diff options
context:
space:
mode:
Diffstat (limited to 'http-server/main.go')
-rw-r--r--http-server/main.go48
1 files changed, 44 insertions, 4 deletions
diff --git a/http-server/main.go b/http-server/main.go
index e2402b2..f77c32f 100644
--- a/http-server/main.go
+++ b/http-server/main.go
@@ -14,6 +14,8 @@ import (
"time"
)
+const TimestampFormat = "2006-01-02T15-01-05.999"
+
type Response struct {
Message string
}
@@ -157,8 +159,10 @@ func handleAuthentication(req Request, signature string) (error, error) {
req64 := base64.StdEncoding.EncodeToString(reqBytes)
h := sha256.Sum256([]byte(req64))
generatedSignature := fmt.Sprintf("%x", h)
- fmt.Println(generatedSignature == signature)
- fmt.Println(key)
+ //fmt.Println(generatedSignature)
+ //fmt.Println(signature)
+ _ = fmt.Sprint(generatedSignature == signature)
+ _ = fmt.Sprint(key)
return nil, nil
}
@@ -190,9 +194,11 @@ func sendMessage(w http.ResponseWriter, r *http.Request) {
msg := Message{
User: req.User,
Data: req.Data,
- Timestamp: time.Now().Unix(),
+ Timestamp: time.Now().UnixNano(),
}
+ fmt.Printf("Got message from %s: %s\n", req.User, req.Data)
+
err = db.saveMessage(msg)
if err != nil {
w.WriteHeader(http.StatusInternalServerError)
@@ -242,7 +248,11 @@ func pollMessages(w http.ResponseWriter, r *http.Request) {
messages, err := db.getMessagesSince(timestamp)
if err != nil {
- _ = serverError(w)
+ w.WriteHeader(http.StatusBadRequest)
+ _ = jsonResponse(w, Response{
+ Message: fmt.Sprint(err),
+ })
+ //_ = serverError(w)
return
}
@@ -296,6 +306,35 @@ func getUserKey(w http.ResponseWriter, r *http.Request) {
})
}
+func tryAuth(w http.ResponseWriter, r *http.Request) {
+ if r.Method != http.MethodPost {
+ _ = methodNotAllowedResponse(w)
+ return
+ }
+
+ req, signature, err := parseRequest(w, r)
+ if err != nil {
+ return
+ }
+
+ authErr, dbErr := handleAuthentication(req, signature)
+ if authErr != nil {
+ w.WriteHeader(http.StatusForbidden)
+ _ = jsonResponse(w, Response{
+ Message: "Запрос не прошёл аутентификацию",
+ })
+ return
+ }
+ if dbErr != nil {
+ _ = serverError(w)
+ return
+ }
+
+ _ = jsonResponse(w, Response{
+ Message: "Запрос прошёл аутентификацию",
+ })
+}
+
var db SQLConnection
func main() {
@@ -309,6 +348,7 @@ func main() {
http.HandleFunc("/api/sendMessage", sendMessage)
http.HandleFunc("/api/pollMessages", pollMessages)
http.HandleFunc("/api/getUserKey", getUserKey)
+ http.HandleFunc("/api/tryAuth", tryAuth)
err = http.ListenAndServe("localhost:8080", nil)
if err != nil {
fmt.Println(err)