Registration

This commit is contained in:
daru
2022-04-14 21:12:45 +02:00
parent cf70db1f96
commit 0cc4c3245f
5 changed files with 71 additions and 5 deletions

View File

@@ -25,6 +25,9 @@ const (
malApiStatusC = "completed"
malApiStatusH = "on_hold"
malApiStatusD = "dropped"
bucketUsers = "users"
bucketAnime = "anime"
bucketmedia = "media"
)
var (

View File

@@ -2,6 +2,11 @@ package main
import "time"
type UserData struct {
Username string `json:"username"`
MalId int `json:"malId"`
}
type RegisterData struct {
Username string `json:"username"`
MalId int `json:"malId"`

View File

@@ -5,6 +5,7 @@ import (
"encoding/json"
"fmt"
"strconv"
"strings"
"time"
"github.com/gookit/color"
@@ -43,6 +44,9 @@ func GetUserBytesCached(username string) ([]byte, error) {
if err != nil {
return data, err
}
if strings.Contains(string(data), "BadResponseException") {
return data, fmt.Errorf("user not found: %s", username)
}
cache.Set(key, data)
return data, err
}

33
nuss.go
View File

@@ -1,9 +1,34 @@
package main
import (
"encoding/json"
"errors"
"github.com/xujiajun/nutsdb"
)
func ReadUser(username string) (*UserData, error) {
data, err := DbRead(bucketUsers, username)
if err != nil {
return nil, err
}
var user UserData
err = json.Unmarshal(data, &user)
return &user, err
}
func SaveUser(user *UserData) error {
data, err := json.Marshal(user)
if err != nil {
return err
}
if user.Username == "" {
return errors.New("user empty")
}
err = DbSave(bucketUsers, user.Username, data)
return err
}
func DbClean() error {
err := db.Update(
func(tx *nutsdb.Tx) error {
@@ -16,7 +41,7 @@ func DbSave(bucket, key string, val []byte) error {
err := db.Update(
func(tx *nutsdb.Tx) error {
keyBytes := []byte(key)
return tx.Put(bucket, keyBytes, val, 0)
return tx.Put(bucket, keyBytes, val, nutsdb.Persistent)
})
return err
}
@@ -25,12 +50,12 @@ func DbRead(bucket, key string) ([]byte, error) {
var val []byte
err := db.View(
func(tx *nutsdb.Tx) error {
key := []byte("name1")
e, err := tx.Get(bucket, key)
keyBytes := []byte(key)
e, err := tx.Get(bucket, keyBytes)
if err != nil {
return err
}
val = make([]byte, e.Size())
val = make([]byte, len(e.Value))
copy(val, e.Value)
return err
})

31
ober.go
View File

@@ -86,7 +86,36 @@ func Register(ctx *fasthttp.RequestCtx) {
ctx.SetStatusCode(fasthttp.StatusBadRequest)
return
}
// TODO REGISTER
// check user exists
_, err = ReadUser(register.Username)
if err == nil {
ctx.WriteString("Nicht drängeln")
ctx.SetStatusCode(fasthttp.StatusConflict)
return
}
// check user legit
userData, _, err := GetUserData(register.Username)
if err != nil {
ctx.WriteString(err.Error())
ctx.SetStatusCode(fasthttp.StatusExpectationFailed)
return
}
if userData.Data.MalID != register.MalId {
ctx.WriteString("Dich gibts net auf MAL")
ctx.SetStatusCode(fasthttp.StatusExpectationFailed)
return
}
// REGISTER
user := UserData{
Username: register.Username,
MalId: register.MalId,
}
err = SaveUser(&user)
if err != nil {
addErrorToCtx(ctx, err)
return
}
ctx.SetBody(body)
ctx.SetStatusCode(fasthttp.StatusOK)
}