mirror of
https://github.com/ultrasn0w/huso.git
synced 2025-12-14 17:19:53 +01:00
Registration
This commit is contained in:
3
huso.go
3
huso.go
@@ -25,6 +25,9 @@ const (
|
|||||||
malApiStatusC = "completed"
|
malApiStatusC = "completed"
|
||||||
malApiStatusH = "on_hold"
|
malApiStatusH = "on_hold"
|
||||||
malApiStatusD = "dropped"
|
malApiStatusD = "dropped"
|
||||||
|
bucketUsers = "users"
|
||||||
|
bucketAnime = "anime"
|
||||||
|
bucketmedia = "media"
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
|
|||||||
5
klotz.go
5
klotz.go
@@ -2,6 +2,11 @@ package main
|
|||||||
|
|
||||||
import "time"
|
import "time"
|
||||||
|
|
||||||
|
type UserData struct {
|
||||||
|
Username string `json:"username"`
|
||||||
|
MalId int `json:"malId"`
|
||||||
|
}
|
||||||
|
|
||||||
type RegisterData struct {
|
type RegisterData struct {
|
||||||
Username string `json:"username"`
|
Username string `json:"username"`
|
||||||
MalId int `json:"malId"`
|
MalId int `json:"malId"`
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import (
|
|||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/gookit/color"
|
"github.com/gookit/color"
|
||||||
@@ -43,6 +44,9 @@ func GetUserBytesCached(username string) ([]byte, error) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return data, err
|
return data, err
|
||||||
}
|
}
|
||||||
|
if strings.Contains(string(data), "BadResponseException") {
|
||||||
|
return data, fmt.Errorf("user not found: %s", username)
|
||||||
|
}
|
||||||
cache.Set(key, data)
|
cache.Set(key, data)
|
||||||
return data, err
|
return data, err
|
||||||
}
|
}
|
||||||
|
|||||||
33
nuss.go
33
nuss.go
@@ -1,9 +1,34 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"errors"
|
||||||
|
|
||||||
"github.com/xujiajun/nutsdb"
|
"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 {
|
func DbClean() error {
|
||||||
err := db.Update(
|
err := db.Update(
|
||||||
func(tx *nutsdb.Tx) error {
|
func(tx *nutsdb.Tx) error {
|
||||||
@@ -16,7 +41,7 @@ func DbSave(bucket, key string, val []byte) error {
|
|||||||
err := db.Update(
|
err := db.Update(
|
||||||
func(tx *nutsdb.Tx) error {
|
func(tx *nutsdb.Tx) error {
|
||||||
keyBytes := []byte(key)
|
keyBytes := []byte(key)
|
||||||
return tx.Put(bucket, keyBytes, val, 0)
|
return tx.Put(bucket, keyBytes, val, nutsdb.Persistent)
|
||||||
})
|
})
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@@ -25,12 +50,12 @@ func DbRead(bucket, key string) ([]byte, error) {
|
|||||||
var val []byte
|
var val []byte
|
||||||
err := db.View(
|
err := db.View(
|
||||||
func(tx *nutsdb.Tx) error {
|
func(tx *nutsdb.Tx) error {
|
||||||
key := []byte("name1")
|
keyBytes := []byte(key)
|
||||||
e, err := tx.Get(bucket, key)
|
e, err := tx.Get(bucket, keyBytes)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
val = make([]byte, e.Size())
|
val = make([]byte, len(e.Value))
|
||||||
copy(val, e.Value)
|
copy(val, e.Value)
|
||||||
return err
|
return err
|
||||||
})
|
})
|
||||||
|
|||||||
31
ober.go
31
ober.go
@@ -86,7 +86,36 @@ func Register(ctx *fasthttp.RequestCtx) {
|
|||||||
ctx.SetStatusCode(fasthttp.StatusBadRequest)
|
ctx.SetStatusCode(fasthttp.StatusBadRequest)
|
||||||
return
|
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.SetBody(body)
|
||||||
ctx.SetStatusCode(fasthttp.StatusOK)
|
ctx.SetStatusCode(fasthttp.StatusOK)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user