mirror of
https://github.com/harness/drone.git
synced 2025-05-31 11:43:15 +00:00
added controllers and handlers for connectors, triggers, templates
This commit is contained in:
parent
23f612162a
commit
2870aaaabc
@ -18,6 +18,7 @@ import (
|
|||||||
gitrpcserver "github.com/harness/gitness/gitrpc/server"
|
gitrpcserver "github.com/harness/gitness/gitrpc/server"
|
||||||
gitrpccron "github.com/harness/gitness/gitrpc/server/cron"
|
gitrpccron "github.com/harness/gitness/gitrpc/server/cron"
|
||||||
checkcontroller "github.com/harness/gitness/internal/api/controller/check"
|
checkcontroller "github.com/harness/gitness/internal/api/controller/check"
|
||||||
|
"github.com/harness/gitness/internal/api/controller/connector"
|
||||||
"github.com/harness/gitness/internal/api/controller/execution"
|
"github.com/harness/gitness/internal/api/controller/execution"
|
||||||
"github.com/harness/gitness/internal/api/controller/githook"
|
"github.com/harness/gitness/internal/api/controller/githook"
|
||||||
controllerlogs "github.com/harness/gitness/internal/api/controller/logs"
|
controllerlogs "github.com/harness/gitness/internal/api/controller/logs"
|
||||||
@ -29,6 +30,8 @@ import (
|
|||||||
"github.com/harness/gitness/internal/api/controller/service"
|
"github.com/harness/gitness/internal/api/controller/service"
|
||||||
"github.com/harness/gitness/internal/api/controller/serviceaccount"
|
"github.com/harness/gitness/internal/api/controller/serviceaccount"
|
||||||
"github.com/harness/gitness/internal/api/controller/space"
|
"github.com/harness/gitness/internal/api/controller/space"
|
||||||
|
"github.com/harness/gitness/internal/api/controller/template"
|
||||||
|
"github.com/harness/gitness/internal/api/controller/trigger"
|
||||||
"github.com/harness/gitness/internal/api/controller/user"
|
"github.com/harness/gitness/internal/api/controller/user"
|
||||||
controllerwebhook "github.com/harness/gitness/internal/api/controller/webhook"
|
controllerwebhook "github.com/harness/gitness/internal/api/controller/webhook"
|
||||||
"github.com/harness/gitness/internal/auth/authn"
|
"github.com/harness/gitness/internal/auth/authn"
|
||||||
@ -106,6 +109,9 @@ func initSystem(ctx context.Context, config *types.Config) (*cliserver.System, e
|
|||||||
livelog.WireSet,
|
livelog.WireSet,
|
||||||
controllerlogs.WireSet,
|
controllerlogs.WireSet,
|
||||||
secret.WireSet,
|
secret.WireSet,
|
||||||
|
connector.WireSet,
|
||||||
|
template.WireSet,
|
||||||
|
trigger.WireSet,
|
||||||
)
|
)
|
||||||
return &cliserver.System{}, nil
|
return &cliserver.System{}, nil
|
||||||
}
|
}
|
||||||
|
@ -8,7 +8,6 @@ package main
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
|
||||||
"github.com/harness/gitness/cli/server"
|
"github.com/harness/gitness/cli/server"
|
||||||
"github.com/harness/gitness/encrypt"
|
"github.com/harness/gitness/encrypt"
|
||||||
"github.com/harness/gitness/events"
|
"github.com/harness/gitness/events"
|
||||||
@ -16,6 +15,7 @@ import (
|
|||||||
server3 "github.com/harness/gitness/gitrpc/server"
|
server3 "github.com/harness/gitness/gitrpc/server"
|
||||||
"github.com/harness/gitness/gitrpc/server/cron"
|
"github.com/harness/gitness/gitrpc/server/cron"
|
||||||
check2 "github.com/harness/gitness/internal/api/controller/check"
|
check2 "github.com/harness/gitness/internal/api/controller/check"
|
||||||
|
"github.com/harness/gitness/internal/api/controller/connector"
|
||||||
"github.com/harness/gitness/internal/api/controller/execution"
|
"github.com/harness/gitness/internal/api/controller/execution"
|
||||||
"github.com/harness/gitness/internal/api/controller/githook"
|
"github.com/harness/gitness/internal/api/controller/githook"
|
||||||
logs2 "github.com/harness/gitness/internal/api/controller/logs"
|
logs2 "github.com/harness/gitness/internal/api/controller/logs"
|
||||||
@ -28,6 +28,8 @@ import (
|
|||||||
"github.com/harness/gitness/internal/api/controller/serviceaccount"
|
"github.com/harness/gitness/internal/api/controller/serviceaccount"
|
||||||
"github.com/harness/gitness/internal/api/controller/space"
|
"github.com/harness/gitness/internal/api/controller/space"
|
||||||
"github.com/harness/gitness/internal/api/controller/system"
|
"github.com/harness/gitness/internal/api/controller/system"
|
||||||
|
"github.com/harness/gitness/internal/api/controller/template"
|
||||||
|
"github.com/harness/gitness/internal/api/controller/trigger"
|
||||||
"github.com/harness/gitness/internal/api/controller/user"
|
"github.com/harness/gitness/internal/api/controller/user"
|
||||||
webhook2 "github.com/harness/gitness/internal/api/controller/webhook"
|
webhook2 "github.com/harness/gitness/internal/api/controller/webhook"
|
||||||
"github.com/harness/gitness/internal/auth/authn"
|
"github.com/harness/gitness/internal/auth/authn"
|
||||||
@ -109,6 +111,12 @@ func initSystem(ctx context.Context, config *types.Config) (*server.System, erro
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
secretController := secret.ProvideController(db, pathUID, pathStore, encrypter, secretStore, authorizer, spaceStore)
|
secretController := secret.ProvideController(db, pathUID, pathStore, encrypter, secretStore, authorizer, spaceStore)
|
||||||
|
triggerStore := database.ProvideTriggerStore(db)
|
||||||
|
triggerController := trigger.ProvideController(db, authorizer, triggerStore, pipelineStore, spaceStore)
|
||||||
|
connectorStore := database.ProvideConnectorStore(db)
|
||||||
|
connectorController := connector.ProvideController(db, pathUID, connectorStore, authorizer, spaceStore)
|
||||||
|
templateStore := database.ProvideTemplateStore(db)
|
||||||
|
templateController := template.ProvideController(db, pathUID, pathStore, templateStore, authorizer, spaceStore)
|
||||||
pullReqStore := database.ProvidePullReqStore(db, principalInfoCache)
|
pullReqStore := database.ProvidePullReqStore(db, principalInfoCache)
|
||||||
pullReqActivityStore := database.ProvidePullReqActivityStore(db, principalInfoCache)
|
pullReqActivityStore := database.ProvidePullReqActivityStore(db, principalInfoCache)
|
||||||
codeCommentView := database.ProvideCodeCommentView(db)
|
codeCommentView := database.ProvideCodeCommentView(db)
|
||||||
@ -163,7 +171,7 @@ func initSystem(ctx context.Context, config *types.Config) (*server.System, erro
|
|||||||
checkStore := database.ProvideCheckStore(db, principalInfoCache)
|
checkStore := database.ProvideCheckStore(db, principalInfoCache)
|
||||||
checkController := check2.ProvideController(db, authorizer, repoStore, checkStore, gitrpcInterface)
|
checkController := check2.ProvideController(db, authorizer, repoStore, checkStore, gitrpcInterface)
|
||||||
systemController := system.NewController(principalStore, config)
|
systemController := system.NewController(principalStore, config)
|
||||||
apiHandler := router.ProvideAPIHandler(config, authenticator, repoController, executionController, logsController, spaceController, pipelineController, secretController, pullreqController, webhookController, githookController, serviceaccountController, controller, principalController, checkController, systemController)
|
apiHandler := router.ProvideAPIHandler(config, authenticator, repoController, executionController, logsController, spaceController, pipelineController, secretController, triggerController, connectorController, templateController, pullreqController, webhookController, githookController, serviceaccountController, controller, principalController, checkController, systemController)
|
||||||
gitHandler := router.ProvideGitHandler(config, provider, repoStore, authenticator, authorizer, gitrpcInterface)
|
gitHandler := router.ProvideGitHandler(config, provider, repoStore, authenticator, authorizer, gitrpcInterface)
|
||||||
webHandler := router.ProvideWebHandler(config)
|
webHandler := router.ProvideWebHandler(config)
|
||||||
routerRouter := router.ProvideRouter(config, apiHandler, gitHandler, webHandler)
|
routerRouter := router.ProvideRouter(config, apiHandler, gitHandler, webHandler)
|
||||||
|
@ -15,7 +15,6 @@ import (
|
|||||||
type Controller struct {
|
type Controller struct {
|
||||||
db *sqlx.DB
|
db *sqlx.DB
|
||||||
uidCheck check.PathUID
|
uidCheck check.PathUID
|
||||||
pathStore store.PathStore
|
|
||||||
connectorStore store.ConnectorStore
|
connectorStore store.ConnectorStore
|
||||||
authorizer authz.Authorizer
|
authorizer authz.Authorizer
|
||||||
spaceStore store.SpaceStore
|
spaceStore store.SpaceStore
|
||||||
@ -25,14 +24,12 @@ func NewController(
|
|||||||
db *sqlx.DB,
|
db *sqlx.DB,
|
||||||
uidCheck check.PathUID,
|
uidCheck check.PathUID,
|
||||||
authorizer authz.Authorizer,
|
authorizer authz.Authorizer,
|
||||||
pathStore store.PathStore,
|
|
||||||
connectorStore store.ConnectorStore,
|
connectorStore store.ConnectorStore,
|
||||||
spaceStore store.SpaceStore,
|
spaceStore store.SpaceStore,
|
||||||
) *Controller {
|
) *Controller {
|
||||||
return &Controller{
|
return &Controller{
|
||||||
db: db,
|
db: db,
|
||||||
uidCheck: uidCheck,
|
uidCheck: uidCheck,
|
||||||
pathStore: pathStore,
|
|
||||||
connectorStore: connectorStore,
|
connectorStore: connectorStore,
|
||||||
authorizer: authorizer,
|
authorizer: authorizer,
|
||||||
spaceStore: spaceStore,
|
spaceStore: spaceStore,
|
||||||
|
@ -20,10 +20,9 @@ var WireSet = wire.NewSet(
|
|||||||
|
|
||||||
func ProvideController(db *sqlx.DB,
|
func ProvideController(db *sqlx.DB,
|
||||||
uidCheck check.PathUID,
|
uidCheck check.PathUID,
|
||||||
pathStore store.PathStore,
|
|
||||||
connectorStore store.ConnectorStore,
|
connectorStore store.ConnectorStore,
|
||||||
authorizer authz.Authorizer,
|
authorizer authz.Authorizer,
|
||||||
spaceStore store.SpaceStore,
|
spaceStore store.SpaceStore,
|
||||||
) *Controller {
|
) *Controller {
|
||||||
return NewController(db, uidCheck, authorizer, pathStore, connectorStore, spaceStore)
|
return NewController(db, uidCheck, authorizer, connectorStore, spaceStore)
|
||||||
}
|
}
|
||||||
|
@ -25,14 +25,12 @@ func NewController(
|
|||||||
db *sqlx.DB,
|
db *sqlx.DB,
|
||||||
uidCheck check.PathUID,
|
uidCheck check.PathUID,
|
||||||
authorizer authz.Authorizer,
|
authorizer authz.Authorizer,
|
||||||
pathStore store.PathStore,
|
|
||||||
templateStore store.TemplateStore,
|
templateStore store.TemplateStore,
|
||||||
spaceStore store.SpaceStore,
|
spaceStore store.SpaceStore,
|
||||||
) *Controller {
|
) *Controller {
|
||||||
return &Controller{
|
return &Controller{
|
||||||
db: db,
|
db: db,
|
||||||
uidCheck: uidCheck,
|
uidCheck: uidCheck,
|
||||||
pathStore: pathStore,
|
|
||||||
templateStore: templateStore,
|
templateStore: templateStore,
|
||||||
authorizer: authorizer,
|
authorizer: authorizer,
|
||||||
spaceStore: spaceStore,
|
spaceStore: spaceStore,
|
||||||
|
@ -25,5 +25,5 @@ func ProvideController(db *sqlx.DB,
|
|||||||
authorizer authz.Authorizer,
|
authorizer authz.Authorizer,
|
||||||
spaceStore store.SpaceStore,
|
spaceStore store.SpaceStore,
|
||||||
) *Controller {
|
) *Controller {
|
||||||
return NewController(db, uidCheck, authorizer, pathStore, templateStore, spaceStore)
|
return NewController(db, uidCheck, authorizer, templateStore, spaceStore)
|
||||||
}
|
}
|
||||||
|
36
internal/api/controller/trigger/controller.go
Normal file
36
internal/api/controller/trigger/controller.go
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
// Copyright 2022 Harness Inc. All rights reserved.
|
||||||
|
// Use of this source code is governed by the Polyform Free Trial License
|
||||||
|
// that can be found in the LICENSE.md file for this repository.
|
||||||
|
|
||||||
|
package trigger
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/harness/gitness/internal/auth/authz"
|
||||||
|
"github.com/harness/gitness/internal/store"
|
||||||
|
|
||||||
|
"github.com/jmoiron/sqlx"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Controller struct {
|
||||||
|
db *sqlx.DB
|
||||||
|
authorizer authz.Authorizer
|
||||||
|
triggerStore store.TriggerStore
|
||||||
|
pipelineStore store.PipelineStore
|
||||||
|
spaceStore store.SpaceStore
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewController(
|
||||||
|
db *sqlx.DB,
|
||||||
|
authorizer authz.Authorizer,
|
||||||
|
triggerStore store.TriggerStore,
|
||||||
|
pipelineStore store.PipelineStore,
|
||||||
|
spaceStore store.SpaceStore,
|
||||||
|
) *Controller {
|
||||||
|
return &Controller{
|
||||||
|
db: db,
|
||||||
|
authorizer: authorizer,
|
||||||
|
triggerStore: triggerStore,
|
||||||
|
pipelineStore: pipelineStore,
|
||||||
|
spaceStore: spaceStore,
|
||||||
|
}
|
||||||
|
}
|
67
internal/api/controller/trigger/create.go
Normal file
67
internal/api/controller/trigger/create.go
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
// Copyright 2022 Harness Inc. All rights reserved.
|
||||||
|
// Use of this source code is governed by the Polyform Free Trial License
|
||||||
|
// that can be found in the LICENSE.md file for this repository.
|
||||||
|
|
||||||
|
package trigger
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"fmt"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
apiauth "github.com/harness/gitness/internal/api/auth"
|
||||||
|
"github.com/harness/gitness/internal/auth"
|
||||||
|
"github.com/harness/gitness/types"
|
||||||
|
"github.com/harness/gitness/types/enum"
|
||||||
|
)
|
||||||
|
|
||||||
|
// TODO: Add more as needed.
|
||||||
|
type CreateInput struct {
|
||||||
|
Description string `json:"description"`
|
||||||
|
UID string `json:"uid"`
|
||||||
|
Data string `json:"data"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Controller) Create(
|
||||||
|
ctx context.Context,
|
||||||
|
session *auth.Session,
|
||||||
|
spaceRef string,
|
||||||
|
uid string,
|
||||||
|
in *CreateInput,
|
||||||
|
) (*types.Trigger, error) {
|
||||||
|
space, err := c.spaceStore.FindByRef(ctx, spaceRef)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("could not find space: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
pipeline, err := c.pipelineStore.FindByUID(ctx, space.ID, uid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("could not find pipeline: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
err = apiauth.CheckPipeline(ctx, c.authorizer, session, space.Path, pipeline.UID, enum.PermissionPipelineExecute)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("failed to authorize: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
pipeline, err = c.pipelineStore.IncrementSeqNum(ctx, pipeline)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("failed to increment sequence number: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
now := time.Now().UnixMilli()
|
||||||
|
trigger := &types.Trigger{
|
||||||
|
Description: in.Description,
|
||||||
|
UID: in.UID,
|
||||||
|
PipelineID: pipeline.ID,
|
||||||
|
Created: now,
|
||||||
|
Updated: now,
|
||||||
|
Version: 0,
|
||||||
|
}
|
||||||
|
err = c.triggerStore.Create(ctx, trigger)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("trigger creation failed: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return trigger, nil
|
||||||
|
}
|
41
internal/api/controller/trigger/delete.go
Normal file
41
internal/api/controller/trigger/delete.go
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
// Copyright 2022 Harness Inc. All rights reserved.
|
||||||
|
// Use of this source code is governed by the Polyform Free Trial License
|
||||||
|
// that can be found in the LICENSE.md file for this repository.
|
||||||
|
|
||||||
|
package trigger
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
apiauth "github.com/harness/gitness/internal/api/auth"
|
||||||
|
"github.com/harness/gitness/internal/auth"
|
||||||
|
"github.com/harness/gitness/types/enum"
|
||||||
|
)
|
||||||
|
|
||||||
|
func (c *Controller) Delete(
|
||||||
|
ctx context.Context,
|
||||||
|
session *auth.Session,
|
||||||
|
spaceRef string,
|
||||||
|
pipelineUID string,
|
||||||
|
triggerUID string,
|
||||||
|
) error {
|
||||||
|
space, err := c.spaceStore.FindByRef(ctx, spaceRef)
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("could not find parent space: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
pipeline, err := c.pipelineStore.FindByUID(ctx, space.ID, pipelineUID)
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("could not find pipeline: %w", err)
|
||||||
|
}
|
||||||
|
err = apiauth.CheckPipeline(ctx, c.authorizer, session, space.Path, pipeline.UID, enum.PermissionPipelineDelete)
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("could not authorize: %w", err)
|
||||||
|
}
|
||||||
|
err = c.triggerStore.DeleteByUID(ctx, pipeline.ID, triggerUID)
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("could not delete trigger: %w", err)
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
45
internal/api/controller/trigger/find.go
Normal file
45
internal/api/controller/trigger/find.go
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
// Copyright 2022 Harness Inc. All rights reserved.
|
||||||
|
// Use of this source code is governed by the Polyform Free Trial License
|
||||||
|
// that can be found in the LICENSE.md file for this repository.
|
||||||
|
|
||||||
|
package trigger
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
apiauth "github.com/harness/gitness/internal/api/auth"
|
||||||
|
"github.com/harness/gitness/internal/auth"
|
||||||
|
"github.com/harness/gitness/types"
|
||||||
|
"github.com/harness/gitness/types/enum"
|
||||||
|
)
|
||||||
|
|
||||||
|
func (c *Controller) Find(
|
||||||
|
ctx context.Context,
|
||||||
|
session *auth.Session,
|
||||||
|
spaceRef string,
|
||||||
|
pipelineUID string,
|
||||||
|
triggerUID string,
|
||||||
|
) (*types.Trigger, error) {
|
||||||
|
space, err := c.spaceStore.FindByRef(ctx, spaceRef)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("could not find parent space: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
pipeline, err := c.pipelineStore.FindByUID(ctx, space.ID, pipelineUID)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("could not find pipeline: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
err = apiauth.CheckPipeline(ctx, c.authorizer, session, space.Path, pipeline.UID, enum.PermissionPipelineView)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("could not authorize: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
trigger, err := c.triggerStore.FindByUID(ctx, pipeline.ID, triggerUID)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("could not find trigger %s: %w", triggerUID, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return trigger, nil
|
||||||
|
}
|
59
internal/api/controller/trigger/list.go
Normal file
59
internal/api/controller/trigger/list.go
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
// Copyright 2022 Harness Inc. All rights reserved.
|
||||||
|
// Use of this source code is governed by the Polyform Free Trial License
|
||||||
|
// that can be found in the LICENSE.md file for this repository.
|
||||||
|
package trigger
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
apiauth "github.com/harness/gitness/internal/api/auth"
|
||||||
|
"github.com/harness/gitness/internal/auth"
|
||||||
|
"github.com/harness/gitness/store/database/dbtx"
|
||||||
|
"github.com/harness/gitness/types"
|
||||||
|
"github.com/harness/gitness/types/enum"
|
||||||
|
)
|
||||||
|
|
||||||
|
func (c *Controller) List(
|
||||||
|
ctx context.Context,
|
||||||
|
session *auth.Session,
|
||||||
|
spaceRef string,
|
||||||
|
pipelineUID string,
|
||||||
|
filter types.ListQueryFilter,
|
||||||
|
) ([]*types.Trigger, int64, error) {
|
||||||
|
space, err := c.spaceStore.FindByRef(ctx, spaceRef)
|
||||||
|
if err != nil {
|
||||||
|
return nil, 0, fmt.Errorf("failed to find parent space: %w", err)
|
||||||
|
}
|
||||||
|
pipeline, err := c.pipelineStore.FindByUID(ctx, space.ID, pipelineUID)
|
||||||
|
if err != nil {
|
||||||
|
return nil, 0, fmt.Errorf("failed to find pipeline: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
err = apiauth.CheckPipeline(ctx, c.authorizer, session, space.Path, pipeline.UID, enum.PermissionPipelineView)
|
||||||
|
if err != nil {
|
||||||
|
return nil, 0, fmt.Errorf("failed to authorize: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
var count int64
|
||||||
|
var triggers []*types.Trigger
|
||||||
|
|
||||||
|
err = dbtx.New(c.db).WithTx(ctx, func(ctx context.Context) (err error) {
|
||||||
|
count, err = c.triggerStore.Count(ctx, pipeline.ID, filter)
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("failed to count child triggers: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
triggers, err = c.triggerStore.List(ctx, pipeline.ID, filter)
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("failed to list child triggers: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return
|
||||||
|
}, dbtx.TxDefaultReadOnly)
|
||||||
|
if err != nil {
|
||||||
|
return triggers, count, fmt.Errorf("failed to fetch list: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return triggers, count, nil
|
||||||
|
}
|
61
internal/api/controller/trigger/update.go
Normal file
61
internal/api/controller/trigger/update.go
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
// Copyright 2022 Harness Inc. All rights reserved.
|
||||||
|
// Use of this source code is governed by the Polyform Free Trial License
|
||||||
|
// that can be found in the LICENSE.md file for this repository.
|
||||||
|
|
||||||
|
package trigger
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
apiauth "github.com/harness/gitness/internal/api/auth"
|
||||||
|
"github.com/harness/gitness/internal/auth"
|
||||||
|
"github.com/harness/gitness/types"
|
||||||
|
"github.com/harness/gitness/types/enum"
|
||||||
|
)
|
||||||
|
|
||||||
|
// UpdateInput is used for updating a trigger.
|
||||||
|
type UpdateInput struct {
|
||||||
|
Description string `json:"description"`
|
||||||
|
UID string `json:"uid"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Controller) Update(
|
||||||
|
ctx context.Context,
|
||||||
|
session *auth.Session,
|
||||||
|
spaceRef string,
|
||||||
|
pipelineUID string,
|
||||||
|
triggerUID string,
|
||||||
|
in *UpdateInput) (*types.Trigger, error) {
|
||||||
|
space, err := c.spaceStore.FindByRef(ctx, spaceRef)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("could not find space: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
err = apiauth.CheckPipeline(ctx, c.authorizer, session, space.Path, pipelineUID, enum.PermissionPipelineEdit)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("failed to check auth: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
pipeline, err := c.pipelineStore.FindByUID(ctx, space.ID, pipelineUID)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("failed to find pipeline: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
trigger, err := c.triggerStore.FindByUID(ctx, pipeline.ID, triggerUID)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("failed to find trigger: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return c.triggerStore.UpdateOptLock(ctx,
|
||||||
|
trigger, func(original *types.Trigger) error {
|
||||||
|
// update values only if provided
|
||||||
|
if in.Description != "" {
|
||||||
|
original.Description = in.Description
|
||||||
|
}
|
||||||
|
if in.UID != "" {
|
||||||
|
original.UID = in.UID
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
})
|
||||||
|
}
|
27
internal/api/controller/trigger/wire.go
Normal file
27
internal/api/controller/trigger/wire.go
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
// Copyright 2022 Harness Inc. All rights reserved.
|
||||||
|
// Use of this source code is governed by the Polyform Free Trial License
|
||||||
|
// that can be found in the LICENSE.md file for this repository.
|
||||||
|
|
||||||
|
package trigger
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/harness/gitness/internal/auth/authz"
|
||||||
|
"github.com/harness/gitness/internal/store"
|
||||||
|
|
||||||
|
"github.com/google/wire"
|
||||||
|
"github.com/jmoiron/sqlx"
|
||||||
|
)
|
||||||
|
|
||||||
|
// WireSet provides a wire set for this package.
|
||||||
|
var WireSet = wire.NewSet(
|
||||||
|
ProvideController,
|
||||||
|
)
|
||||||
|
|
||||||
|
func ProvideController(db *sqlx.DB,
|
||||||
|
authorizer authz.Authorizer,
|
||||||
|
triggerStore store.TriggerStore,
|
||||||
|
pipelineStore store.PipelineStore,
|
||||||
|
spaceStore store.SpaceStore,
|
||||||
|
) *Controller {
|
||||||
|
return NewController(db, authorizer, triggerStore, pipelineStore, spaceStore)
|
||||||
|
}
|
37
internal/api/handler/connector/create.go
Normal file
37
internal/api/handler/connector/create.go
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
// Copyright 2022 Harness Inc. All rights reserved.
|
||||||
|
// Use of this source code is governed by the Polyform Free Trial License
|
||||||
|
// that can be found in the LICENSE.md file for this repository.
|
||||||
|
|
||||||
|
package connector
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"github.com/harness/gitness/internal/api/controller/connector"
|
||||||
|
"github.com/harness/gitness/internal/api/render"
|
||||||
|
"github.com/harness/gitness/internal/api/request"
|
||||||
|
)
|
||||||
|
|
||||||
|
// HandleCreate returns a http.HandlerFunc that creates a new connector.
|
||||||
|
func HandleCreate(connectorCtrl *connector.Controller) http.HandlerFunc {
|
||||||
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
ctx := r.Context()
|
||||||
|
session, _ := request.AuthSessionFrom(ctx)
|
||||||
|
|
||||||
|
in := new(connector.CreateInput)
|
||||||
|
err := json.NewDecoder(r.Body).Decode(in)
|
||||||
|
if err != nil {
|
||||||
|
render.BadRequestf(w, "Invalid Request Body: %s.", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
connector, err := connectorCtrl.Create(ctx, session, in)
|
||||||
|
if err != nil {
|
||||||
|
render.TranslatedUserError(w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
render.JSON(w, http.StatusCreated, connector)
|
||||||
|
}
|
||||||
|
}
|
39
internal/api/handler/connector/delete.go
Normal file
39
internal/api/handler/connector/delete.go
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
// Copyright 2022 Harness Inc. All rights reserved.
|
||||||
|
// Use of this source code is governed by the Polyform Free Trial License
|
||||||
|
// that can be found in the LICENSE.md file for this repository.
|
||||||
|
|
||||||
|
package connector
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"github.com/harness/gitness/internal/api/controller/connector"
|
||||||
|
"github.com/harness/gitness/internal/api/render"
|
||||||
|
"github.com/harness/gitness/internal/api/request"
|
||||||
|
"github.com/harness/gitness/internal/paths"
|
||||||
|
)
|
||||||
|
|
||||||
|
func HandleDelete(connectorCtrl *connector.Controller) http.HandlerFunc {
|
||||||
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
ctx := r.Context()
|
||||||
|
session, _ := request.AuthSessionFrom(ctx)
|
||||||
|
connectorRef, err := request.GetConnectorRefFromPath(r)
|
||||||
|
if err != nil {
|
||||||
|
render.TranslatedUserError(w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
spaceRef, connectorUID, err := paths.DisectLeaf(connectorRef)
|
||||||
|
if err != nil {
|
||||||
|
render.TranslatedUserError(w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
err = connectorCtrl.Delete(ctx, session, spaceRef, connectorUID)
|
||||||
|
if err != nil {
|
||||||
|
render.TranslatedUserError(w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
render.DeleteSuccessful(w)
|
||||||
|
}
|
||||||
|
}
|
39
internal/api/handler/connector/find.go
Normal file
39
internal/api/handler/connector/find.go
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
// Copyright 2022 Harness Inc. All rights reserved.
|
||||||
|
// Use of this source code is governed by the Polyform Free Trial License
|
||||||
|
// that can be found in the LICENSE.md file for this repository.
|
||||||
|
|
||||||
|
package connector
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"github.com/harness/gitness/internal/api/controller/connector"
|
||||||
|
"github.com/harness/gitness/internal/api/render"
|
||||||
|
"github.com/harness/gitness/internal/api/request"
|
||||||
|
"github.com/harness/gitness/internal/paths"
|
||||||
|
)
|
||||||
|
|
||||||
|
// HandleFind finds a connector from the database.
|
||||||
|
func HandleFind(connectorCtrl *connector.Controller) http.HandlerFunc {
|
||||||
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
ctx := r.Context()
|
||||||
|
session, _ := request.AuthSessionFrom(ctx)
|
||||||
|
connectorRef, err := request.GetConnectorRefFromPath(r)
|
||||||
|
if err != nil {
|
||||||
|
render.TranslatedUserError(w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
spaceRef, connectorUID, err := paths.DisectLeaf(connectorRef)
|
||||||
|
if err != nil {
|
||||||
|
render.TranslatedUserError(w, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
connector, err := connectorCtrl.Find(ctx, session, spaceRef, connectorUID)
|
||||||
|
if err != nil {
|
||||||
|
render.TranslatedUserError(w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
render.JSON(w, http.StatusOK, connector)
|
||||||
|
}
|
||||||
|
}
|
47
internal/api/handler/connector/update.go
Normal file
47
internal/api/handler/connector/update.go
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
// Copyright 2022 Harness Inc. All rights reserved.
|
||||||
|
// Use of this source code is governed by the Polyform Free Trial License
|
||||||
|
// that can be found in the LICENSE.md file for this repository.
|
||||||
|
|
||||||
|
package connector
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"github.com/harness/gitness/internal/api/controller/connector"
|
||||||
|
"github.com/harness/gitness/internal/api/render"
|
||||||
|
"github.com/harness/gitness/internal/api/request"
|
||||||
|
"github.com/harness/gitness/internal/paths"
|
||||||
|
)
|
||||||
|
|
||||||
|
func HandleUpdate(connectorCtrl *connector.Controller) http.HandlerFunc {
|
||||||
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
ctx := r.Context()
|
||||||
|
session, _ := request.AuthSessionFrom(ctx)
|
||||||
|
|
||||||
|
in := new(connector.UpdateInput)
|
||||||
|
err := json.NewDecoder(r.Body).Decode(in)
|
||||||
|
if err != nil {
|
||||||
|
render.BadRequestf(w, "Invalid Request Body: %s.", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
connectorRef, err := request.GetConnectorRefFromPath(r)
|
||||||
|
if err != nil {
|
||||||
|
render.TranslatedUserError(w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
spaceRef, connectorUID, err := paths.DisectLeaf(connectorRef)
|
||||||
|
if err != nil {
|
||||||
|
render.TranslatedUserError(w, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
connector, err := connectorCtrl.Update(ctx, session, spaceRef, connectorUID, in)
|
||||||
|
if err != nil {
|
||||||
|
render.TranslatedUserError(w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
render.JSON(w, http.StatusOK, connector)
|
||||||
|
}
|
||||||
|
}
|
37
internal/api/handler/template/create.go
Normal file
37
internal/api/handler/template/create.go
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
// Copyright 2022 Harness Inc. All rights reserved.
|
||||||
|
// Use of this source code is governed by the Polyform Free Trial License
|
||||||
|
// that can be found in the LICENSE.md file for this repository.
|
||||||
|
|
||||||
|
package template
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"github.com/harness/gitness/internal/api/controller/template"
|
||||||
|
"github.com/harness/gitness/internal/api/render"
|
||||||
|
"github.com/harness/gitness/internal/api/request"
|
||||||
|
)
|
||||||
|
|
||||||
|
// HandleCreate returns a http.HandlerFunc that creates a new template.
|
||||||
|
func HandleCreate(templateCtrl *template.Controller) http.HandlerFunc {
|
||||||
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
ctx := r.Context()
|
||||||
|
session, _ := request.AuthSessionFrom(ctx)
|
||||||
|
|
||||||
|
in := new(template.CreateInput)
|
||||||
|
err := json.NewDecoder(r.Body).Decode(in)
|
||||||
|
if err != nil {
|
||||||
|
render.BadRequestf(w, "Invalid Request Body: %s.", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
template, err := templateCtrl.Create(ctx, session, in)
|
||||||
|
if err != nil {
|
||||||
|
render.TranslatedUserError(w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
render.JSON(w, http.StatusCreated, template)
|
||||||
|
}
|
||||||
|
}
|
39
internal/api/handler/template/delete.go
Normal file
39
internal/api/handler/template/delete.go
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
// Copyright 2022 Harness Inc. All rights reserved.
|
||||||
|
// Use of this source code is governed by the Polyform Free Trial License
|
||||||
|
// that can be found in the LICENSE.md file for this repository.
|
||||||
|
|
||||||
|
package template
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"github.com/harness/gitness/internal/api/controller/template"
|
||||||
|
"github.com/harness/gitness/internal/api/render"
|
||||||
|
"github.com/harness/gitness/internal/api/request"
|
||||||
|
"github.com/harness/gitness/internal/paths"
|
||||||
|
)
|
||||||
|
|
||||||
|
func HandleDelete(templateCtrl *template.Controller) http.HandlerFunc {
|
||||||
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
ctx := r.Context()
|
||||||
|
session, _ := request.AuthSessionFrom(ctx)
|
||||||
|
templateRef, err := request.GetTemplateRefFromPath(r)
|
||||||
|
if err != nil {
|
||||||
|
render.TranslatedUserError(w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
spaceRef, templateUID, err := paths.DisectLeaf(templateRef)
|
||||||
|
if err != nil {
|
||||||
|
render.TranslatedUserError(w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
err = templateCtrl.Delete(ctx, session, spaceRef, templateUID)
|
||||||
|
if err != nil {
|
||||||
|
render.TranslatedUserError(w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
render.DeleteSuccessful(w)
|
||||||
|
}
|
||||||
|
}
|
39
internal/api/handler/template/find.go
Normal file
39
internal/api/handler/template/find.go
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
// Copyright 2022 Harness Inc. All rights reserved.
|
||||||
|
// Use of this source code is governed by the Polyform Free Trial License
|
||||||
|
// that can be found in the LICENSE.md file for this repository.
|
||||||
|
|
||||||
|
package template
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"github.com/harness/gitness/internal/api/controller/template"
|
||||||
|
"github.com/harness/gitness/internal/api/render"
|
||||||
|
"github.com/harness/gitness/internal/api/request"
|
||||||
|
"github.com/harness/gitness/internal/paths"
|
||||||
|
)
|
||||||
|
|
||||||
|
// HandleFind finds a template from the database.
|
||||||
|
func HandleFind(templateCtrl *template.Controller) http.HandlerFunc {
|
||||||
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
ctx := r.Context()
|
||||||
|
session, _ := request.AuthSessionFrom(ctx)
|
||||||
|
templateRef, err := request.GetTemplateRefFromPath(r)
|
||||||
|
if err != nil {
|
||||||
|
render.TranslatedUserError(w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
spaceRef, templateUID, err := paths.DisectLeaf(templateRef)
|
||||||
|
if err != nil {
|
||||||
|
render.TranslatedUserError(w, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
template, err := templateCtrl.Find(ctx, session, spaceRef, templateUID)
|
||||||
|
if err != nil {
|
||||||
|
render.TranslatedUserError(w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
render.JSON(w, http.StatusOK, template)
|
||||||
|
}
|
||||||
|
}
|
47
internal/api/handler/template/update.go
Normal file
47
internal/api/handler/template/update.go
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
// Copyright 2022 Harness Inc. All rights reserved.
|
||||||
|
// Use of this source code is governed by the Polyform Free Trial License
|
||||||
|
// that can be found in the LICENSE.md file for this repository.
|
||||||
|
|
||||||
|
package template
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"github.com/harness/gitness/internal/api/controller/template"
|
||||||
|
"github.com/harness/gitness/internal/api/render"
|
||||||
|
"github.com/harness/gitness/internal/api/request"
|
||||||
|
"github.com/harness/gitness/internal/paths"
|
||||||
|
)
|
||||||
|
|
||||||
|
func HandleUpdate(templateCtrl *template.Controller) http.HandlerFunc {
|
||||||
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
ctx := r.Context()
|
||||||
|
session, _ := request.AuthSessionFrom(ctx)
|
||||||
|
|
||||||
|
in := new(template.UpdateInput)
|
||||||
|
err := json.NewDecoder(r.Body).Decode(in)
|
||||||
|
if err != nil {
|
||||||
|
render.BadRequestf(w, "Invalid Request Body: %s.", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
templateRef, err := request.GetTemplateRefFromPath(r)
|
||||||
|
if err != nil {
|
||||||
|
render.TranslatedUserError(w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
spaceRef, templateUID, err := paths.DisectLeaf(templateRef)
|
||||||
|
if err != nil {
|
||||||
|
render.TranslatedUserError(w, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
template, err := templateCtrl.Update(ctx, session, spaceRef, templateUID, in)
|
||||||
|
if err != nil {
|
||||||
|
render.TranslatedUserError(w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
render.JSON(w, http.StatusOK, template)
|
||||||
|
}
|
||||||
|
}
|
47
internal/api/handler/trigger/create.go
Normal file
47
internal/api/handler/trigger/create.go
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
// Copyright 2022 Harness Inc. All rights reserved.
|
||||||
|
// Use of this source code is governed by the Polyform Free Trial License
|
||||||
|
// that can be found in the LICENSE.md file for this repository.
|
||||||
|
|
||||||
|
package trigger
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"github.com/harness/gitness/internal/api/controller/trigger"
|
||||||
|
"github.com/harness/gitness/internal/api/render"
|
||||||
|
"github.com/harness/gitness/internal/api/request"
|
||||||
|
"github.com/harness/gitness/internal/paths"
|
||||||
|
)
|
||||||
|
|
||||||
|
func HandleCreate(triggerCtrl *trigger.Controller) http.HandlerFunc {
|
||||||
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
ctx := r.Context()
|
||||||
|
session, _ := request.AuthSessionFrom(ctx)
|
||||||
|
pipelineRef, err := request.GetPipelineRefFromPath(r)
|
||||||
|
if err != nil {
|
||||||
|
render.TranslatedUserError(w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
spaceRef, pipelineUID, err := paths.DisectLeaf(pipelineRef)
|
||||||
|
if err != nil {
|
||||||
|
render.TranslatedUserError(w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
in := new(trigger.CreateInput)
|
||||||
|
err = json.NewDecoder(r.Body).Decode(in)
|
||||||
|
if err != nil {
|
||||||
|
render.BadRequestf(w, "Invalid Request Body: %s.", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
trigger, err := triggerCtrl.Create(ctx, session, spaceRef, pipelineUID, in)
|
||||||
|
if err != nil {
|
||||||
|
render.TranslatedUserError(w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
render.JSON(w, http.StatusCreated, trigger)
|
||||||
|
}
|
||||||
|
}
|
44
internal/api/handler/trigger/delete.go
Normal file
44
internal/api/handler/trigger/delete.go
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
// Copyright 2022 Harness Inc. All rights reserved.
|
||||||
|
// Use of this source code is governed by the Polyform Free Trial License
|
||||||
|
// that can be found in the LICENSE.md file for this repository.
|
||||||
|
|
||||||
|
package trigger
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"github.com/harness/gitness/internal/api/controller/trigger"
|
||||||
|
"github.com/harness/gitness/internal/api/render"
|
||||||
|
"github.com/harness/gitness/internal/api/request"
|
||||||
|
"github.com/harness/gitness/internal/paths"
|
||||||
|
)
|
||||||
|
|
||||||
|
func HandleDelete(triggerCtrl *trigger.Controller) http.HandlerFunc {
|
||||||
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
ctx := r.Context()
|
||||||
|
session, _ := request.AuthSessionFrom(ctx)
|
||||||
|
pipelineRef, err := request.GetPipelineRefFromPath(r)
|
||||||
|
if err != nil {
|
||||||
|
render.TranslatedUserError(w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
spaceRef, pipelineUID, err := paths.DisectLeaf(pipelineRef)
|
||||||
|
if err != nil {
|
||||||
|
render.TranslatedUserError(w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
n, err := request.GetTriggerUIDFromPath(r)
|
||||||
|
if err != nil {
|
||||||
|
render.TranslatedUserError(w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
err = triggerCtrl.Delete(ctx, session, spaceRef, pipelineUID, n)
|
||||||
|
if err != nil {
|
||||||
|
render.TranslatedUserError(w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
render.DeleteSuccessful(w)
|
||||||
|
}
|
||||||
|
}
|
44
internal/api/handler/trigger/find.go
Normal file
44
internal/api/handler/trigger/find.go
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
// Copyright 2022 Harness Inc. All rights reserved.
|
||||||
|
// Use of this source code is governed by the Polyform Free Trial License
|
||||||
|
// that can be found in the LICENSE.md file for this repository.
|
||||||
|
|
||||||
|
package trigger
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"github.com/harness/gitness/internal/api/controller/trigger"
|
||||||
|
"github.com/harness/gitness/internal/api/render"
|
||||||
|
"github.com/harness/gitness/internal/api/request"
|
||||||
|
"github.com/harness/gitness/internal/paths"
|
||||||
|
)
|
||||||
|
|
||||||
|
func HandleFind(triggerCtrl *trigger.Controller) http.HandlerFunc {
|
||||||
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
ctx := r.Context()
|
||||||
|
session, _ := request.AuthSessionFrom(ctx)
|
||||||
|
pipelineRef, err := request.GetPipelineRefFromPath(r)
|
||||||
|
if err != nil {
|
||||||
|
render.TranslatedUserError(w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
triggerUID, err := request.GetTriggerUIDFromPath(r)
|
||||||
|
if err != nil {
|
||||||
|
render.TranslatedUserError(w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
spaceRef, pipelineUID, err := paths.DisectLeaf(pipelineRef)
|
||||||
|
if err != nil {
|
||||||
|
render.TranslatedUserError(w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
trigger, err := triggerCtrl.Find(ctx, session, spaceRef, pipelineUID, triggerUID)
|
||||||
|
if err != nil {
|
||||||
|
render.TranslatedUserError(w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
render.JSON(w, http.StatusOK, trigger)
|
||||||
|
}
|
||||||
|
}
|
42
internal/api/handler/trigger/list.go
Normal file
42
internal/api/handler/trigger/list.go
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
// Copyright 2022 Harness Inc. All rights reserved.
|
||||||
|
// Use of this source code is governed by the Polyform Free Trial License
|
||||||
|
// that can be found in the LICENSE.md file for this repository.
|
||||||
|
|
||||||
|
package trigger
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"github.com/harness/gitness/internal/api/controller/trigger"
|
||||||
|
"github.com/harness/gitness/internal/api/render"
|
||||||
|
"github.com/harness/gitness/internal/api/request"
|
||||||
|
"github.com/harness/gitness/internal/paths"
|
||||||
|
)
|
||||||
|
|
||||||
|
func HandleList(triggerCtrl *trigger.Controller) http.HandlerFunc {
|
||||||
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
ctx := r.Context()
|
||||||
|
session, _ := request.AuthSessionFrom(ctx)
|
||||||
|
pipelineRef, err := request.GetPipelineRefFromPath(r)
|
||||||
|
if err != nil {
|
||||||
|
render.TranslatedUserError(w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
spaceRef, pipelineUID, err := paths.DisectLeaf(pipelineRef)
|
||||||
|
if err != nil {
|
||||||
|
render.TranslatedUserError(w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
filter := request.ParseListQueryFilterFromRequest(r)
|
||||||
|
|
||||||
|
repos, totalCount, err := triggerCtrl.List(ctx, session, spaceRef, pipelineUID, filter)
|
||||||
|
if err != nil {
|
||||||
|
render.TranslatedUserError(w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
render.Pagination(r, w, filter.Page, filter.Size, int(totalCount))
|
||||||
|
render.JSON(w, http.StatusOK, repos)
|
||||||
|
}
|
||||||
|
}
|
53
internal/api/handler/trigger/update.go
Normal file
53
internal/api/handler/trigger/update.go
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
// Copyright 2022 Harness Inc. All rights reserved.
|
||||||
|
// Use of this source code is governed by the Polyform Free Trial License
|
||||||
|
// that can be found in the LICENSE.md file for this repository.
|
||||||
|
|
||||||
|
package trigger
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"github.com/harness/gitness/internal/api/controller/trigger"
|
||||||
|
"github.com/harness/gitness/internal/api/render"
|
||||||
|
"github.com/harness/gitness/internal/api/request"
|
||||||
|
"github.com/harness/gitness/internal/paths"
|
||||||
|
)
|
||||||
|
|
||||||
|
func HandleUpdate(triggerCtrl *trigger.Controller) http.HandlerFunc {
|
||||||
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
ctx := r.Context()
|
||||||
|
session, _ := request.AuthSessionFrom(ctx)
|
||||||
|
|
||||||
|
in := new(trigger.UpdateInput)
|
||||||
|
err := json.NewDecoder(r.Body).Decode(in)
|
||||||
|
if err != nil {
|
||||||
|
render.BadRequestf(w, "Invalid Request Body: %s.", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
pipelineRef, err := request.GetPipelineRefFromPath(r)
|
||||||
|
if err != nil {
|
||||||
|
render.TranslatedUserError(w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
spaceRef, pipelineUID, err := paths.DisectLeaf(pipelineRef)
|
||||||
|
if err != nil {
|
||||||
|
render.TranslatedUserError(w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
triggerUID, err := request.GetTriggerUIDFromPath(r)
|
||||||
|
if err != nil {
|
||||||
|
render.TranslatedUserError(w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
pipeline, err := triggerCtrl.Update(ctx, session, spaceRef, pipelineUID, triggerUID, in)
|
||||||
|
if err != nil {
|
||||||
|
render.TranslatedUserError(w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
render.JSON(w, http.StatusOK, pipeline)
|
||||||
|
}
|
||||||
|
}
|
20
internal/api/request/connector.go
Normal file
20
internal/api/request/connector.go
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
package request
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
"net/url"
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
PathParamConnectorRef = "connector_ref"
|
||||||
|
)
|
||||||
|
|
||||||
|
func GetConnectorRefFromPath(r *http.Request) (string, error) {
|
||||||
|
rawRef, err := PathParamOrError(r, PathParamConnectorRef)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
|
||||||
|
// paths are unescaped
|
||||||
|
return url.PathUnescape(rawRef)
|
||||||
|
}
|
@ -14,6 +14,7 @@ const (
|
|||||||
PathParamExecutionNumber = "execution_number"
|
PathParamExecutionNumber = "execution_number"
|
||||||
PathParamStageNumber = "stage_number"
|
PathParamStageNumber = "stage_number"
|
||||||
PathParamStepNumber = "step_number"
|
PathParamStepNumber = "step_number"
|
||||||
|
PathParamTriggerRef = "trigger_ref"
|
||||||
)
|
)
|
||||||
|
|
||||||
func GetPipelineRefFromPath(r *http.Request) (string, error) {
|
func GetPipelineRefFromPath(r *http.Request) (string, error) {
|
||||||
@ -37,3 +38,13 @@ func GetStageNumberFromPath(r *http.Request) (int64, error) {
|
|||||||
func GetStepNumberFromPath(r *http.Request) (int64, error) {
|
func GetStepNumberFromPath(r *http.Request) (int64, error) {
|
||||||
return PathParamAsPositiveInt64(r, PathParamStepNumber)
|
return PathParamAsPositiveInt64(r, PathParamStepNumber)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func GetTriggerUIDFromPath(r *http.Request) (string, error) {
|
||||||
|
rawRef, err := PathParamOrError(r, PathParamTriggerRef)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
|
||||||
|
// paths are unescaped
|
||||||
|
return url.PathUnescape(rawRef)
|
||||||
|
}
|
||||||
|
20
internal/api/request/template.go
Normal file
20
internal/api/request/template.go
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
package request
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
"net/url"
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
PathParamTemplateRef = "template_ref"
|
||||||
|
)
|
||||||
|
|
||||||
|
func GetTemplateRefFromPath(r *http.Request) (string, error) {
|
||||||
|
rawRef, err := PathParamOrError(r, PathParamTemplateRef)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
|
||||||
|
// paths are unescaped
|
||||||
|
return url.PathUnescape(rawRef)
|
||||||
|
}
|
@ -10,6 +10,7 @@ import (
|
|||||||
|
|
||||||
"github.com/harness/gitness/githook"
|
"github.com/harness/gitness/githook"
|
||||||
"github.com/harness/gitness/internal/api/controller/check"
|
"github.com/harness/gitness/internal/api/controller/check"
|
||||||
|
"github.com/harness/gitness/internal/api/controller/connector"
|
||||||
"github.com/harness/gitness/internal/api/controller/execution"
|
"github.com/harness/gitness/internal/api/controller/execution"
|
||||||
controllergithook "github.com/harness/gitness/internal/api/controller/githook"
|
controllergithook "github.com/harness/gitness/internal/api/controller/githook"
|
||||||
"github.com/harness/gitness/internal/api/controller/logs"
|
"github.com/harness/gitness/internal/api/controller/logs"
|
||||||
@ -21,10 +22,13 @@ import (
|
|||||||
"github.com/harness/gitness/internal/api/controller/serviceaccount"
|
"github.com/harness/gitness/internal/api/controller/serviceaccount"
|
||||||
"github.com/harness/gitness/internal/api/controller/space"
|
"github.com/harness/gitness/internal/api/controller/space"
|
||||||
"github.com/harness/gitness/internal/api/controller/system"
|
"github.com/harness/gitness/internal/api/controller/system"
|
||||||
|
"github.com/harness/gitness/internal/api/controller/template"
|
||||||
|
"github.com/harness/gitness/internal/api/controller/trigger"
|
||||||
"github.com/harness/gitness/internal/api/controller/user"
|
"github.com/harness/gitness/internal/api/controller/user"
|
||||||
"github.com/harness/gitness/internal/api/controller/webhook"
|
"github.com/harness/gitness/internal/api/controller/webhook"
|
||||||
"github.com/harness/gitness/internal/api/handler/account"
|
"github.com/harness/gitness/internal/api/handler/account"
|
||||||
handlercheck "github.com/harness/gitness/internal/api/handler/check"
|
handlercheck "github.com/harness/gitness/internal/api/handler/check"
|
||||||
|
handlerconnector "github.com/harness/gitness/internal/api/handler/connector"
|
||||||
handlerexecution "github.com/harness/gitness/internal/api/handler/execution"
|
handlerexecution "github.com/harness/gitness/internal/api/handler/execution"
|
||||||
handlergithook "github.com/harness/gitness/internal/api/handler/githook"
|
handlergithook "github.com/harness/gitness/internal/api/handler/githook"
|
||||||
handlerlogs "github.com/harness/gitness/internal/api/handler/logs"
|
handlerlogs "github.com/harness/gitness/internal/api/handler/logs"
|
||||||
@ -37,6 +41,8 @@ import (
|
|||||||
handlerserviceaccount "github.com/harness/gitness/internal/api/handler/serviceaccount"
|
handlerserviceaccount "github.com/harness/gitness/internal/api/handler/serviceaccount"
|
||||||
handlerspace "github.com/harness/gitness/internal/api/handler/space"
|
handlerspace "github.com/harness/gitness/internal/api/handler/space"
|
||||||
handlersystem "github.com/harness/gitness/internal/api/handler/system"
|
handlersystem "github.com/harness/gitness/internal/api/handler/system"
|
||||||
|
handlertemplate "github.com/harness/gitness/internal/api/handler/template"
|
||||||
|
handlertrigger "github.com/harness/gitness/internal/api/handler/trigger"
|
||||||
handleruser "github.com/harness/gitness/internal/api/handler/user"
|
handleruser "github.com/harness/gitness/internal/api/handler/user"
|
||||||
"github.com/harness/gitness/internal/api/handler/users"
|
"github.com/harness/gitness/internal/api/handler/users"
|
||||||
handlerwebhook "github.com/harness/gitness/internal/api/handler/webhook"
|
handlerwebhook "github.com/harness/gitness/internal/api/handler/webhook"
|
||||||
@ -63,7 +69,8 @@ type APIHandler interface {
|
|||||||
|
|
||||||
var (
|
var (
|
||||||
// terminatedPathPrefixesAPI is the list of prefixes that will require resolving terminated paths.
|
// terminatedPathPrefixesAPI is the list of prefixes that will require resolving terminated paths.
|
||||||
terminatedPathPrefixesAPI = []string{"/v1/spaces/", "/v1/repos/", "/v1/pipelines/", "/v1/secrets/"}
|
terminatedPathPrefixesAPI = []string{"/v1/spaces/", "/v1/repos/", "/v1/pipelines/",
|
||||||
|
"/v1/secrets/", "/v1/connectors", "/v1/templates"}
|
||||||
)
|
)
|
||||||
|
|
||||||
// NewAPIHandler returns a new APIHandler.
|
// NewAPIHandler returns a new APIHandler.
|
||||||
@ -76,6 +83,9 @@ func NewAPIHandler(
|
|||||||
spaceCtrl *space.Controller,
|
spaceCtrl *space.Controller,
|
||||||
pipelineCtrl *pipeline.Controller,
|
pipelineCtrl *pipeline.Controller,
|
||||||
secretCtrl *secret.Controller,
|
secretCtrl *secret.Controller,
|
||||||
|
triggerCtrl *trigger.Controller,
|
||||||
|
connectorCtrl *connector.Controller,
|
||||||
|
templateCtrl *template.Controller,
|
||||||
pullreqCtrl *pullreq.Controller,
|
pullreqCtrl *pullreq.Controller,
|
||||||
webhookCtrl *webhook.Controller,
|
webhookCtrl *webhook.Controller,
|
||||||
githookCtrl *controllergithook.Controller,
|
githookCtrl *controllergithook.Controller,
|
||||||
@ -106,9 +116,9 @@ func NewAPIHandler(
|
|||||||
r.Use(middlewareauthn.Attempt(authenticator, authn.SourceRouterAPI))
|
r.Use(middlewareauthn.Attempt(authenticator, authn.SourceRouterAPI))
|
||||||
|
|
||||||
r.Route("/v1", func(r chi.Router) {
|
r.Route("/v1", func(r chi.Router) {
|
||||||
setupRoutesV1(r, repoCtrl, executionCtrl, logCtrl, pipelineCtrl,
|
setupRoutesV1(r, repoCtrl, executionCtrl, triggerCtrl, logCtrl, pipelineCtrl,
|
||||||
secretCtrl, spaceCtrl, pullreqCtrl, webhookCtrl, githookCtrl,
|
connectorCtrl, templateCtrl, secretCtrl, spaceCtrl, pullreqCtrl,
|
||||||
saCtrl, userCtrl, principalCtrl, checkCtrl, sysCtrl)
|
webhookCtrl, githookCtrl, saCtrl, userCtrl, principalCtrl, checkCtrl, sysCtrl)
|
||||||
})
|
})
|
||||||
|
|
||||||
// wrap router in terminatedPath encoder.
|
// wrap router in terminatedPath encoder.
|
||||||
@ -131,8 +141,11 @@ func corsHandler(config *types.Config) func(http.Handler) http.Handler {
|
|||||||
func setupRoutesV1(r chi.Router,
|
func setupRoutesV1(r chi.Router,
|
||||||
repoCtrl *repo.Controller,
|
repoCtrl *repo.Controller,
|
||||||
executionCtrl *execution.Controller,
|
executionCtrl *execution.Controller,
|
||||||
|
triggerCtrl *trigger.Controller,
|
||||||
logCtrl *logs.Controller,
|
logCtrl *logs.Controller,
|
||||||
pipelineCtrl *pipeline.Controller,
|
pipelineCtrl *pipeline.Controller,
|
||||||
|
connectorCtrl *connector.Controller,
|
||||||
|
templateCtrl *template.Controller,
|
||||||
secretCtrl *secret.Controller,
|
secretCtrl *secret.Controller,
|
||||||
spaceCtrl *space.Controller,
|
spaceCtrl *space.Controller,
|
||||||
pullreqCtrl *pullreq.Controller,
|
pullreqCtrl *pullreq.Controller,
|
||||||
@ -146,7 +159,9 @@ func setupRoutesV1(r chi.Router,
|
|||||||
) {
|
) {
|
||||||
setupSpaces(r, spaceCtrl)
|
setupSpaces(r, spaceCtrl)
|
||||||
setupRepos(r, repoCtrl, pullreqCtrl, webhookCtrl, checkCtrl)
|
setupRepos(r, repoCtrl, pullreqCtrl, webhookCtrl, checkCtrl)
|
||||||
setupPipelines(r, pipelineCtrl, executionCtrl, logCtrl)
|
setupPipelines(r, pipelineCtrl, executionCtrl, triggerCtrl, logCtrl)
|
||||||
|
setupConnectors(r, connectorCtrl)
|
||||||
|
setupTemplates(r, templateCtrl)
|
||||||
setupSecrets(r, secretCtrl)
|
setupSecrets(r, secretCtrl)
|
||||||
setupUser(r, userCtrl)
|
setupUser(r, userCtrl)
|
||||||
setupServiceAccounts(r, saCtrl)
|
setupServiceAccounts(r, saCtrl)
|
||||||
@ -299,6 +314,7 @@ func setupPipelines(
|
|||||||
r chi.Router,
|
r chi.Router,
|
||||||
pipelineCtrl *pipeline.Controller,
|
pipelineCtrl *pipeline.Controller,
|
||||||
executionCtrl *execution.Controller,
|
executionCtrl *execution.Controller,
|
||||||
|
triggerCtrl *trigger.Controller,
|
||||||
logCtrl *logs.Controller) {
|
logCtrl *logs.Controller) {
|
||||||
r.Route("/pipelines", func(r chi.Router) {
|
r.Route("/pipelines", func(r chi.Router) {
|
||||||
// Create takes path and parentId via body, not uri
|
// Create takes path and parentId via body, not uri
|
||||||
@ -307,7 +323,38 @@ func setupPipelines(
|
|||||||
r.Get("/", handlerpipeline.HandleFind(pipelineCtrl))
|
r.Get("/", handlerpipeline.HandleFind(pipelineCtrl))
|
||||||
r.Patch("/", handlerpipeline.HandleUpdate(pipelineCtrl))
|
r.Patch("/", handlerpipeline.HandleUpdate(pipelineCtrl))
|
||||||
r.Delete("/", handlerpipeline.HandleDelete(pipelineCtrl))
|
r.Delete("/", handlerpipeline.HandleDelete(pipelineCtrl))
|
||||||
setupExecutions(r, pipelineCtrl, executionCtrl, logCtrl)
|
setupExecutions(r, executionCtrl, logCtrl)
|
||||||
|
setupTriggers(r, triggerCtrl)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
func setupConnectors(
|
||||||
|
r chi.Router,
|
||||||
|
connectorCtrl *connector.Controller,
|
||||||
|
) {
|
||||||
|
r.Route("/connectors", func(r chi.Router) {
|
||||||
|
// Create takes path and parentId via body, not uri
|
||||||
|
r.Post("/", handlerconnector.HandleCreate(connectorCtrl))
|
||||||
|
r.Route(fmt.Sprintf("/{%s}", request.PathParamConnectorRef), func(r chi.Router) {
|
||||||
|
r.Get("/", handlerconnector.HandleFind(connectorCtrl))
|
||||||
|
r.Patch("/", handlerconnector.HandleUpdate(connectorCtrl))
|
||||||
|
r.Delete("/", handlerconnector.HandleDelete(connectorCtrl))
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
func setupTemplates(
|
||||||
|
r chi.Router,
|
||||||
|
templateCtrl *template.Controller,
|
||||||
|
) {
|
||||||
|
r.Route("/templates", func(r chi.Router) {
|
||||||
|
// Create takes path and parentId via body, not uri
|
||||||
|
r.Post("/", handlertemplate.HandleCreate(templateCtrl))
|
||||||
|
r.Route(fmt.Sprintf("/{%s}", request.PathParamTemplateRef), func(r chi.Router) {
|
||||||
|
r.Get("/", handlertemplate.HandleFind(templateCtrl))
|
||||||
|
r.Patch("/", handlertemplate.HandleUpdate(templateCtrl))
|
||||||
|
r.Delete("/", handlertemplate.HandleDelete(templateCtrl))
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -326,7 +373,6 @@ func setupSecrets(r chi.Router, secretCtrl *secret.Controller) {
|
|||||||
|
|
||||||
func setupExecutions(
|
func setupExecutions(
|
||||||
r chi.Router,
|
r chi.Router,
|
||||||
pipelineCtrl *pipeline.Controller,
|
|
||||||
executionCtrl *execution.Controller,
|
executionCtrl *execution.Controller,
|
||||||
logCtrl *logs.Controller,
|
logCtrl *logs.Controller,
|
||||||
) {
|
) {
|
||||||
@ -352,6 +398,21 @@ func setupExecutions(
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func setupTriggers(
|
||||||
|
r chi.Router,
|
||||||
|
triggerCtrl *trigger.Controller,
|
||||||
|
) {
|
||||||
|
r.Route("/triggers", func(r chi.Router) {
|
||||||
|
r.Get("/", handlertrigger.HandleList(triggerCtrl))
|
||||||
|
r.Post("/", handlertrigger.HandleCreate(triggerCtrl))
|
||||||
|
r.Route(fmt.Sprintf("/{%s}", request.PathParamTriggerRef), func(r chi.Router) {
|
||||||
|
r.Get("/", handlertrigger.HandleFind(triggerCtrl))
|
||||||
|
r.Patch("/", handlertrigger.HandleUpdate(triggerCtrl))
|
||||||
|
r.Delete("/", handlertrigger.HandleDelete(triggerCtrl))
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
func setupInternal(r chi.Router, githookCtrl *controllergithook.Controller) {
|
func setupInternal(r chi.Router, githookCtrl *controllergithook.Controller) {
|
||||||
r.Route("/internal", func(r chi.Router) {
|
r.Route("/internal", func(r chi.Router) {
|
||||||
SetupGitHooks(r, githookCtrl)
|
SetupGitHooks(r, githookCtrl)
|
||||||
|
@ -7,6 +7,7 @@ package router
|
|||||||
import (
|
import (
|
||||||
"github.com/harness/gitness/gitrpc"
|
"github.com/harness/gitness/gitrpc"
|
||||||
"github.com/harness/gitness/internal/api/controller/check"
|
"github.com/harness/gitness/internal/api/controller/check"
|
||||||
|
"github.com/harness/gitness/internal/api/controller/connector"
|
||||||
"github.com/harness/gitness/internal/api/controller/execution"
|
"github.com/harness/gitness/internal/api/controller/execution"
|
||||||
"github.com/harness/gitness/internal/api/controller/githook"
|
"github.com/harness/gitness/internal/api/controller/githook"
|
||||||
"github.com/harness/gitness/internal/api/controller/logs"
|
"github.com/harness/gitness/internal/api/controller/logs"
|
||||||
@ -18,6 +19,8 @@ import (
|
|||||||
"github.com/harness/gitness/internal/api/controller/serviceaccount"
|
"github.com/harness/gitness/internal/api/controller/serviceaccount"
|
||||||
"github.com/harness/gitness/internal/api/controller/space"
|
"github.com/harness/gitness/internal/api/controller/space"
|
||||||
"github.com/harness/gitness/internal/api/controller/system"
|
"github.com/harness/gitness/internal/api/controller/system"
|
||||||
|
"github.com/harness/gitness/internal/api/controller/template"
|
||||||
|
"github.com/harness/gitness/internal/api/controller/trigger"
|
||||||
"github.com/harness/gitness/internal/api/controller/user"
|
"github.com/harness/gitness/internal/api/controller/user"
|
||||||
"github.com/harness/gitness/internal/api/controller/webhook"
|
"github.com/harness/gitness/internal/api/controller/webhook"
|
||||||
"github.com/harness/gitness/internal/auth/authn"
|
"github.com/harness/gitness/internal/auth/authn"
|
||||||
@ -67,6 +70,9 @@ func ProvideAPIHandler(
|
|||||||
spaceCtrl *space.Controller,
|
spaceCtrl *space.Controller,
|
||||||
pipelineCtrl *pipeline.Controller,
|
pipelineCtrl *pipeline.Controller,
|
||||||
secretCtrl *secret.Controller,
|
secretCtrl *secret.Controller,
|
||||||
|
triggerCtrl *trigger.Controller,
|
||||||
|
connectorCtrl *connector.Controller,
|
||||||
|
templateCtrl *template.Controller,
|
||||||
pullreqCtrl *pullreq.Controller,
|
pullreqCtrl *pullreq.Controller,
|
||||||
webhookCtrl *webhook.Controller,
|
webhookCtrl *webhook.Controller,
|
||||||
githookCtrl *githook.Controller,
|
githookCtrl *githook.Controller,
|
||||||
@ -76,8 +82,9 @@ func ProvideAPIHandler(
|
|||||||
checkCtrl *check.Controller,
|
checkCtrl *check.Controller,
|
||||||
sysCtrl *system.Controller,
|
sysCtrl *system.Controller,
|
||||||
) APIHandler {
|
) APIHandler {
|
||||||
return NewAPIHandler(config, authenticator, repoCtrl, executionCtrl, logCtrl, spaceCtrl, pipelineCtrl, secretCtrl,
|
return NewAPIHandler(config, authenticator, repoCtrl, executionCtrl, logCtrl, spaceCtrl, pipelineCtrl,
|
||||||
pullreqCtrl, webhookCtrl, githookCtrl, saCtrl, userCtrl, principalCtrl, checkCtrl, sysCtrl)
|
secretCtrl, triggerCtrl, connectorCtrl, templateCtrl, pullreqCtrl, webhookCtrl, githookCtrl,
|
||||||
|
saCtrl, userCtrl, principalCtrl, checkCtrl, sysCtrl)
|
||||||
}
|
}
|
||||||
|
|
||||||
func ProvideWebHandler(config *types.Config) WebHandler {
|
func ProvideWebHandler(config *types.Config) WebHandler {
|
||||||
|
@ -40,6 +40,9 @@ var WireSet = wire.NewSet(
|
|||||||
ProvideWebhookExecutionStore,
|
ProvideWebhookExecutionStore,
|
||||||
ProvideCheckStore,
|
ProvideCheckStore,
|
||||||
ProvideReqCheckStore,
|
ProvideReqCheckStore,
|
||||||
|
ProvideConnectorStore,
|
||||||
|
ProvideTemplateStore,
|
||||||
|
ProvideTriggerStore,
|
||||||
)
|
)
|
||||||
|
|
||||||
// migrator is helper function to set up the database by performing automated
|
// migrator is helper function to set up the database by performing automated
|
||||||
@ -103,6 +106,21 @@ func ProvideSecretStore(db *sqlx.DB) store.SecretStore {
|
|||||||
return NewSecretStore(db)
|
return NewSecretStore(db)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ProvideConnectorStore provides a connector store.
|
||||||
|
func ProvideConnectorStore(db *sqlx.DB) store.ConnectorStore {
|
||||||
|
return NewConnectorStore(db)
|
||||||
|
}
|
||||||
|
|
||||||
|
// ProvideTemplateStore provides a template store.
|
||||||
|
func ProvideTemplateStore(db *sqlx.DB) store.TemplateStore {
|
||||||
|
return NewTemplateStore(db)
|
||||||
|
}
|
||||||
|
|
||||||
|
// ProvideTriggerStore provides a trigger store.
|
||||||
|
func ProvideTriggerStore(db *sqlx.DB) store.TriggerStore {
|
||||||
|
return NewTriggerStore(db)
|
||||||
|
}
|
||||||
|
|
||||||
// ProvideExecutionStore provides an execution store.
|
// ProvideExecutionStore provides an execution store.
|
||||||
func ProvideExecutionStore(db *sqlx.DB) store.ExecutionStore {
|
func ProvideExecutionStore(db *sqlx.DB) store.ExecutionStore {
|
||||||
return NewExecutionStore(db)
|
return NewExecutionStore(db)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user