diff --git a/pepeservice/main.go b/pepeservice/main.go index af19fdc..7d2c01c 100644 --- a/pepeservice/main.go +++ b/pepeservice/main.go @@ -12,6 +12,8 @@ type application struct { errorLog *log.Logger infoLog *log.Logger + pepe_list []string + pepe_dir string } @@ -21,44 +23,43 @@ func main() { infoLog := log.New(os.Stdout, "INFO\t", log.Ldate|log.Ltime) errorLog := log.New(os.Stderr, "ERROR\t", log.Ldate|log.Ltime|log.Lshortfile) + file, err := os.Open(pepe_dir) + if err != nil { + errorLog.Printf("Error opening pepe directory\n") + return + } + + pepe_list, err := file.Readdirnames(0) + if err != nil { + errorLog.Printf("Error reading pepe directory file names\n") + return + } + file.Close() + app := &application{ - infoLog: infoLog, - errorLog: errorLog, - pepe_dir: pepe_dir, + infoLog: infoLog, + errorLog: errorLog, + pepe_dir: pepe_dir, + pepe_list: pepe_list, } mux := http.NewServeMux() mux.HandleFunc("/pepe", app.sendPepe) app.infoLog.Printf("Starting server at :4000\n") - err := http.ListenAndServe(":4000", mux) + err = http.ListenAndServe(":4000", mux) log.Fatal(err) } func (app *application) sendPepe(w http.ResponseWriter, r *http.Request) { - file, err := os.Open(app.pepe_dir) - if err != nil { - app.errorLog.Printf("Error opening pepe directory\n") - http.Error(w, "Internal Server Error", 500) - return - } - defer file.Close() - - names, err := file.Readdirnames(0) - if err != nil { - app.errorLog.Printf("Error reading pepe directory file names\n") - http.Error(w, "Internal Server Error", 500) - return - } - // Random number generator s := rand.NewSource(time.Now().UnixMicro()) rd := rand.New(s) // Init pseudorandom generator - number := rd.Intn(len(names)) + number := rd.Intn(len(app.pepe_list)) baseURL := "https://cdn.nicecock.eu/pepe/1.00/" - URL := baseURL + names[number] + URL := baseURL + app.pepe_list[number] w.Write([]byte(URL)) }