// PROVIDED: form, mux, and listener. Complete only the two handlers.
package main

import (
	"fmt"
	"net/http"
	"os"
	"strings"
)

const form = `<html><body><form method="post" action="/generate">` +
	`<input name="text"><button>go</button></form></body></html>`

func rootHandler(w http.ResponseWriter, r *http.Request) {
	// TODO: implement rootHandler.
	_ = form
	if r.URL.Path != "/" {
		w.WriteHeader(http.StatusNotFound)
		return
	}
	fmt.Fprint(w, form)
}
func generateHandler(w http.ResponseWriter, r *http.Request) {
	_ = strings.ToUpper
	// TODO: implement generateHandler.
	text := r.FormValue("text")
	if text == "" {
		w.WriteHeader(http.StatusBadRequest)
		return
	}
	if text == "panic" {
		w.WriteHeader(http.StatusInternalServerError)
		return
	}
	fmt.Fprint(w, strings.ToUpper(text))
}

func main() {
	mux := http.NewServeMux()
	mux.HandleFunc("/", rootHandler)
	mux.HandleFunc("/generate", generateHandler)

	port := os.Getenv("PORT")
	if port == "" {
		port = "8080"
	}
	if err := http.ListenAndServe("127.0.0.1:"+port, mux); err != nil {
		fmt.Fprintln(os.Stderr, err)
		os.Exit(1)
	}
}
