func redirect(ctx *web.Context, loc *url.URL) { if _, ok := ctx.Params["noredirect"]; ok { return } loc = ctx.Request.URL.ResolveReference(loc) ctx.Header().Set("Location", loc.String()) ctx.WriteHeader(303) fmt.Fprintf(ctx, "redirecting to %s", loc) }
func handleGetCmdInfo(ctx *web.Context, idstr string) error { id, _ := liblush.ParseCmdId(idstr) s := ctx.User.(*server) c := s.session.GetCommand(id) if c == nil { return web.WebError{404, "no such command: " + idstr} } ctx.Header().Set("content-type", "application/json") enc := json.NewEncoder(ctx) var info = struct { Started, Exited *time.Time Error string `json:",omitempty"` }{ Started: c.Status().Started(), Exited: c.Status().Exited(), } if cerr := c.Status().Err(); cerr != nil { info.Error = cerr.Error() } return enc.Encode(info) }