Skip to content

Commit

Permalink
fix(rpc/v2/envs): move into correct package and fixup validation asse…
Browse files Browse the repository at this point in the history
…rtions
  • Loading branch information
GeorgeMac committed Jan 24, 2025
1 parent f756210 commit f44b0f1
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 41 deletions.
41 changes: 7 additions & 34 deletions rpc/v2/environments/request.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package configuration
package environments

import (
"go.flipt.io/flipt/rpc/flipt"
Expand Down Expand Up @@ -28,6 +28,11 @@ func (r *ListResourcesRequest) Request() []flipt.Request {
return []flipt.Request{flipt.NewRequest(resourceFrom(r), flipt.ActionRead, flipt.WithNamespace(r.Namespace))}
}

// GetTypeUrl delegates to the underlying payloads GetTypeUrl method.
func (r *UpdateResourceRequest) GetTypeUrl() string {
return r.Payload.GetTypeUrl()
}

func (r *UpdateResourceRequest) Request() []flipt.Request {
return []flipt.Request{flipt.NewRequest(resourceFrom(r), flipt.ActionUpdate, flipt.WithNamespace(r.Namespace))}
}
Expand All @@ -36,40 +41,8 @@ func (r *DeleteResourceRequest) Request() []flipt.Request {
return []flipt.Request{flipt.NewRequest(resourceFrom(r), flipt.ActionDelete, flipt.WithNamespace(r.Namespace))}
}

func (r *ListEnvironmentsRequest) Request() []flipt.Request {
return []flipt.Request{flipt.NewRequest(flipt.ResourceEnvironment, flipt.ActionRead)}
}

func (r *GetCurrentEnvironmentRequest) Request() []flipt.Request {
return []flipt.Request{flipt.NewRequest(flipt.ResourceEnvironment, flipt.ActionRead)}
}

func (r *BranchEnvironmentRequest) Request() []flipt.Request {
return []flipt.Request{flipt.NewRequest(flipt.ResourceEnvironment, flipt.ActionRead)}
}

func (r *ListEnvironmentBranchesRequest) Request() []flipt.Request {
return []flipt.Request{flipt.NewRequest(flipt.ResourceEnvironment, flipt.ActionRead)}
}

func (r *ProposeEvironmentRequest) Request() []flipt.Request {
return []flipt.Request{flipt.NewRequest(flipt.ResourceEnvironment, flipt.ActionRead)}
}

func (r *ListEnvironmentChangesRequest) Request() []flipt.Request {
return []flipt.Request{flipt.NewRequest(flipt.ResourceEnvironment, flipt.ActionRead)}
}

func (r *ListCurrentEnvironmentChangesRequest) Request() []flipt.Request {
return []flipt.Request{flipt.NewRequest(flipt.ResourceEnvironment, flipt.ActionRead)}
}

func (r *NotifySourceRequest) Request() []flipt.Request {
return []flipt.Request{}
}

func resourceFrom(t typed) flipt.Resource {
switch t.GetType() {
switch t.GetTypeUrl() {
case "flipt.core.Flag":
return flipt.ResourceFlag
case "flipt.core.Segment":
Expand Down
35 changes: 28 additions & 7 deletions rpc/v2/environments/validation.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package configuration
package environments

import "go.flipt.io/flipt/errors"

Expand All @@ -19,7 +19,11 @@ func (r *GetResourceRequest) Validate() error {
}

func (r *ListResourcesRequest) Validate() error {
return requireType(r)
if err := requireType(r); err != nil {
return err
}

return requireNamespace(r)
}

func (r *UpdateResourceRequest) Validate() error {
Expand All @@ -31,6 +35,10 @@ func (r *DeleteResourceRequest) Validate() error {
}

func requireKey(k keyed) error {
if k.GetEnvironment() == "" {
return errors.ErrInvalid("environment must not be empty")
}

if k.GetKey() == "" {
return errors.ErrInvalid("key must not be empty")
}
Expand All @@ -39,33 +47,46 @@ func requireKey(k keyed) error {
}

func requireType(r typed) error {
if r.GetNamespace() == "" {
return errors.ErrInvalid("namespace must not be empty")
if r.GetTypeUrl() == "" {
return errors.ErrInvalid("type must not be empty")
}

if r.GetType() == "" {
return errors.ErrInvalid("type must not be empty")
return nil
}

func requireNamespace(r namespaced) error {
if r.GetNamespace() == "" {
return errors.ErrInvalid("namespace must not be empty")
}

return nil
}

func requireResource(r interface {
keyed
namespaced
typed
}) error {
if err := requireType(r); err != nil {
return err
}

if err := requireNamespace(r); err != nil {
return err
}

return requireKey(r)
}

type keyed interface {
GetEnvironment() string
GetKey() string
}

type typed interface {
GetType() string
GetTypeUrl() string
}

type namespaced interface {
GetNamespace() string
}

0 comments on commit f44b0f1

Please sign in to comment.