func main() { handler := rest.ResourceHandler{ EnableStatusService: true, } auth := &rest.AuthBasicMiddleware{ Realm: "test zone", Authenticator: func(userId string, password string) bool { if userId == "admin" && password == "admin" { return true } return false }, } handler.SetRoutes( &rest.Route{"GET", "/countries", GetAllCountries}, &rest.Route{"GET", "/.status", auth.MiddlewareFunc( func(w rest.ResponseWriter, r *rest.Request) { w.WriteJson(handler.GetStatus()) }, ), }, ) http.ListenAndServe(":8080", &handler) }
func main() { handler := rest.ResourceHandler{ EnableStatusService: true, } handler.SetRoutes( &rest.Route{"GET", "/.status", func(w rest.ResponseWriter, r *rest.Request) { w.WriteJson(handler.GetStatus()) }, }, ) http.ListenAndServe(":8080", &handler) }
func main() { api := Api{} api.InitDB() api.InitSchema() handler := rest.ResourceHandler{ EnableStatusService: true, EnableRelaxedContentType: true, PreRoutingMiddlewares: []rest.Middleware{ &rest.AuthBasicMiddleware{ Realm: "test zone", Authenticator: func(userId string, password string) bool { if userId == "admin" && password == "admin" { return true } return false }, }, }, } svmw := SemVerMiddleware{ MinVersion: "1.2.0", MaxVersion: "3.0.0", } err := handler.SetRoutes( &rest.Route{"GET", "/#version/countries", svmw.MiddlewareFunc(GetAllCountries)}, &rest.Route{"POST", "/countries", PostCountry}, &rest.Route{"GET", "/countries/:code", GetCountry}, &rest.Route{"DELETE", "/countries/:code", DeleteCountry}, &rest.Route{"GET", "/.status", func(w rest.ResponseWriter, r *rest.Request) { w.WriteJson(handler.GetStatus()) }, }, // ORM &rest.Route{"GET", "/reminders", api.GetAllReminders}, &rest.Route{"POST", "/reminders", api.PostReminder}, &rest.Route{"GET", "/reminders/:id", api.GetReminder}, &rest.Route{"PUT", "/reminders/:id", api.PutReminder}, &rest.Route{"DELETE", "/reminders/:id", api.DeleteReminder}, ) if err != nil { log.Fatal(err) } http.Handle("/api/", http.StripPrefix("/api", &handler)) log.Fatal(http.ListenAndServe(":8080", nil)) // log.Fatal(http.ListenAndServe(":8080", &handler)) }
func (a *Api) Run() { handler := rest.ResourceHandler{ EnableRelaxedContentType: true, EnableStatusService: true, XPoweredBy: "soda-api", } handler.SetRoutes( &rest.Route{"GET", "/meta/newest/:count", a.GetNewest}, &rest.Route{"GET", "/meta/:imgid/:count", a.GetImages}, &rest.Route{"GET", "/item/#name", a.GetItem}, &rest.Route{"GET", "/thumb/#name", a.GetThumbnail}, &rest.Route{"GET", "/.status", func(w rest.ResponseWriter, r *rest.Request) { w.WriteJson(handler.GetStatus()) }, }, ) http.ListenAndServe(a.address, &handler) }
func (a *Api) Run() (err error) { handler := rest.ResourceHandler{ EnableRelaxedContentType: true, EnableStatusService: true, XPoweredBy: "soda-api", } handler.SetRoutes( &rest.Route{"GET", "/api/:imgid/:count", GetIDstuff}, &rest.Route{"GET", "/api/u/:user/:count", GetImagesByUser}, &rest.Route{"GET", "/api/r/:imgid/:count", GetIDstuffReverse}, &rest.Route{"GET", "/.status", func(w rest.ResponseWriter, r *rest.Request) { w.WriteJson(handler.GetStatus()) }, }, &rest.Route{"GET", "/.statistics", GetStatistics}, ) http.ListenAndServe(a.Addr, &handler) return nil }
func main() { handler := rest.ResourceHandler{ EnableRelaxedContentType: true, EnableStatusService: true, } handler.SetRoutes( &rest.Route{"GET", "/tools", GetTools}, &rest.Route{"GET", "/tools/:id", GetTool}, &rest.Route{"GET", "/status", func(w rest.ResponseWriter, r *rest.Request) { w.WriteJson(handler.GetStatus()) }}, ) // Serve static files http.Handle("/public/", http.StripPrefix("/", http.FileServer(http.Dir("../client/public/")))) // Serve API http.Handle("/api/", http.StripPrefix("/api", &handler)) // Start server http.ListenAndServe(":8888", nil) }
func startHttp(addr string, cmdTimeout int) { log.Infof("Starting HTTP server on %s, command timeout: %ds", addr, cmdTimeout) commandTimeout = cmdTimeout handler := rest.ResourceHandler{ DisableXPoweredBy: true, DisableJsonIndent: true, EnableStatusService: true, EnableRelaxedContentType: true, EnableResponseStackTrace: true, } err := handler.SetRoutes( &rest.Route{"GET", "/devices", getDeviceList}, &rest.Route{"GET", "/devices/:devid", getDevice}, &rest.Route{"POST", "/devices/:devid", AuthMiddlewareFunc(controlDevice)}, &rest.Route{"GET", "/stats/control", getStats}, &rest.Route{"DELETE", "/stats/control", deleteStats}, &rest.Route{"Get", "/stats/app", getAppStats}, &rest.Route{"Get", "/stats/sys", getSysStats}, &rest.Route{"GET", "/.status", func(w rest.ResponseWriter, r *rest.Request) { w.WriteJson(handler.GetStatus()) }, }, ) if err != nil { log.Criticalf("http SetRoutes: ", err) os.Exit(1) } // control API http.Handle("/api/v1/", http.StripPrefix("/api/v1", &handler)) // the adapter API for old system err = initPermutation() if err != nil { log.Criticalf("init permutation: ", err) os.Exit(1) } routerHandler := rest.ResourceHandler{ DisableXPoweredBy: true, DisableJsonIndent: true, EnableStatusService: true, EnableResponseStackTrace: true, EnableRelaxedContentType: true, PreRoutingMiddlewares: []rest.Middleware{ &SignMiddleware{}, }, } err = routerHandler.SetRoutes( &rest.Route{"GET", "/list", getRouterList}, &rest.Route{"POST", "/command", postRouterCommand}, &rest.Route{"GET", "/.status", func(w rest.ResponseWriter, r *rest.Request) { w.WriteJson(routerHandler.GetStatus()) }, }, ) if err != nil { log.Criticalf("http SetRoutes: ", err) os.Exit(1) } http.Handle("/router/", http.StripPrefix("/router", &routerHandler)) // push API http.HandleFunc("/api/v1/message", messageHandler) http.HandleFunc("/api/v1/server", serverHandler) http.HandleFunc("/api/v1/app", appHandler) http.HandleFunc("/api/v1/app2", app2Handler) http.HandleFunc("/test/message/confirm", testHandler) err = http.ListenAndServe(addr, nil) if err != nil { log.Criticalf("http listen: ", err) os.Exit(1) } }
// Main defines the available REST resources, starts up the finspect-http server // along with various configuration options, settings and sets up logging func main() { // Default generic log handler LogFileHandler, err := os.OpenFile(FinspectHttpConfiguration.LogDirectory+"http.log", os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666) if err != nil { log.Fatal("Error trying to open general logfile, error returned was: ", err) os.Exit(1) } defer LogFileHandler.Close() log.SetOutput(LogFileHandler) log.SetFlags(log.Ldate | log.Ltime | log.Lshortfile) // HTTP access log handler AccessLogFileHandler, err := os.OpenFile(FinspectHttpConfiguration.LogDirectory+"http-access.log", os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666) if err != nil { log.Fatal("Error trying to open access logfile, error returned was: ", err) os.Exit(1) } defer AccessLogFileHandler.Close() // HTTP error log handler ErrorLogFileHandler, err := os.OpenFile(FinspectHttpConfiguration.LogDirectory+"http-error.log", os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666) if err != nil { log.Fatal("Error trying to open error logfile, error returned was: ", err) os.Exit(1) } defer ErrorLogFileHandler.Close() // Setting up configuration for the HTTP REST router handler := rest.ResourceHandler{ EnableGzip: true, DisableJsonIndent: false, EnableStatusService: true, EnableResponseStackTrace: true, EnableLogAsJson: false, EnableRelaxedContentType: false, Logger: log.New(AccessLogFileHandler, "", 0), LoggerFormat: CombinedLogFormat, DisableLogger: false, ErrorLogger: log.New(ErrorLogFileHandler, "", 0), XPoweredBy: FINSPECT_NAME + " - " + FINSPECT_VERSION, DisableXPoweredBy: false, } // Define some HTTP REST resources, log a fatal error if something goes wrong err = handler.SetRoutes( // Watcher related routes &rest.Route{"GET", "/watchpaths", getReturnWatchPaths}, &rest.Route{"POST", "/watchpaths", postAddWatchPath}, &rest.Route{"DELETE", "/watchpaths/:watchpathid:", deleteRemoveWatchPath}, &rest.Route{"GET", "/watchpaths/:watchpathid:", getReturnWatchPath}, // Indexer related routes &rest.Route{"POST", "/indexjobs", postAddIndexJob}, &rest.Route{"GET", "/indexjobs/:indexjobid:", getReturnIndexJob}, &rest.Route{"DELETE", "/indexjobs/:indexjobid:", deleteRemoveIndexJob}, &rest.Route{"POST", "/indexjobs/search", postSearchIndexJobs}, // Ingester related routes &rest.Route{"POST", "/ingestjobs", postAddIngestJob}, &rest.Route{"GET", "/ingestjobs/:ingestjobid:", getReturnIngestJob}, &rest.Route{"DELETE", "/ingestjobs/:ingestjobid:", deleteRemoveIngestJob}, &rest.Route{"POST", "/ingestjobs/search", postSearchIngestJobs}, // File related routes &rest.Route{"POST", "/files", postCreateFile}, // Admin and internally available resources &rest.Route{"GET", "/.status", func(w rest.ResponseWriter, r *rest.Request) { w.WriteJson(handler.GetStatus()) }}, &rest.Route{"POST", "/shutdown", postAdminShutdownHttpServer}, &rest.Route{"POST", "/reload", postAdminReloadHttpServer}, &rest.Route{"POST", "/restart", postAdminRestartHttpServer}, ) if err != nil { log.Fatal("Error with HTTP router, error returned was: ", err) os.Exit(1) } // Start the finspect-http server log.Fatal(http.ListenAndServe(":7070", &handler)) os.Exit(1) }