func DeleteApplication(ctx *context.Context) { if err := models.DeleteApplicationByID(ctx.ParamsInt64(":id")); err != nil { ctx.Error(500, err.Error()) return } ctx.Redirect("/applications") }
func DeleteCollector(ctx *context.Context) { if err := models.DeleteCollectorByID(ctx.ParamsInt64(":id")); err != nil { ctx.Error(500, err.Error()) return } ctx.Redirect("/collectors") }
func RegenerateApplicationSecret(ctx *context.Context) { if err := models.RegenerateApplicationToken(ctx.ParamsInt64(":id")); err != nil { ctx.Error(500, err.Error()) return } ctx.Redirect(fmt.Sprintf("/applications/%d", ctx.ParamsInt64(":id"))) }
func RegenerateCollectorSecret(ctx *context.Context) { if err := models.RegenerateCollectorSecret(ctx.ParamsInt64(":id")); err != nil { ctx.Error(500, err.Error()) return } ctx.Redirect(fmt.Sprintf("/collectors/%d", ctx.ParamsInt64(":id"))) }
func Collectors(ctx *context.Context) { ctx.Data["Title"] = "Collectors" ctx.Data["PageIsCollector"] = true collectors, err := models.ListCollectors() if err != nil { ctx.Error(500, err.Error()) return } ctx.Data["Collectors"] = collectors ctx.HTML(200, "collector/list") }
func Webhooks(ctx *context.Context) { ctx.Data["Title"] = "Webhooks" ctx.Data["PageIsWebhook"] = true webhooks, err := models.QueryWebhooks(models.QueryWebhookOptions{ Limit: 50, Order: "created desc", }) if err != nil { ctx.Error(500, err.Error()) return } ctx.Data["Webhooks"] = webhooks ctx.HTML(200, "webhook/list") }
func EditApplicationPost(ctx *context.Context, form NewApplicationForm) { ctx.Data["Title"] = "Edit Application" ctx.Data["PageIsApplication"] = true app := parseApplicationByID(ctx) if ctx.Written() { return } app.Name = form.Name if err := models.UpdateApplication(app); err != nil { if errors.IsApplicationExists(err) { ctx.Data["Err_Name"] = true ctx.RenderWithErr("Application name has been used.", "application/edit", form) } else { ctx.Error(500, err.Error()) } return } ctx.Redirect(fmt.Sprintf("/applications/%d", app.ID)) }
func EditCollectorPost(ctx *context.Context, form NewCollectorForm) { ctx.Data["Title"] = "Edit Collector" ctx.Data["PageIsCollector"] = true collector := parseCollectorByID(ctx) if ctx.Written() { return } collector.Name = form.Name if err := models.UpdateCollector(collector); err != nil { if errors.IsCollectorExists(err) { ctx.Data["Err_Name"] = true ctx.RenderWithErr("Collector name has been used.", "collector/edit", form) } else { ctx.Error(500, err.Error()) } return } ctx.Redirect(fmt.Sprintf("/collectors/%d", collector.ID)) }
func Hook(ctx *context.Context) { collector, err := models.GetCollectorBySecret(ctx.Query("secret")) if err != nil { if errors.IsCollectorNotFound(err) { ctx.Error(403) } else { ctx.Error(500, err.Error()) } return } payload, err := ctx.Req.Body().Bytes() if err != nil { ctx.Error(500, err.Error()) return } // NOTE: Currently only support GitHub event, err := webhook.ParseGitHubEvent(payload) if err != nil { ctx.Error(500, err.Error()) return } if err = models.NewWebhook(&models.Webhook{ CollectorID: collector.ID, Owner: tool.FirstNonEmptyString(event.Repository.Owner.Login, event.Repository.Owner.Name), RepoName: event.Repository.Name, EventType: ctx.Req.Header.Get("X-GitHub-Event"), Sender: event.Sender.Login, Payload: string(payload), }); err != nil { ctx.Error(500, err.Error()) return } ctx.Status(202) }