package main

import (
	"context"
	"github.com/loveuer/nf"
	"log"
	"time"
)

var (
	app  = nf.New()
	quit = make(chan bool)
)

func main() {

	app.Get("/name", handleGet)

	go func() {
		err := app.Run(":80")
		log.Print("run with err=", err)
		quit <- true
	}()

	<-quit
}

func handleGet(c *nf.Ctx) error {
	type Req struct {
		Name string   `query:"name"`
		Addr []string `query:"addr"`
	}

	var (
		err error
		req = Req{}
	)

	if err = c.QueryParser(&req); err != nil {
		return nf.NewNFError(400, err.Error())
	}

	if req.Name == "quit" {

		go func() {
			time.Sleep(2 * time.Second)
			log.Print("app quit = ", app.Shutdown(context.TODO()))
		}()
	}

	return c.JSON(nf.Map{"req_map": req})
}