func main() { assetPath := flag.String("assets", "", "Path to static assets to host") dbHostArg := flag.String("mongoHost", "localhost", "MongoDB server address, defaults to localhost") jwkPath := flag.String("heartJWK", "", "Path the JWK for the HEART client") clientID := flag.String("heartClientID", "", "Client ID registered with the OP") opURL := flag.String("heartOP", "", "URL for the OpenID Provider") sessionSecret := flag.String("secret", "", "Secret for the cookie session") flag.Parse() s := server.NewServer(*dbHostArg) session, err := mgo.Dial(*dbHostArg) if err != nil { panic(err) } db := session.DB("fhir") var authConfig auth.Config if *jwkPath != "" { if *clientID == "" || *opURL == "" { fmt.Println("You must provide both a client ID and OP URL for HEART mode") return } secret := *sessionSecret if secret == "" { secret = "reallySekret" } authConfig = auth.HEART(*clientID, *jwkPath, *opURL, secret) } else { authConfig = auth.None() } ar := func(e *gin.Engine) { e.GET("/QualityReport/:id", controllers.ShowQualityReportHandler(db)) e.POST("/QualityReport", controllers.CreateQualityReportHandler(db)) e.GET("/PatientReport/:id", controllers.ShowIndividualResultsForPatientHandler(db)) e.GET("/QualityReport/:id/PatientResults", controllers.ShowQualityReportPatientsHandler(db)) s.Engine.GET("/CQMMeasure/:id", controllers.ShowMeasureHandler(db)) e.GET("/CQMMeasure", controllers.IndexMeasureHandler(db)) e.GET("/UserInfo", controllers.UserInfo) ptmatch.Setup(e) if *assetPath != "" { e.StaticFile("/", fmt.Sprintf("%s/index.html", *assetPath)) e.Static("/assets", fmt.Sprintf("%s/assets", *assetPath)) } } recMatchWatch := middleware.PostProcessRecordMatchResponse() s.AddMiddleware("Bundle", recMatchWatch) s.AfterRoutes = append(s.AfterRoutes, ar) s.Run(server.Config{Auth: authConfig, ServerURL: "http://localhost:3001", DatabaseName: "fhir"}) }
func main() { // Check environment variable for a linked MongoDB container mongoHost := os.Getenv("MONGO_PORT_27017_TCP_ADDR") if mongoHost == "" { mongoHost = "localhost" } s := fhirSvr.NewServer(mongoHost) assetPath := flag.String("assets", "", "Path to static assets to host") jwkPath := flag.String("heartJWK", "", "Path the JWK for the HEART client") clientID := flag.String("heartClientID", "", "Client ID registered with the OP") opURL := flag.String("heartOP", "", "URL for the OpenID Provider") sessionSecret := flag.String("secret", "", "Secret for the cookie session") flag.Parse() var authConfig auth.Config if *jwkPath != "" { if *clientID == "" || *opURL == "" { fmt.Println("You must provide both a client ID and OP URL for HEART mode") return } secret := *sessionSecret if secret == "" { secret = "reallySekret" } authConfig = auth.HEART(*clientID, *jwkPath, *opURL, secret) } else { authConfig = auth.None() } recMatchWatch := middleware.PostProcessRecordMatchResponse() s.AddMiddleware("Bundle", recMatchWatch) ar := func(e *gin.Engine) { server.Setup(e) if *assetPath != "" { e.StaticFile("/", fmt.Sprintf("%s/index.html", *assetPath)) e.Static("/assets", fmt.Sprintf("%s/assets", *assetPath)) } } s.AfterRoutes = append(s.AfterRoutes, ar) s.Run(fhirSvr.Config{Auth: authConfig, ServerURL: "http://localhost:3001", DatabaseName: "fhir"}) }