func init() { u := UserService{} u.Register() // Optionally, you can install the Swagger Service which provides a nice Web UI on your REST API // You need to download the Swagger HTML5 assets and change the FilePath location in the config below. // Open <your_app_id>.appspot.com/apidocs and enter http://<your_app_id>.appspot.com/apidocs.json in the api input field. config := swagger.Config{ WebServices: restful.RegisteredWebServices(), // you control what services are visible WebServicesUrl: getGaeURL(), ApiPath: "/apidocs.json", // Optionally, specifiy where the UI is located SwaggerPath: "/apidocs/", // GAE support static content which is configured in your app.yaml. // This example expect the swagger-ui in static/swagger so you should place it there :) SwaggerFilePath: "static/swagger"} swagger.InstallSwaggerService(config) }
func main() { u := UserService{map[string]User{}} u.Register() // Optionally, you can install the Swagger Service which provides a nice Web UI on your REST API // You need to download the Swagger HTML5 assets and change the FilePath location in the config below. // Open http://localhost:8080/apidocs and enter http://localhost:8080/apidocs.json in the api input field. config := swagger.Config{ WebServices: restful.RegisteredWebServices(), // you control what services are visible WebServicesUrl: "http://localhost:8080", ApiPath: "/apidocs.json", // Optionally, specifiy where the UI is located SwaggerPath: "/apidocs/", SwaggerFilePath: "/Users/emicklei/Projects/swagger-ui/dist"} swagger.InstallSwaggerService(config) log.Printf("start listening on localhost:8080") log.Fatal(http.ListenAndServe(":8080", nil)) }
func init() { u := ProfileApi{Path: "/profiles"} u.register() // Optionally, you can install the Swagger Service which provides a nice Web UI on your REST API // You need to download the Swagger HTML5 assets and change the FilePath location in the config below. // Open <your_app_id>.appspot.com/apidocs and enter // Place the Swagger UI files into a folder called static/swagger if you wish to use Swagger // http://<your_app_id>.appspot.com/apidocs.json in the api input field. // For testing, you can use http://localhost:8080/apidocs.json config := swagger.Config{ // You control what services are visible WebServices: restful.RegisteredWebServices(), WebServicesUrl: gaeUrl(), ApiPath: "/apidocs.json", // Optionally, specifiy where the UI is located SwaggerPath: "/apidocs/", // GAE support static content which is configured in your app.yaml. // This example expect the swagger-ui in static/swagger so you should place it there :) SwaggerFilePath: "static/swagger"} swagger.InstallSwaggerService(config) }
func main() { dbcon, err := database.GetDatabaseConnection() if err != nil { logger.Panicln(err) } defer dbcon.Close() analyser := NewAnalyser(dbcon, redis.NewPool(func() (redis.Conn, error) { return database.GetRedisConnection(getredisconnect()) }, 10)) restful.DefaultResponseMimeType = restful.MIME_JSON restful.DefaultContainer.EnableContentEncoding(true) restful.Add(NewAnalyseOGDATRESTService(analyser)) config := swagger.Config{ WebServicesUrl: discoveryhost(), ApiPath: "/swaggerdoc", SwaggerPath: "/doc/", SwaggerFilePath: "swagger-ui/dist/", WebServices: restful.RegisteredWebServices()} swagger.InstallSwaggerService(config) logger.Printf("analyser (%s) listening on port %s\n", AppID, portbinding()) go func() { logger.Fatal(http.ListenAndServe(":"+portbinding(), nil)) }() var datachange, urlchange chan []byte var heartbeatchannel chan bool populatedatasetinfo := func() { if err := analyser.populatedatasetinfo(); err != nil { logger.Panicln(err) } } if !isonlyweb() { heartbeatchannel = heartbeat(getheartbeatinterval()) <-heartbeatchannel // Wait for the first heartbeat, so the logging in the database is properly set up populatedatasetinfo() datachange = analyser.listenredischannel(watcherappid + ":DataChange") urlchange = analyser.listenredischannel(watcherappid + ":UrlChange") } for { select { case <-urlchange: // = REMARK = // Naive approach here. If a URLChange or DataChange event is triggered, // the whole analytic database will be recreated. It would be better to trace // only the affected datasets and only create the relevant statistic. // In future, urlchange/datachange might contain a JSON-encoded []byte which contains // the affected IDs logger.Println("Received URL change notice, re-generating database analysis") populatedatasetinfo() case <-datachange: logger.Println("Received Data change notice, re-generating database analysis") populatedatasetinfo() case <-heartbeatchannel: logger.Println("Idle") } } }