From 671096d15bb65225a314935aafb77cebb9f2d1c5 Mon Sep 17 00:00:00 2001 From: Ilya Smyshlyaev Date: Thu, 1 Dec 2022 13:47:37 +0300 Subject: [PATCH] =?UTF-8?q?=D0=BD=D0=B0=D0=BF=D0=B8=D1=81=D0=B0=D0=BB=20?= =?UTF-8?q?=D1=85=D0=B5=D0=BD=D0=B4=D0=BB=D0=B5=D1=80=20=D0=B4=D0=BB=D1=8F?= =?UTF-8?q?=20=D0=B2=D1=81=D0=B5=D1=85=20=D0=B7=D0=B0=D0=B4=D0=B0=D1=87=20?= =?UTF-8?q?=D0=B8=20=D0=B4=D0=BB=D1=8F=20=D0=B2=D1=8B=D0=B7=D0=BE=D0=B2?= =?UTF-8?q?=D0=B0=20=D0=BF=D0=BE=20=D0=BE=D0=B4=D0=BD=D0=BE=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.go | 61 ++++++++++++++++++++++++++++++++++++++++++-- solutions/service.go | 2 +- 2 files changed, 60 insertions(+), 3 deletions(-) diff --git a/main.go b/main.go index c7658aa..8be38c3 100644 --- a/main.go +++ b/main.go @@ -1,10 +1,13 @@ package main import ( + "bytes" "fmt" "gotest/solutions" - "io" + "log" "net/http" + "strings" + "sync" ) func main() { @@ -18,5 +21,59 @@ func main() { } func Handler(w http.ResponseWriter, r *http.Request) { - io.WriteString(w, "я стану хокаге!!!") + + if r.URL.Path == "/tasks/" { + var answers = make([][]byte, 4) + var err error + var wg sync.WaitGroup //ждёмс рутины + wg.Add(4) + + go func() { + defer wg.Done() + answers[0], err = solutions.ProcessTask(solutions.Rotation) + if err != nil { + log.Fatalln(err) + } + }() + + go func() { + defer wg.Done() + answers[1], err = solutions.ProcessTask(solutions.FindUnique) + if err != nil { + log.Fatalln(err) + } + }() + + go func() { + defer wg.Done() + answers[2], err = solutions.ProcessTask(solutions.Cons) + if err != nil { + log.Fatalln(err) + } + }() + + go func() { + defer wg.Done() + answers[3], err = solutions.ProcessTask(solutions.Missing) + if err != nil { + log.Fatalln(err) + } + }() + + wg.Wait() + w.Write(bytes.Join(answers, []byte{})) + + } else { + + taskName := strings.Split(r.URL.Path, "/") + //fmt.Println(taskName[2]) + answer, err := solutions.ProcessTask(taskName[2]) + if err != nil { + log.Fatalln(err) + } + + w.Write(answer) + + } + } diff --git a/solutions/service.go b/solutions/service.go index cc95b69..18692de 100644 --- a/solutions/service.go +++ b/solutions/service.go @@ -20,7 +20,7 @@ type taskElement struct { result []int } -func processTask(taskName string) ([]byte, error) { +func ProcessTask(taskName string) ([]byte, error) { //получаем условия для задач var taskCases []json.RawMessage err := getCases(taskName, &taskCases)