anonym_del.go 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. // package anonym_del -- анонимное удаление ключа из хранилища
  2. package anonym_del
  3. import (
  4. "fmt"
  5. "log"
  6. "github.com/gofiber/fiber/v2"
  7. "git.p78su.freemyip.com/svi/gostore/pkg/types"
  8. )
  9. // AnonymDel -- анонимное удаление ключа из хранилища
  10. type AnonymDel struct {
  11. serv types.IService
  12. store types.IStore
  13. }
  14. // NewAnonymDel -- возвращает анонимное удаление ключа из хранилища
  15. func NewAnonymDel(servHttp types.IServHttp, router fiber.Router) (*AnonymDel, error) {
  16. { // Предусловия
  17. if servHttp == nil {
  18. return nil, fmt.Errorf("NewAnonymDel(): IServHttp==nil")
  19. }
  20. if router == nil {
  21. return nil, fmt.Errorf("NewAnonymDel(): router==nil")
  22. }
  23. }
  24. sf := &AnonymDel{
  25. serv: servHttp.Service(),
  26. store: servHttp.Service().Store(),
  27. }
  28. router.Get("/del", sf.get)
  29. router.Post("/del_check_key", sf.delCheckKey)
  30. router.Post("/del", sf.post)
  31. return sf, nil
  32. }
  33. // DelRequest -- удаление значение из анонимного хранилища
  34. type DelRequest struct {
  35. Key_ string `json:"key" form:"key"` // Ключ для хранилища
  36. }
  37. // Проверяет допустимость ключа для анонимного хранилища
  38. func (sf *AnonymDel) delCheckKey(ctx *fiber.Ctx) error {
  39. strBody := string(ctx.Body())
  40. log.Println("AnonymDel.delCheckKey():", strBody)
  41. req := &DelRequest{}
  42. err := ctx.BodyParser(req)
  43. if err != nil {
  44. return ctx.SendString("AnonymDel.delCheckKey(): " + err.Error())
  45. }
  46. if req.Key_ == "" {
  47. return ctx.SendString("AnonymDel.delCheckKey(): ключ не может быть пустым")
  48. }
  49. return ctx.SendString("AnonymDel.delCheckKey(): годный ключ")
  50. }
  51. // Возвращает страницу анонимного раздела
  52. func (sf *AnonymDel) get(ctx *fiber.Ctx) error {
  53. return ctx.Render("anonym_del", fiber.Map{})
  54. }
  55. // Возвращает значение из анонимного хранилища
  56. func (sf *AnonymDel) post(ctx *fiber.Ctx) error {
  57. req := &DelRequest{}
  58. if err := ctx.BodyParser(req); err != nil {
  59. return ctx.Render("anonym_del", fiber.Map{
  60. "res": fmt.Sprintf("AnonymDel.post(): при парсинге формы, err=%v", err),
  61. })
  62. }
  63. if req.Key_ == "" {
  64. return ctx.Render("anonym_del", fiber.Map{
  65. "res": "AnonymDel.post(): ключ не может быть пустым",
  66. })
  67. }
  68. err := sf.store.Del("anon/" + req.Key_)
  69. if err != nil {
  70. return ctx.Render("anonym_del", fiber.Map{
  71. "res": fmt.Sprintf("AnonymDel.post(): при удалении из хранилища, err=%v", err),
  72. })
  73. }
  74. return ctx.SendString(fmt.Sprintf("AnonymDel.post(): ключ %q удален из хранилища", req.Key_))
  75. }