mirror of
https://github.com/opencloud-eu/opencloud.git
synced 2026-05-25 06:29:15 -05:00
use micro errors on handlers
This commit is contained in:
+27
-26
@@ -4,6 +4,7 @@ import (
|
||||
"context"
|
||||
|
||||
"github.com/golang/protobuf/ptypes/empty"
|
||||
merrors "github.com/micro/go-micro/v2/errors"
|
||||
"github.com/owncloud/ocis-pkg/v2/log"
|
||||
"github.com/owncloud/ocis-pkg/v2/middleware"
|
||||
"github.com/owncloud/ocis-settings/pkg/config"
|
||||
@@ -51,11 +52,11 @@ func NewService(cfg *config.Config, logger log.Logger) Service {
|
||||
func (g Service) SaveBundle(c context.Context, req *proto.SaveBundleRequest, res *proto.SaveBundleResponse) error {
|
||||
cleanUpResource(c, req.Bundle.Resource)
|
||||
if validationError := validateSaveBundle(req); validationError != nil {
|
||||
return validationError
|
||||
return merrors.FromError(validationError)
|
||||
}
|
||||
r, err := g.manager.WriteBundle(req.Bundle)
|
||||
if err != nil {
|
||||
return err
|
||||
return merrors.FromError(err)
|
||||
}
|
||||
res.Bundle = r
|
||||
return nil
|
||||
@@ -64,11 +65,11 @@ func (g Service) SaveBundle(c context.Context, req *proto.SaveBundleRequest, res
|
||||
// GetBundle implements the BundleServiceHandler interface
|
||||
func (g Service) GetBundle(c context.Context, req *proto.GetBundleRequest, res *proto.GetBundleResponse) error {
|
||||
if validationError := validateGetBundle(req); validationError != nil {
|
||||
return validationError
|
||||
return merrors.FromError(validationError)
|
||||
}
|
||||
r, err := g.manager.ReadBundle(req.BundleId)
|
||||
if err != nil {
|
||||
return err
|
||||
return merrors.FromError(err)
|
||||
}
|
||||
res.Bundle = r
|
||||
return nil
|
||||
@@ -79,11 +80,11 @@ func (g Service) ListBundles(c context.Context, req *proto.ListBundlesRequest, r
|
||||
// fetch all bundles
|
||||
req.AccountUuid = getValidatedAccountUUID(c, req.AccountUuid)
|
||||
if validationError := validateListBundles(req); validationError != nil {
|
||||
return validationError
|
||||
return merrors.FromError(validationError)
|
||||
}
|
||||
bundles, err := g.manager.ListBundles(proto.Bundle_TYPE_DEFAULT)
|
||||
if err != nil {
|
||||
return err
|
||||
return merrors.FromError(err)
|
||||
}
|
||||
res.Bundles = bundles
|
||||
return nil
|
||||
@@ -93,11 +94,11 @@ func (g Service) ListBundles(c context.Context, req *proto.ListBundlesRequest, r
|
||||
func (g Service) AddSettingToBundle(c context.Context, req *proto.AddSettingToBundleRequest, res *proto.AddSettingToBundleResponse) error {
|
||||
cleanUpResource(c, req.Setting.Resource)
|
||||
if validationError := validateAddSettingToBundle(req); validationError != nil {
|
||||
return validationError
|
||||
return merrors.FromError(validationError)
|
||||
}
|
||||
r, err := g.manager.AddSettingToBundle(req.BundleId, req.Setting)
|
||||
if err != nil {
|
||||
return err
|
||||
return merrors.FromError(err)
|
||||
}
|
||||
res.Setting = r
|
||||
return nil
|
||||
@@ -106,7 +107,7 @@ func (g Service) AddSettingToBundle(c context.Context, req *proto.AddSettingToBu
|
||||
// RemoveSettingFromBundle implements the BundleServiceHandler interface
|
||||
func (g Service) RemoveSettingFromBundle(c context.Context, req *proto.RemoveSettingFromBundleRequest, _ *empty.Empty) error {
|
||||
if validationError := validateRemoveSettingFromBundle(req); validationError != nil {
|
||||
return validationError
|
||||
return merrors.FromError(validationError)
|
||||
}
|
||||
return g.manager.RemoveSettingFromBundle(req.BundleId, req.SettingId)
|
||||
}
|
||||
@@ -117,15 +118,15 @@ func (g Service) SaveValue(c context.Context, req *proto.SaveValueRequest, res *
|
||||
cleanUpResource(c, req.Value.Resource)
|
||||
// TODO: we need to check, if the authenticated user has permission to write the value for the specified resource (e.g. global, file with id xy, ...)
|
||||
if validationError := validateSaveValue(req); validationError != nil {
|
||||
return validationError
|
||||
return merrors.FromError(validationError)
|
||||
}
|
||||
r, err := g.manager.WriteValue(req.Value)
|
||||
if err != nil {
|
||||
return err
|
||||
return merrors.FromError(err)
|
||||
}
|
||||
valueWithIdentifier, err := g.getValueWithIdentifier(r)
|
||||
if err != nil {
|
||||
return err
|
||||
return merrors.FromError(err)
|
||||
}
|
||||
res.Value = valueWithIdentifier
|
||||
return nil
|
||||
@@ -134,15 +135,15 @@ func (g Service) SaveValue(c context.Context, req *proto.SaveValueRequest, res *
|
||||
// GetValue implements the ValueServiceHandler interface
|
||||
func (g Service) GetValue(c context.Context, req *proto.GetValueRequest, res *proto.GetValueResponse) error {
|
||||
if validationError := validateGetValue(req); validationError != nil {
|
||||
return validationError
|
||||
return merrors.FromError(validationError)
|
||||
}
|
||||
r, err := g.manager.ReadValue(req.Id)
|
||||
if err != nil {
|
||||
return err
|
||||
return merrors.FromError(err)
|
||||
}
|
||||
valueWithIdentifier, err := g.getValueWithIdentifier(r)
|
||||
if err != nil {
|
||||
return err
|
||||
return merrors.FromError(err)
|
||||
}
|
||||
res.Value = valueWithIdentifier
|
||||
return nil
|
||||
@@ -152,13 +153,13 @@ func (g Service) GetValue(c context.Context, req *proto.GetValueRequest, res *pr
|
||||
func (g Service) GetValueByUniqueIdentifiers(ctx context.Context, in *proto.GetValueByUniqueIdentifiersRequest, res *proto.GetValueResponse) error {
|
||||
v, err := g.manager.ReadValueByUniqueIdentifiers(in.AccountUuid, in.SettingId)
|
||||
if err != nil {
|
||||
return err
|
||||
return merrors.FromError(err)
|
||||
}
|
||||
|
||||
if v.BundleId != "" {
|
||||
valueWithIdentifier, err := g.getValueWithIdentifier(v)
|
||||
if err != nil {
|
||||
return err
|
||||
return merrors.FromError(err)
|
||||
}
|
||||
|
||||
res.Value = valueWithIdentifier
|
||||
@@ -170,11 +171,11 @@ func (g Service) GetValueByUniqueIdentifiers(ctx context.Context, in *proto.GetV
|
||||
func (g Service) ListValues(c context.Context, req *proto.ListValuesRequest, res *proto.ListValuesResponse) error {
|
||||
req.AccountUuid = getValidatedAccountUUID(c, req.AccountUuid)
|
||||
if validationError := validateListValues(req); validationError != nil {
|
||||
return validationError
|
||||
return merrors.FromError(validationError)
|
||||
}
|
||||
r, err := g.manager.ListValues(req.BundleId, req.AccountUuid)
|
||||
if err != nil {
|
||||
return err
|
||||
return merrors.FromError(err)
|
||||
}
|
||||
var result []*proto.ValueWithIdentifier
|
||||
for _, value := range r {
|
||||
@@ -210,11 +211,11 @@ func (g Service) getValueWithIdentifier(value *proto.Value) (*proto.ValueWithIde
|
||||
func (g Service) ListRoles(c context.Context, req *proto.ListBundlesRequest, res *proto.ListBundlesResponse) error {
|
||||
req.AccountUuid = getValidatedAccountUUID(c, req.AccountUuid)
|
||||
if validationError := validateListRoles(req); validationError != nil {
|
||||
return validationError
|
||||
return merrors.FromError(validationError)
|
||||
}
|
||||
r, err := g.manager.ListBundles(proto.Bundle_TYPE_ROLE)
|
||||
if err != nil {
|
||||
return err
|
||||
return merrors.FromError(err)
|
||||
}
|
||||
res.Bundles = r
|
||||
return nil
|
||||
@@ -224,11 +225,11 @@ func (g Service) ListRoles(c context.Context, req *proto.ListBundlesRequest, res
|
||||
func (g Service) ListRoleAssignments(c context.Context, req *proto.ListRoleAssignmentsRequest, res *proto.ListRoleAssignmentsResponse) error {
|
||||
req.AccountUuid = getValidatedAccountUUID(c, req.AccountUuid)
|
||||
if validationError := validateListRoleAssignments(req); validationError != nil {
|
||||
return validationError
|
||||
return merrors.FromError(validationError)
|
||||
}
|
||||
r, err := g.manager.ListRoleAssignments(req.AccountUuid)
|
||||
if err != nil {
|
||||
return err
|
||||
return merrors.FromError(err)
|
||||
}
|
||||
res.Assignments = r
|
||||
return nil
|
||||
@@ -238,11 +239,11 @@ func (g Service) ListRoleAssignments(c context.Context, req *proto.ListRoleAssig
|
||||
func (g Service) AssignRoleToUser(c context.Context, req *proto.AssignRoleToUserRequest, res *proto.AssignRoleToUserResponse) error {
|
||||
req.AccountUuid = getValidatedAccountUUID(c, req.AccountUuid)
|
||||
if validationError := validateAssignRoleToUser(req); validationError != nil {
|
||||
return validationError
|
||||
return merrors.FromError(validationError)
|
||||
}
|
||||
r, err := g.manager.WriteRoleAssignment(req.AccountUuid, req.RoleId)
|
||||
if err != nil {
|
||||
return err
|
||||
return merrors.FromError(err)
|
||||
}
|
||||
res.Assignment = r
|
||||
return nil
|
||||
@@ -251,7 +252,7 @@ func (g Service) AssignRoleToUser(c context.Context, req *proto.AssignRoleToUser
|
||||
// RemoveRoleFromUser implements the RoleServiceHandler interface
|
||||
func (g Service) RemoveRoleFromUser(c context.Context, req *proto.RemoveRoleFromUserRequest, _ *empty.Empty) error {
|
||||
if validationError := validateRemoveRoleFromUser(req); validationError != nil {
|
||||
return validationError
|
||||
return merrors.FromError(validationError)
|
||||
}
|
||||
return g.manager.RemoveRoleAssignment(req.Id)
|
||||
}
|
||||
|
||||
+18
-18
@@ -33,14 +33,14 @@ func validateSaveBundle(req *proto.SaveBundleRequest) error {
|
||||
validation.Field(&req.Bundle.DisplayName, validation.Required),
|
||||
validation.Field(&req.Bundle.Settings, validation.Required),
|
||||
); err != nil {
|
||||
return merrors.FromError(err)
|
||||
return err
|
||||
}
|
||||
if err := validateResource(req.Bundle.Resource); err != nil {
|
||||
return merrors.FromError(err)
|
||||
return err
|
||||
}
|
||||
for i := range req.Bundle.Settings {
|
||||
if err := validateSetting(req.Bundle.Settings[i]); err != nil {
|
||||
return merrors.FromError(err)
|
||||
return err
|
||||
}
|
||||
}
|
||||
return nil
|
||||
@@ -48,21 +48,21 @@ func validateSaveBundle(req *proto.SaveBundleRequest) error {
|
||||
|
||||
func validateGetBundle(req *proto.GetBundleRequest) error {
|
||||
if err := validation.Validate(&req.BundleId, requireAccountID...); err != nil {
|
||||
return merrors.FromError(err)
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func validateListBundles(req *proto.ListBundlesRequest) error {
|
||||
if err := validation.Validate(&req.AccountUuid, requireAccountID...); err != nil {
|
||||
return merrors.FromError(err)
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func validateAddSettingToBundle(req *proto.AddSettingToBundleRequest) error {
|
||||
if err := validation.ValidateStruct(req, validation.Field(&req.BundleId, is.UUID)); err != nil {
|
||||
return merrors.FromError(err)
|
||||
return err
|
||||
}
|
||||
return validateSetting(req.Setting)
|
||||
}
|
||||
@@ -73,7 +73,7 @@ func validateRemoveSettingFromBundle(req *proto.RemoveSettingFromBundleRequest)
|
||||
validation.Field(&req.BundleId, is.UUID),
|
||||
validation.Field(&req.SettingId, is.UUID),
|
||||
); err != nil {
|
||||
return merrors.FromError(err)
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
@@ -86,11 +86,11 @@ func validateSaveValue(req *proto.SaveValueRequest) error {
|
||||
validation.Field(&req.Value.SettingId, is.UUID),
|
||||
validation.Field(&req.Value.AccountUuid, requireAccountID...),
|
||||
); err != nil {
|
||||
return merrors.FromError(err)
|
||||
return err
|
||||
}
|
||||
|
||||
if err := validateResource(req.Value.Resource); err != nil {
|
||||
return merrors.FromError(err)
|
||||
return err
|
||||
}
|
||||
|
||||
// TODO: validate values against the respective setting. need to check if constraints of the setting are fulfilled.
|
||||
@@ -99,7 +99,7 @@ func validateSaveValue(req *proto.SaveValueRequest) error {
|
||||
|
||||
func validateGetValue(req *proto.GetValueRequest) error {
|
||||
if err := validation.Validate(req.Id, is.UUID); err != nil {
|
||||
return merrors.FromError(err)
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
@@ -110,21 +110,21 @@ func validateListValues(req *proto.ListValuesRequest) error {
|
||||
validation.Field(&req.BundleId, validation.When(req.BundleId != "", is.UUID)),
|
||||
validation.Field(&req.AccountUuid, validation.When(req.AccountUuid != "", validation.Match(regexForAccountUUID))),
|
||||
); err != nil {
|
||||
return merrors.FromError(err)
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func validateListRoles(req *proto.ListBundlesRequest) error {
|
||||
if err := validation.Validate(&req.AccountUuid, requireAccountID...); err != nil {
|
||||
return merrors.FromError(err)
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func validateListRoleAssignments(req *proto.ListRoleAssignmentsRequest) error {
|
||||
if err := validation.Validate(req.AccountUuid, requireAccountID...); err != nil {
|
||||
return merrors.FromError(err)
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
@@ -135,7 +135,7 @@ func validateAssignRoleToUser(req *proto.AssignRoleToUserRequest) error {
|
||||
validation.Field(&req.AccountUuid, requireAccountID...),
|
||||
validation.Field(&req.RoleId, is.UUID),
|
||||
); err != nil {
|
||||
return merrors.FromError(err)
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
@@ -145,7 +145,7 @@ func validateRemoveRoleFromUser(req *proto.RemoveRoleFromUserRequest) error {
|
||||
req,
|
||||
validation.Field(&req.Id, is.UUID),
|
||||
); err != nil {
|
||||
return merrors.FromError(err)
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
@@ -156,7 +156,7 @@ func validateResource(resource *proto.Resource) error {
|
||||
return merrors.FromError(err)
|
||||
}
|
||||
if err := validation.Validate(&resource, validation.NotIn(proto.Resource_TYPE_UNKNOWN)); err != nil {
|
||||
return merrors.FromError(err)
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
@@ -169,10 +169,10 @@ func validateSetting(setting *proto.Setting) error {
|
||||
validation.Field(&setting.Id, validation.When(setting.Id != "", is.UUID)),
|
||||
validation.Field(&setting.Name, requireAlphanumeric...),
|
||||
); err != nil {
|
||||
return merrors.FromError(err)
|
||||
return err
|
||||
}
|
||||
if err := validateResource(setting.Resource); err != nil {
|
||||
return merrors.FromError(err)
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -5,21 +5,18 @@ import (
|
||||
|
||||
"github.com/golang/protobuf/jsonpb"
|
||||
"github.com/golang/protobuf/proto"
|
||||
merrors "github.com/micro/go-micro/v2/errors"
|
||||
)
|
||||
|
||||
// Unmarshal file into record
|
||||
func (s Store) parseRecordFromFile(record proto.Message, filePath string) error {
|
||||
file, err := os.Open(filePath)
|
||||
if err != nil {
|
||||
s.Logger.Err(err).Msgf("error reading file %v: file not found", filePath)
|
||||
return merrors.FromError(err)
|
||||
return err
|
||||
}
|
||||
defer file.Close()
|
||||
|
||||
decoder := jsonpb.Unmarshaler{}
|
||||
if err = decoder.Unmarshal(file, record); err != nil {
|
||||
s.Logger.Err(err).Msgf("error reading file %v: unmarshalling failed", filePath)
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
@@ -29,15 +26,13 @@ func (s Store) parseRecordFromFile(record proto.Message, filePath string) error
|
||||
func (s Store) writeRecordToFile(record proto.Message, filePath string) error {
|
||||
file, err := os.Create(filePath)
|
||||
if err != nil {
|
||||
s.Logger.Err(err).Msgf("error writing file %v: opening failed", filePath)
|
||||
return merrors.FromError(err)
|
||||
return err
|
||||
}
|
||||
defer file.Close()
|
||||
|
||||
encoder := jsonpb.Marshaler{}
|
||||
if err = encoder.Marshal(file, record); err != nil {
|
||||
s.Logger.Err(err).Msgf("error writing file %v: marshalling failed", filePath)
|
||||
return merrors.FromError(err)
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
|
||||
Reference in New Issue
Block a user