diff --git a/src/viddown.go b/src/viddown.go index 4613dad..aebb0a1 100644 --- a/src/viddown.go +++ b/src/viddown.go @@ -39,27 +39,45 @@ const template = ` ` +type ops struct{ + URL string + Res chan string +} var config struct{ saveLocation string } +var opsc = make(chan ops) func handleRequest (w http.ResponseWriter, r *http.Request) { if r.Method == http.MethodGet{ log.Print("New Get request") }else if r.Method == http.MethodPost { r.ParseForm() - downloadVid(r) + go func() { + var o ops + o.URL = r.FormValue("URL") + opsc <- o + } () } else{ } io.WriteString (w,template) } func downloadVid (r *http.Request) { - cmd := exec.Command("youtube-dl", r.FormValue("URL")) - cmd.Dir = config.saveLocation - log.Print(cmd.String()) - cmd.Start() +} + +func operationHandler(){ + for true { + o := <- opsc + log.Print("Start Downloading: " + o.URL) + go func() { + cmd := exec.Command("youtube-dl", o.URL) + cmd.Dir = config.saveLocation + cmd.Start() + }() + } + log.Fatal("Exited operationsHandler") } func main () { @@ -69,6 +87,8 @@ func main () { config.saveLocation = os.Getenv("VIDDOWNLOC") } + go operationHandler() + handler := http.HandlerFunc(handleRequest) http.Handle("/",handler) log.Printf("Starting server on 8080")