github.com/jxgolibs/go-oauth2-server@v1.0.1/cmd/run_server.go (about)

     1  package cmd
     2  
     3  import (
     4  	"net/http"
     5  	"time"
     6  
     7  	"github.com/RichardKnop/go-oauth2-server/services"
     8  	"github.com/gorilla/mux"
     9  	"github.com/phyber/negroni-gzip/gzip"
    10  	"github.com/urfave/negroni"
    11  	"gopkg.in/tylerb/graceful.v1"
    12  )
    13  
    14  // RunServer runs the app
    15  func RunServer(configBackend string) error {
    16  	cnf, db, err := initConfigDB(true, true, configBackend)
    17  	if err != nil {
    18  		return err
    19  	}
    20  	defer db.Close()
    21  
    22  	// start the services
    23  	if err := services.Init(cnf, db); err != nil {
    24  		return err
    25  	}
    26  	defer services.Close()
    27  
    28  	// Start a classic negroni app
    29  	app := negroni.New()
    30  	app.Use(negroni.NewRecovery())
    31  	app.Use(negroni.NewLogger())
    32  	app.Use(gzip.Gzip(gzip.DefaultCompression))
    33  	app.Use(negroni.NewStatic(http.Dir("public")))
    34  
    35  	// Create a router instance
    36  	router := mux.NewRouter()
    37  
    38  	// Add routes
    39  	services.HealthService.RegisterRoutes(router, "/v1")
    40  	services.OauthService.RegisterRoutes(router, "/v1/oauth")
    41  	services.WebService.RegisterRoutes(router, "/web")
    42  
    43  	// Set the router
    44  	app.UseHandler(router)
    45  
    46  	// Run the server on port 8080, gracefully stop on SIGTERM signal
    47  	graceful.Run(":8080", 5*time.Second, app)
    48  
    49  	return nil
    50  }