mirror of
https://codeberg.org/forgejo/forgejo
synced 2024-08-15 04:01:51 +02:00
[REFACTOR] webhook packagist endpoint
This commit is contained in:
parent
36a1d37532
commit
dce754cde1
|
@ -388,32 +388,6 @@ func gogsHookParams(ctx *context.Context) webhookParams {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// PackagistHooksNewPost response for creating Packagist webhook
|
|
||||||
func PackagistHooksNewPost(ctx *context.Context) {
|
|
||||||
createWebhook(ctx, packagistHookParams(ctx))
|
|
||||||
}
|
|
||||||
|
|
||||||
// PackagistHooksEditPost response for editing Packagist webhook
|
|
||||||
func PackagistHooksEditPost(ctx *context.Context) {
|
|
||||||
editWebhook(ctx, packagistHookParams(ctx))
|
|
||||||
}
|
|
||||||
|
|
||||||
func packagistHookParams(ctx *context.Context) webhookParams {
|
|
||||||
form := web.GetForm(ctx).(*forms.NewPackagistHookForm)
|
|
||||||
|
|
||||||
return webhookParams{
|
|
||||||
Type: webhook_module.PACKAGIST,
|
|
||||||
URL: fmt.Sprintf("https://packagist.org/api/update-package?username=%s&apiToken=%s", url.QueryEscape(form.Username), url.QueryEscape(form.APIToken)),
|
|
||||||
ContentType: webhook.ContentTypeJSON,
|
|
||||||
WebhookForm: form.WebhookForm,
|
|
||||||
Meta: &webhook_service.PackagistMeta{
|
|
||||||
Username: form.Username,
|
|
||||||
APIToken: form.APIToken,
|
|
||||||
PackageURL: form.PackageURL,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func checkWebhook(ctx *context.Context) (*ownerRepoCtx, *webhook.Webhook) {
|
func checkWebhook(ctx *context.Context) (*ownerRepoCtx, *webhook.Webhook) {
|
||||||
orCtx, err := getOwnerRepoCtx(ctx)
|
orCtx, err := getOwnerRepoCtx(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
@ -403,13 +403,11 @@ func registerRoutes(m *web.Route) {
|
||||||
addWebhookAddRoutes := func() {
|
addWebhookAddRoutes := func() {
|
||||||
m.Get("/{type}/new", repo_setting.WebhooksNew)
|
m.Get("/{type}/new", repo_setting.WebhooksNew)
|
||||||
m.Post("/gogs/new", web.Bind(forms.NewGogshookForm{}), repo_setting.GogsHooksNewPost)
|
m.Post("/gogs/new", web.Bind(forms.NewGogshookForm{}), repo_setting.GogsHooksNewPost)
|
||||||
m.Post("/packagist/new", web.Bind(forms.NewPackagistHookForm{}), repo_setting.PackagistHooksNewPost)
|
|
||||||
m.Post("/{type}/new", repo_setting.WebhookCreate)
|
m.Post("/{type}/new", repo_setting.WebhookCreate)
|
||||||
}
|
}
|
||||||
|
|
||||||
addWebhookEditRoutes := func() {
|
addWebhookEditRoutes := func() {
|
||||||
m.Post("/gogs/{id}", web.Bind(forms.NewGogshookForm{}), repo_setting.GogsHooksEditPost)
|
m.Post("/gogs/{id}", web.Bind(forms.NewGogshookForm{}), repo_setting.GogsHooksEditPost)
|
||||||
m.Post("/packagist/{id}", web.Bind(forms.NewPackagistHookForm{}), repo_setting.PackagistHooksEditPost)
|
|
||||||
m.Post("/{type}/{id:[0-9]+}", repo_setting.WebhookUpdate)
|
m.Post("/{type}/{id:[0-9]+}", repo_setting.WebhookUpdate)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -292,20 +292,6 @@ func (f *NewGogshookForm) Validate(req *http.Request, errs binding.Errors) bindi
|
||||||
return middleware.Validate(errs, ctx.Data, f, ctx.Locale)
|
return middleware.Validate(errs, ctx.Data, f, ctx.Locale)
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewPackagistHookForm form for creating packagist hook
|
|
||||||
type NewPackagistHookForm struct {
|
|
||||||
Username string `binding:"Required"`
|
|
||||||
APIToken string `binding:"Required"`
|
|
||||||
PackageURL string `binding:"Required;ValidUrl"`
|
|
||||||
WebhookForm
|
|
||||||
}
|
|
||||||
|
|
||||||
// Validate validates the fields
|
|
||||||
func (f *NewPackagistHookForm) Validate(req *http.Request, errs binding.Errors) binding.Errors {
|
|
||||||
ctx := context.GetValidateContext(req)
|
|
||||||
return middleware.Validate(errs, ctx.Data, f, ctx.Locale)
|
|
||||||
}
|
|
||||||
|
|
||||||
// .___
|
// .___
|
||||||
// | | ______ ________ __ ____
|
// | | ______ ________ __ ____
|
||||||
// | |/ ___// ___/ | \_/ __ \
|
// | |/ ___// ___/ | \_/ __ \
|
||||||
|
|
|
@ -7,11 +7,13 @@ import (
|
||||||
"context"
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
"net/url"
|
||||||
|
|
||||||
webhook_model "code.gitea.io/gitea/models/webhook"
|
webhook_model "code.gitea.io/gitea/models/webhook"
|
||||||
"code.gitea.io/gitea/modules/json"
|
"code.gitea.io/gitea/modules/json"
|
||||||
"code.gitea.io/gitea/modules/log"
|
"code.gitea.io/gitea/modules/log"
|
||||||
webhook_module "code.gitea.io/gitea/modules/webhook"
|
webhook_module "code.gitea.io/gitea/modules/webhook"
|
||||||
|
"code.gitea.io/gitea/services/forms"
|
||||||
)
|
)
|
||||||
|
|
||||||
type packagistHandler struct{}
|
type packagistHandler struct{}
|
||||||
|
@ -19,7 +21,26 @@ type packagistHandler struct{}
|
||||||
func (packagistHandler) Type() webhook_module.HookType { return webhook_module.PACKAGIST }
|
func (packagistHandler) Type() webhook_module.HookType { return webhook_module.PACKAGIST }
|
||||||
|
|
||||||
func (packagistHandler) FormFields(bind func(any)) FormFields {
|
func (packagistHandler) FormFields(bind func(any)) FormFields {
|
||||||
panic("TODO")
|
var form struct {
|
||||||
|
forms.WebhookForm
|
||||||
|
Username string `binding:"Required"`
|
||||||
|
APIToken string `binding:"Required"`
|
||||||
|
PackageURL string `binding:"Required;ValidUrl"`
|
||||||
|
}
|
||||||
|
bind(&form)
|
||||||
|
|
||||||
|
return FormFields{
|
||||||
|
WebhookForm: form.WebhookForm,
|
||||||
|
URL: fmt.Sprintf("https://packagist.org/api/update-package?username=%s&apiToken=%s", url.QueryEscape(form.Username), url.QueryEscape(form.APIToken)),
|
||||||
|
ContentType: webhook_model.ContentTypeJSON,
|
||||||
|
Secret: "",
|
||||||
|
HTTPMethod: http.MethodPost,
|
||||||
|
Metadata: &PackagistMeta{
|
||||||
|
Username: form.Username,
|
||||||
|
APIToken: form.APIToken,
|
||||||
|
PackageURL: form.PackageURL,
|
||||||
|
},
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
type (
|
type (
|
||||||
|
|
Loading…
Reference in a new issue