// This function is called from main.go and from the tests // to create a new application. func NewApp(root string) *App { CheckEnv() // Use negroni for middleware ne := negroni.New() // Use gorilla/mux for routing ro := mux.NewRouter() // Use Render for template. Pass in path to templates folder // as well as asset helper functions. re := render.New(render.Options{ IndentJSON: true, StreamingJSON: true, }) // Establish connection to DB as specified in database.go db := NewDB() models.New(db) // Add middleware to the stack ne.Use(negroni.NewRecovery()) ne.Use(negroni.NewLogger()) ne.UseHandler(ro) // Return a new App struct with all these things. return &App{ne, ro, re} }
// RunServer runs the app func RunServer() error { cnf, db, err := initConfigDB(true, true) if err != nil { return err } defer db.Close() if err := initServices(cnf, db); err != nil { return err } // Start a classic negroni app app := negroni.New() app.Use(negroni.NewRecovery()) app.Use(negroni.NewLogger()) app.Use(gzip.Gzip(gzip.DefaultCompression)) app.Use(negroni.NewStatic(http.Dir("public"))) // Create a router instance router := mux.NewRouter() // Add routes healthService.RegisterRoutes(router, "/v1") oauthService.RegisterRoutes(router, "/v1/oauth") webService.RegisterRoutes(router, "/web") // Set the router app.UseHandler(router) // Run the server on port 8080, gracefully stop on SIGTERM signal graceful.Run(":8080", 5*time.Second, app) return nil }
// RunServer runs the app func RunServer() error { cnf, db, err := initConfigDB(true, true) if err != nil { return err } defer db.Close() // Initialise the health service healthService := health.NewService(db) // Initialise the oauth service oauthService := oauth.NewService(cnf, db) // Initialise the email service emailService := email.NewService(cnf) // Initialise the accounts service accountsService := accounts.NewService( cnf, db, oauthService, emailService, nil, // accounts.EmailFactory ) // Initialise the facebook service facebookService := facebook.NewService( cnf, db, accountsService, nil, // facebook.Adapter ) // Start a negroni app app := negroni.New() app.Use(negroni.NewRecovery()) app.Use(negroni.NewLogger()) app.Use(gzip.Gzip(gzip.DefaultCompression)) // Create a router instance router := mux.NewRouter() // Register routes healthService.RegisterRoutes(router, "/v1") oauthService.RegisterRoutes(router, "/v1/oauth") accountsService.RegisterRoutes(router, "/v1") facebookService.RegisterRoutes(router, "/v1/facebook") // Set the router app.UseHandler(router) // Run the server on port 8080, gracefully stop on SIGTERM signal graceful.Run(":8080", 5*time.Second, app) return nil }
// RunServer runs the app func RunServer() error { cnf, db, err := initConfigDB(true, true) if err != nil { return err } defer db.Close() // Initialise the health service healthService := health.NewService(db) // Initialise the oauth service oauthService := oauth.NewService(cnf, db) // Initialise the web service webService := web.NewService(cnf, oauthService) // Start a classic negroni app app := negroni.New() app.Use(negroni.NewRecovery()) app.Use(negroni.NewLogger()) app.Use(gzip.Gzip(gzip.DefaultCompression)) app.Use(negroni.NewStatic(http.Dir("public"))) // Create a router instance router := mux.NewRouter() // Add routes for the health service (healthcheck endpoint) health.RegisterRoutes(router, healthService) // Add routes for the oauth service (REST tokens endpoint) oauth.RegisterRoutes(router, oauthService) // Add routes for the web package (register, login authorize web pages) web.RegisterRoutes(router, webService) // Set the router app.UseHandler(router) // Run the server on port 8080 app.Run(":8080") return nil }