package main import ( "fmt" "io" "log" "os" "time" ) // WriteToFile will print any string of text to a file safely by // checking for errors and syncing at the end. func writeToFile(filename string, data string) error { file, err := os.Create(filename) if err != nil { return err } defer file.Close() _, err = io.WriteString(file, data) if err != nil { return err } return file.Sync() } func handlepanic() { if a := recover(); a != nil { fmt.Println("OPS!: Recovering from:", a) } } func saveBayesToFile() { var tmpJSON string log.Println("Trying to write json file") tmpJSON = fmt.Sprintln("\nBAD: ") Classifier.BAD.Range(func(key interface{}, value interface{}) bool { tmpJSON = fmt.Sprintf("\t%s %-32s: %d\n", tmpJSON, key.(string), value.(int64)) return true }) tmpJSON = fmt.Sprintf("%s \rGOOD: \n", tmpJSON) Classifier.GOOD.Range(func(key interface{}, value interface{}) bool { tmpJSON = fmt.Sprintf("\t%s %-32s: %d\n", tmpJSON, key.(string), value.(int64)) return true }) tmpJSON = fmt.Sprintf("%s \rMEH: \n", tmpJSON) Classifier.MEH.Range(func(key interface{}, value interface{}) bool { tmpJSON = fmt.Sprintf("\t%s %-32s: %d\n", tmpJSON, key.(string), value.(int64)) return true }) tmpJSON = fmt.Sprintf("%s \rSTATS: \n", tmpJSON) Classifier.STATS.Range(func(key interface{}, value interface{}) bool { tmpJSON = fmt.Sprintf("\t%s %-32s: %d\n", tmpJSON, key.(string), value.(int64)) return true }) if DebugLog { log.Println(tmpJSON) } else { writeToFile("bayes.txt", tmpJSON) log.Println("File bayes.txt saved: ", len(tmpJSON)) } } func jsonEngine() { for { log.Println("Zardoz Seniority: ", ProxyFlow.seniority) saveBayesToFile() time.Sleep(1 * time.Minute) } } func init() { log.Printf("File Engine Starting") go jsonEngine() log.Printf("FIle Engine Started") }