summaryrefslogtreecommitdiff
path: root/api/handlers/handlers.go
diff options
context:
space:
mode:
Diffstat (limited to 'api/handlers/handlers.go')
-rw-r--r--api/handlers/handlers.go52
1 files changed, 50 insertions, 2 deletions
diff --git a/api/handlers/handlers.go b/api/handlers/handlers.go
index cc7a9d9..9166ec7 100644
--- a/api/handlers/handlers.go
+++ b/api/handlers/handlers.go
@@ -8,11 +8,16 @@ import (
"github.com/boozec/rahanna/api/auth"
"github.com/boozec/rahanna/api/database"
utils "github.com/boozec/rahanna/pkg"
+ "github.com/boozec/rahanna/relay"
"golang.org/x/crypto/bcrypt"
)
+type NewPlayRequest struct {
+ IP string `json:"ip"`
+}
+
func RegisterUser(w http.ResponseWriter, r *http.Request) {
- slog.Info("POST /register")
+ slog.Info("POST /auth/register")
var user database.User
err := json.NewDecoder(r.Body).Decode(&user)
if err != nil {
@@ -57,7 +62,7 @@ func RegisterUser(w http.ResponseWriter, r *http.Request) {
}
func LoginUser(w http.ResponseWriter, r *http.Request) {
- slog.Info("POST /login")
+ slog.Info("POST /auth/login")
var inputUser database.User
err := json.NewDecoder(r.Body).Decode(&inputUser)
if err != nil {
@@ -88,3 +93,46 @@ func LoginUser(w http.ResponseWriter, r *http.Request) {
json.NewEncoder(w).Encode(map[string]string{"token": token})
}
+
+func NewPlay(w http.ResponseWriter, r *http.Request) {
+ slog.Info("POST /play")
+ claims, err := auth.ValidateJWT(r.Header.Get("Authorization"))
+
+ if err != nil {
+ utils.JsonError(&w, err.Error())
+ return
+ }
+
+ var payload struct {
+ IP string `json:"ip"`
+ }
+
+ if err := json.NewDecoder(r.Body).Decode(&payload); err != nil {
+ utils.JsonError(&w, err.Error())
+ return
+ }
+
+ if err != nil {
+ utils.JsonError(&w, err.Error())
+ return
+ }
+
+ db, _ := database.GetDb()
+
+ name := relay.NewSession()
+ play := database.Play{
+ Player1ID: claims.UserID,
+ Player2ID: nil,
+ Name: name,
+ IP1: payload.IP,
+ IP2: "",
+ }
+
+ result := db.Create(&play)
+ if result.Error != nil {
+ utils.JsonError(&w, result.Error.Error())
+ return
+ }
+
+ json.NewEncoder(w).Encode(map[string]string{"name": name})
+}