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)