mirror of
https://github.com/ultrasn0w/huso.git
synced 2025-12-13 13:59:53 +01:00
UnRegister
This commit is contained in:
48
nuss.go
48
nuss.go
@@ -91,7 +91,6 @@ func DeleteUserFromAnime(username string, userId, animeId int64) (*Anime, error)
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
// check if user already part
|
// check if user already part
|
||||||
for i, u := range users {
|
for i, u := range users {
|
||||||
@@ -120,6 +119,51 @@ func DeleteUserFromAnime(username string, userId, animeId int64) (*Anime, error)
|
|||||||
return &anime, err
|
return &anime, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func DeleteUserFromAnimes(userId int64) error {
|
||||||
|
return db.Update(
|
||||||
|
func(tx *nutsdb.Tx) error {
|
||||||
|
entries, err := tx.GetAll(bucketAnime)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
// iterate entries
|
||||||
|
for _, e := range entries {
|
||||||
|
// parse user list
|
||||||
|
users, err := parseUserList(e.Value)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
// check if user is part
|
||||||
|
for i, u := range users {
|
||||||
|
if u.MalID == userId {
|
||||||
|
// delete user from list
|
||||||
|
users[i] = users[len(users)-1]
|
||||||
|
users = users[:len(users)-1]
|
||||||
|
// check if anime needs recycling
|
||||||
|
if len(users) == 0 {
|
||||||
|
err = tx.Delete(bucketAnime, e.Key)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
newData, err := json.Marshal(users)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
err = tx.Put(bucketAnime, e.Key, newData, nutsdb.Persistent)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
func ReadAnimes() ([]Anime, error) {
|
func ReadAnimes() ([]Anime, error) {
|
||||||
var animes []Anime
|
var animes []Anime
|
||||||
err := db.View(
|
err := db.View(
|
||||||
@@ -183,7 +227,7 @@ func DbRead(bucket, key string) ([]byte, error) {
|
|||||||
return val, err
|
return val, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func DbDelete(bucket, key string, val []byte) error {
|
func DbDelete(bucket, key string) error {
|
||||||
return db.Update(
|
return db.Update(
|
||||||
func(tx *nutsdb.Tx) error {
|
func(tx *nutsdb.Tx) error {
|
||||||
keyBytes := []byte(key)
|
keyBytes := []byte(key)
|
||||||
|
|||||||
44
ober.go
44
ober.go
@@ -19,6 +19,7 @@ func RunWebserv() {
|
|||||||
r.GET("/api/watch/{user?}", WatchGet)
|
r.GET("/api/watch/{user?}", WatchGet)
|
||||||
r.POST("/api/register", Register)
|
r.POST("/api/register", Register)
|
||||||
r.POST("/api/watch/{user}", WatchPost)
|
r.POST("/api/watch/{user}", WatchPost)
|
||||||
|
r.DELETE("/api/register", UnRegister)
|
||||||
r.DELETE("/api/watch/{user}", WatchDelete)
|
r.DELETE("/api/watch/{user}", WatchDelete)
|
||||||
log.Fatal(fasthttp.ListenAndServe(":"+strconv.Itoa(*webServerPort), r.Handler))
|
log.Fatal(fasthttp.ListenAndServe(":"+strconv.Itoa(*webServerPort), r.Handler))
|
||||||
}
|
}
|
||||||
@@ -120,7 +121,6 @@ func Register(ctx *fasthttp.RequestCtx) {
|
|||||||
ctx.SetStatusCode(fasthttp.StatusBadRequest)
|
ctx.SetStatusCode(fasthttp.StatusBadRequest)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
calcSauce := Sauce(register.MalID, register.Username)
|
calcSauce := Sauce(register.MalID, register.Username)
|
||||||
if calcSauce != strings.ToLower(register.Sauce) {
|
if calcSauce != strings.ToLower(register.Sauce) {
|
||||||
ctx.WriteString("Möge die Sauce mit dir sein")
|
ctx.WriteString("Möge die Sauce mit dir sein")
|
||||||
@@ -166,6 +166,48 @@ func WatchPost(ctx *fasthttp.RequestCtx) {
|
|||||||
processUpdateReq(ctx, true)
|
processUpdateReq(ctx, true)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func UnRegister(ctx *fasthttp.RequestCtx) {
|
||||||
|
if string(ctx.Request.Header.ContentType()) != "application/json" {
|
||||||
|
ctx.SetStatusCode(fasthttp.StatusBadRequest)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
body := ctx.PostBody()
|
||||||
|
var register RegisterData
|
||||||
|
err := json.Unmarshal(body, ®ister)
|
||||||
|
if err != nil {
|
||||||
|
ctx.WriteString(err.Error())
|
||||||
|
ctx.SetStatusCode(fasthttp.StatusBadRequest)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if register.MalID == 0 || register.Username == "" || register.Secret == "" || register.Sauce == "" {
|
||||||
|
ctx.WriteString("Sprich JSON du Hurensohn")
|
||||||
|
ctx.SetStatusCode(fasthttp.StatusBadRequest)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
calcSauce := Sauce(register.MalID, register.Username)
|
||||||
|
if calcSauce != strings.ToLower(register.Sauce) {
|
||||||
|
ctx.WriteString("Möge die Sauce mit dir sein")
|
||||||
|
ctx.SetStatusCode(fasthttp.StatusBadRequest)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
// DELETE
|
||||||
|
err = DeleteUserFromAnimes(register.MalID)
|
||||||
|
if err != nil {
|
||||||
|
ctx.WriteString(err.Error())
|
||||||
|
ctx.SetStatusCode(fasthttp.StatusNotFound)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = DbDelete(bucketUsers, register.Username)
|
||||||
|
if err != nil {
|
||||||
|
ctx.WriteString(err.Error())
|
||||||
|
ctx.SetStatusCode(fasthttp.StatusNotFound)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
ctx.SetBody(body)
|
||||||
|
ctx.SetStatusCode(fasthttp.StatusOK)
|
||||||
|
}
|
||||||
|
|
||||||
func WatchDelete(ctx *fasthttp.RequestCtx) {
|
func WatchDelete(ctx *fasthttp.RequestCtx) {
|
||||||
processUpdateReq(ctx, false)
|
processUpdateReq(ctx, false)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user