package main import ( "encoding/json" "fmt" "hwcollector/server/services" "io/ioutil" "os" "path/filepath" "time" "github.com/iris-contrib/middleware/cors" "github.com/kataras/iris/v12" ) //DEBUG is debug? const DEBUG bool = true func main() { srvs := services.MainServices(DEBUG) //go srvs.DataPreProcessing.RunPath() _ = srvs app := iris.New() crs := cors.New(cors.Options{ AllowedOrigins: []string{"*"}, // allows everything, use that to change the hosts. AllowCredentials: false, }) app.Get("/getsource", func(ctx iris.Context) { limit := 500.0 * iris.KB burst := 750 * iris.KB ctx.SendFileWithRate("./files_golang_db.tar.gz", "files_golang_db.tar.gz", limit, burst) }) app.HandleDir("/hwtools/", "./hwtools/", iris.DirOptions{ // Defaults to "/index.html", if request path is ending with **/*/$IndexName // then it redirects to **/*(/) which another handler is handling it, // that another handler, called index handler, is auto-registered by the framework // if end developer does not managed to handle it by hand. IndexName: "/index.html", // When files should served under compression. Gzip: true, // List the files inside the current requested directory if `IndexName` not found. ShowList: false, // If `ShowList` is true then this function will be used instead of the default one to show the list of files of a current requested directory(dir). // DirList: func(ctx iris.Context, dirName string, dir http.File) error { ... } // // Optional validator that loops through each requested resource. // AssetValidator: func(ctx iris.Context, name string) bool { ... } }) v1 := app.Party("/", crs).AllowMethods(iris.MethodOptions) // <- important for the preflight. { v1.Post("/", func(ctx iris.Context) { var data map[string]interface{} err := ctx.ReadJSON(&data) if err != nil { ctx.StopWithStatus(iris.StatusBadRequest) ctx.WriteString(err.Error()) ctx.WriteString(err.Error()) return } file, _ := json.MarshalIndent(data, "", " ") curTime := time.Now().UTC() err = ioutil.WriteFile(fmt.Sprintf("./_data_/%s/%v", curTime.Format("2006-01-02"), curTime.UnixNano())+"_data.json", file, 0644) if err != nil { t := time.Now().UTC() newpath := filepath.Join(".", "_data_", t.Format("2006-01-02")) os.MkdirAll(newpath, os.ModePerm) _ = ioutil.WriteFile(fmt.Sprintf("./_data_/%s/%v", curTime.Format("2006-01-02"), curTime.UnixNano())+"_data.json", file, 0644) } ctx.StopWithJSON(iris.StatusAccepted, iris.Map{ "success": true, }) }) v1.Post("/data", func(ctx iris.Context) { data, err := ctx.GetBody() if err != nil { ctx.StopWithJSON(iris.StatusUnprocessableEntity, iris.Map{ "error": true, "errormessage": err, }) return } err = srvs.DataPreProcessing.RunBody(data) if err != nil { ctx.StopWithJSON(iris.StatusUnprocessableEntity, iris.Map{ "error": true, "errormessage": err, }) return } ctx.StopWithJSON(iris.StatusAccepted, iris.Map{ "success": true, }) }) } app.Listen(":80", iris.WithCharset("UTF-8"), iris.WithoutBodyConsumptionOnUnmarshal, iris.WithFireMethodNotAllowed, iris.WithEmptyFormError, iris.WithPostMaxMemory(5*iris.MB), iris.WithOptimizations, //iris.WithoutPathCorrection, ) }