From c50399fb1d885bc309c16c2fbfb1a37f17066df4 Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Thu, 20 Aug 2020 11:25:39 +0200 Subject: [PATCH] use micro errors on handlers --- pkg/service/v0/service.go | 53 +++++++++++++++++++------------------ pkg/service/v0/validator.go | 36 ++++++++++++------------- pkg/store/filesystem/io.go | 11 +++----- 3 files changed, 48 insertions(+), 52 deletions(-) diff --git a/pkg/service/v0/service.go b/pkg/service/v0/service.go index 4f4c4d2c7f..3ef35340f4 100644 --- a/pkg/service/v0/service.go +++ b/pkg/service/v0/service.go @@ -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) } diff --git a/pkg/service/v0/validator.go b/pkg/service/v0/validator.go index 71f426c617..f523d28d81 100644 --- a/pkg/service/v0/validator.go +++ b/pkg/service/v0/validator.go @@ -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 } diff --git a/pkg/store/filesystem/io.go b/pkg/store/filesystem/io.go index 6d0429c42c..ba5c610462 100644 --- a/pkg/store/filesystem/io.go +++ b/pkg/store/filesystem/io.go @@ -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