// Run makes the HTTP request corresponding to the CreateBottleCommand command. func (cmd *CreateBottleCommand) Run(c *client.Client, args []string) error { var path string if len(args) > 0 { path = args[0] } else { path = "/bottles" } var payload client.CreateBottlePayload if cmd.Payload != "" { err := json.Unmarshal([]byte(cmd.Payload), &payload) if err != nil { return fmt.Errorf("failed to deserialize payload: %s", err) } } logger := goa.NewLogger(log.New(os.Stderr, "", log.LstdFlags)) ctx := goa.WithLogger(context.Background(), logger) resp, err := c.CreateBottle(ctx, path, &payload, cmd.ContentType) if err != nil { goa.LogError(ctx, "failed", "err", err) return err } goaclient.HandleResponse(c.Client, resp, cmd.PrettyPrint) return nil }
// Run downloads files with given paths. func (cmd *DownloadCommand) Run(c *client.Client, args []string) error { var ( fnf func(context.Context, string) (int64, error) fnd func(context.Context, string, string) (int64, error) rpath = args[0] outfile = cmd.OutFile logger = goa.NewLogger(log.New(os.Stderr, "", log.LstdFlags)) ctx = goa.WithLogger(context.Background(), logger) err error ) if rpath[0] != '/' { rpath = "/" + rpath } if rpath == "/swagger.json" { fnf = c.DownloadSwaggerJSON if outfile == "" { outfile = "swagger.json" } goto found } if strings.HasPrefix(rpath, "/swagger-ui/") { fnd = c.DownloadSwaggerUI rpath = rpath[12:] if outfile == "" { _, outfile = path.Split(rpath) } goto found } return fmt.Errorf("don't know how to download %s", rpath) found: ctx = goa.WithLogContext(ctx, "file", outfile) if fnf != nil { _, err = fnf(ctx, outfile) } else { _, err = fnd(ctx, rpath, outfile) } if err != nil { goa.LogError(ctx, "failed", "err", err) return err } return nil }
// Run makes the HTTP request corresponding to the ShowBottleCommand command. func (cmd *ShowBottleCommand) Run(c *client.Client, args []string) error { var path string if len(args) > 0 { path = args[0] } else { path = fmt.Sprintf("/bottles/%v", cmd.ID) } logger := goa.NewLogger(log.New(os.Stderr, "", log.LstdFlags)) ctx := goa.WithLogger(context.Background(), logger) resp, err := c.ShowBottle(ctx, path) if err != nil { goa.LogError(ctx, "failed", "err", err) return err } goaclient.HandleResponse(c.Client, resp, cmd.PrettyPrint) return nil }
var _ = Describe("FromContext", func() { var buf bytes.Buffer var logctx *log.Context var adapter goa.LogAdapter BeforeEach(func() { logger := log.NewLogfmtLogger(&buf) logctx = log.NewContext(logger) adapter = goakit.FromContext(logctx) }) It("creates an adapter that logs", func() { msg := "msg" adapter.Info(msg) Ω(buf.String()).Should(Equal("lvl=info msg=" + msg + "\n")) }) Context("Context", func() { var ctx context.Context BeforeEach(func() { ctx = goa.WithLogger(context.Background(), adapter) }) It("extracts the log context", func() { Ω(goakit.Context(ctx)).Should(Equal(logctx)) }) }) })