0x4a52466c696e74 8 months ago
parent
commit
b9368079ac
2 changed files with 57 additions and 0 deletions
  1. 16 0
      rest_http/rest.go
  2. 41 0
      z_test.go

+ 16 - 0
rest_http/rest.go

@@ -24,6 +24,7 @@ type Rest struct {
 	app             rest.IApplication
 	core            any
 	responseHeaders map[string]string
+	Debug           bool
 }
 
 func (s *Rest) App() rest.IApplication {
@@ -84,6 +85,9 @@ func (s *Rest) handle(w http.ResponseWriter, r *http.Request) {
 
 	// Если это многокомпонентный запрос, обрабатываем файлы
 	if strings.Index(r.Header.Get("Content-Type"), "multipart/form-data") == 0 {
+		if s.Debug {
+			log.Println("request multipart")
+		}
 		err := r.ParseMultipartForm(32 << 20) // max memory 32MB, после этого файлы будут сохранены во временных файлах
 		log.Println(err)
 		if err != nil {
@@ -94,12 +98,18 @@ func (s *Rest) handle(w http.ResponseWriter, r *http.Request) {
 
 		data, check := multiPartForm.Value["data"]
 		if check {
+			if s.Debug {
+				log.Println("data accepted")
+			}
 			rData := rr.RData()
 			err := json.NewDecoder(bytes.NewBuffer([]byte(data[0]))).Decode(&rData)
 			if err != nil {
 				responseError(w, rest.ErrorMessage("ErrMultipartDataParse", err.Error()), 500)
 				return
 			}
+			if s.Debug {
+				rData.LogPretty()
+			}
 		}
 
 		files := rr.RFiles()
@@ -125,12 +135,18 @@ func (s *Rest) handle(w http.ResponseWriter, r *http.Request) {
 		}
 		defer rr.RClose()
 	} else {
+		if s.Debug {
+			log.Println("request json")
+		}
 		data := rr.RData()
 		err := json.NewDecoder(r.Body).Decode(&data)
 		if err != nil {
 			responseError(w, rest.ErrorMessage("ErrDataParse", err.Error()), 500)
 			return
 		}
+		if s.Debug {
+			data.LogPretty()
+		}
 	}
 
 	// get command

+ 41 - 0
z_test.go

@@ -3,6 +3,7 @@ package rest
 import (
 	"log"
 	"reflect"
+	"strings"
 	"testing"
 	"time"
 
@@ -310,3 +311,43 @@ func TestFieldNames(t *testing.T) {
 
 	t.Log(fields)
 }
+
+type AuthEmail struct {
+	Email string `rest:"required" example:"mail@mail.ml"`
+}
+
+func (s *AuthEmail) Validate(req IRequestIn) IRequestOut {
+	s.Email = strings.TrimSpace(s.Email)
+	return nil
+}
+
+// AuthEmail godoc
+//
+//	@Summary		Автризация при помощи email
+//	@Description	Если пользователь не существует, он будет создан
+//	@Description	После выполнения команды на указанный email отправляется письмо с кодом,
+//	@Description	который необходимо обменять на токен авторизации
+//	@Tags			client
+//	@Accept			json
+//	@Produce		json
+//	@Param object body AuthEmail true "Входные параметры"
+//	@Success		200			{object}	result.ResultOK	"result"
+//	@Router			/users/auth_email [post]
+func (s *AuthEmail) Execute(req IRequestIn) IRequestOut {
+	return req.OutSuccess(json.Map{}, nil)
+}
+
+func TestSerializeEmail(t *testing.T) {
+	m := json.Map{
+		"Email": "flint@77i.su",
+	}
+
+	r := &AuthEmail{}
+
+	err := Serialize(m, r)
+	if err != nil {
+		t.Fatal(err)
+	}
+
+	t.Log(r)
+}