func main() { // Create goa service service := goa.New("cellar") // Setup basic middleware service.Use(goa.RequestID()) service.Use(goa.LogRequest()) service.Use(goa.Recover()) // Mount account controller onto service ac := controllers.NewAccount(service) app.MountAccountController(service, ac) // Mount bottle controller onto service bc := controllers.NewBottle(service) app.MountBottleController(service, bc) // Mount Swagger Spec controller onto service swagger.MountController(service) // Mount JSON Schema controller onto service schema.MountController(service) // Mount JavaScript example js.MountController(service) // Run service service.ListenAndServe(":8080") }
func main() { // Create service api := goa.New("API") // Setup middleware api.Use(goa.RequestID()) api.Use(goa.LogRequest()) api.Use(goa.Recover()) // Mount "account" controller c := NewAccountController() app.MountAccountController(api, c) // Mount "series" controller c2 := NewSeriesController() app.MountSeriesController(api, c2) // Mount "user" controller c3 := NewUserController() app.MountUserController(api, c3) // Mount Swagger spec provider controller swagger.MountController(api) // Mount json schema controller schema.MountController(api) // Start service, listen on port 8080 api.ListenAndServe(":8080") }
func init() { // Configure logging for appengine goa.Log.SetHandler(log15.MultiHandler( log15.StreamHandler(os.Stderr, log15.LogfmtFormat()), AppEngineLogHandler()), ) // Create goa application service := goa.New("cellar") // Setup CORS to allow for swagger UI. spec, err := cors.New(func() { cors.Origin("*", func() { cors.Resource("*", func() { cors.Methods("GET", "POST", "PUT", "PATCH", "DELETE") cors.Headers("*") }) }) }) if err != nil { panic(err) } // Setup basic middleware service.Use(goa.RequestID()) service.Use(AppEngineLogCtx()) service.Use(cors.Middleware(spec)) service.Use(goa.Recover()) // Mount account controller onto application ac := controllers.NewAccount(service) app.MountAccountController(service, ac) // Mount bottle controller onto application bc := controllers.NewBottle(service) app.MountBottleController(service, bc) // Mount Swagger Spec controller onto application swagger.MountController(service) // Mount CORS preflight controllers cors.MountPreflightController(service, spec) // Setup HTTP handler http.HandleFunc("/", service.HTTPHandler().ServeHTTP) }
func main() { service := goa.New("cfbroker") configuration, err := config.Load("./config.yaml") if err != nil { panic(err) } store, err := storage.NewLocalFile("/tmp/data") if err != nil { panic(err) } provisioningController := controllers.NewProvisioning(store) catalogController := commoncontrollers.NewCatalog(configuration.Catalog) app.MountCatalogController(service, catalogController) app.MountProvisioningController(service, provisioningController) swagger.MountController(service) service.ListenAndServe(":8080") }
func main() { // Create service api := goa.New("API") // Setup middleware api.Use(goa.RequestID()) api.Use(goa.LogRequest()) api.Use(goa.Recover()) // Mount "account" controller c := NewAccountController() app.MountAccountController(api, c) // Mount "bottle" controller c2 := NewBottleController() app.MountBottleController(api, c2) // Mount Swagger spec provider controller swagger.MountController(api) // Start service, listen on port 8080 api.ListenAndServe(":8080") }
Context("with a request response", func() { const appName = "foo" var app goa.Service const resName = "res" const actName = "act" var handler, unmarshaler goa.Handler const reqBody = `"body"` const respStatus = 200 var respContent = []byte("response") var handleFunc goa.HandleFunc var rw http.ResponseWriter var request *http.Request var params url.Values BeforeEach(func() { app = goa.New(appName) handler = func(c *goa.Context) error { ctx = c c.Respond(respStatus, respContent) return nil } unmarshaler = func(c *goa.Context) error { if req := c.Request(); req != nil { var payload interface{} err := c.Service().Decode(ctx, req.Body, &payload, req.Header.Get("Content-Type")) if err != nil { return err } c.SetPayload(payload) } return nil
var spec *jwt.Specification var req *http.Request var err error var token *jwtg.Token var tokenString string params := url.Values{"param": []string{"value"}, "query": []string{"qvalue"}} payload := map[string]interface{}{"payload": 42} validFunc := func(token *jwtg.Token) (interface{}, error) { return signingKey, nil } BeforeEach(func() { req, err = http.NewRequest("POST", "/goo", strings.NewReader(`{"payload":42}`)) Ω(err).ShouldNot(HaveOccurred()) rw := new(TestResponseWriter) ctx = goa.NewContext(nil, goa.New("test"), req, rw, params) ctx.SetPayload(payload) spec = &jwt.Specification{ AllowParam: true, ValidationFunc: validFunc, } token = jwtg.New(jwtg.SigningMethodHS256) token.Claims["exp"] = time.Now().Add(time.Hour * 24).Unix() token.Claims["random"] = "42" tokenString, err = token.SignedString(signingKey) Ω(err).ShouldNot(HaveOccurred()) }) It("requires a jwt token be present", func() { h := func(ctx *goa.Context) error {
"strings" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" "github.com/raphael/goa" "golang.org/x/net/context" "gopkg.in/inconshreveable/log15.v2" ) var _ = Describe("Context", func() { var logger log15.Logger var ctx *goa.Context BeforeEach(func() { gctx := context.Background() ctx = goa.NewContext(gctx, goa.New("test"), nil, nil, nil) ctx.Logger = logger }) Describe("SetValue", func() { key := "answer" val := 42 BeforeEach(func() { ctx.SetValue(key, val) }) It("sets the value in the context.Context", func() { v := ctx.Value(key) Ω(v).Should(Equal(val)) })
goaMiddlewareFunc = func(h goa.Handler) goa.Handler { return h } input = goaMiddlewareFunc }) It("returns the middleware", func() { Ω(fmt.Sprintf("%#v", middleware)).Should(Equal(fmt.Sprintf("%#v", goa.Middleware(goaMiddlewareFunc)))) Ω(mErr).ShouldNot(HaveOccurred()) }) }) Context("with a context", func() { var service goa.Service var ctx *goa.Context BeforeEach(func() { service = goa.New("test") req, err := http.NewRequest("GET", "/goo", nil) Ω(err).ShouldNot(HaveOccurred()) rw := new(TestResponseWriter) params := url.Values{"foo": []string{"bar"}} ctx = goa.NewContext(nil, service, req, rw, params) Ω(ctx.ResponseStatus()).Should(Equal(0)) }) Context("using a goa handler", func() { BeforeEach(func() { var goaHandler goa.Handler = func(ctx *goa.Context) error { ctx.Respond(200, "ok") return nil } input = goaHandler
goaMiddlewareFunc = func(h goa.Handler) goa.Handler { return h } input = goaMiddlewareFunc }) It("returns the middleware", func() { Ω(fmt.Sprintf("%#v", middleware)).Should(Equal(fmt.Sprintf("%#v", goa.Middleware(goaMiddlewareFunc)))) Ω(mErr).ShouldNot(HaveOccurred()) }) }) Context("with a context", func() { var service goa.Service var ctx *goa.Context BeforeEach(func() { service = goa.New("test") req, err := http.NewRequest("GET", "/goo", nil) Ω(err).ShouldNot(HaveOccurred()) rw := new(testResponseWriter) params := url.Values{"foo": []string{"bar"}} ctx = goa.NewContext(nil, service, req, rw, params) Ω(ctx.ResponseStatus()).Should(Equal(0)) }) Context("using a goa handler", func() { BeforeEach(func() { var goaHandler goa.Handler = func(ctx *goa.Context) error { ctx.Respond(200, "ok") return nil } input = goaHandler