// package anonym_del -- анонимное удаление ключа из хранилища package anonym_del import ( "fmt" "log" "github.com/gofiber/fiber/v2" "git.p78su.freemyip.com/svi/gostore/pkg/types" ) // AnonymDel -- анонимное удаление ключа из хранилища type AnonymDel struct { serv types.IService store types.IStore } // NewAnonymDel -- возвращает анонимное удаление ключа из хранилища func NewAnonymDel(servHttp types.IServHttp, router fiber.Router) (*AnonymDel, error) { { // Предусловия if servHttp == nil { return nil, fmt.Errorf("NewAnonymDel(): IServHttp==nil") } if router == nil { return nil, fmt.Errorf("NewAnonymDel(): router==nil") } } sf := &AnonymDel{ serv: servHttp.Service(), store: servHttp.Service().Store(), } router.Get("/del", sf.get) router.Post("/del_check_key", sf.delCheckKey) router.Post("/del", sf.post) return sf, nil } // DelRequest -- удаление значение из анонимного хранилища type DelRequest struct { Key_ string `json:"key" form:"key"` // Ключ для хранилища } // Проверяет допустимость ключа для анонимного хранилища func (sf *AnonymDel) delCheckKey(ctx *fiber.Ctx) error { strBody := string(ctx.Body()) log.Println("AnonymDel.delCheckKey():", strBody) req := &DelRequest{} err := ctx.BodyParser(req) if err != nil { return ctx.SendString("AnonymDel.delCheckKey(): " + err.Error()) } if req.Key_ == "" { return ctx.SendString("AnonymDel.delCheckKey(): ключ не может быть пустым") } return ctx.SendString("AnonymDel.delCheckKey(): годный ключ") } // Возвращает страницу анонимного раздела func (sf *AnonymDel) get(ctx *fiber.Ctx) error { return ctx.Render("anonym_del", fiber.Map{}) } // Возвращает значение из анонимного хранилища func (sf *AnonymDel) post(ctx *fiber.Ctx) error { req := &DelRequest{} if err := ctx.BodyParser(req); err != nil { return ctx.Render("anonym_del", fiber.Map{ "res": fmt.Sprintf("AnonymDel.post(): при парсинге формы, err=%v", err), }) } if req.Key_ == "" { return ctx.Render("anonym_del", fiber.Map{ "res": "AnonymDel.post(): ключ не может быть пустым", }) } err := sf.store.Del("anon/" + req.Key_) if err != nil { return ctx.Render("anonym_del", fiber.Map{ "res": fmt.Sprintf("AnonymDel.post(): при удалении из хранилища, err=%v", err), }) } return ctx.SendString(fmt.Sprintf("AnonymDel.post(): ключ %q удален из хранилища", req.Key_)) }