From 7d6270f64b1dc00d91230b5c793bc49991f0fcf8 Mon Sep 17 00:00:00 2001 From: Andrew Date: Wed, 28 Apr 2021 18:09:00 +0400 Subject: Added http client and tryAuth view to server. --- http-server/main.go | 48 ++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 44 insertions(+), 4 deletions(-) (limited to 'http-server/main.go') 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) -- cgit v1.2.3