generated from VLADIMIR/template
fix
This commit is contained in:
@@ -7,9 +7,7 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"evening_detective_server/internal/modules/roles"
|
"evening_detective_server/internal/modules/roles"
|
||||||
"evening_detective_server/internal/modules/scenario_archive"
|
|
||||||
"evening_detective_server/internal/modules/string_tools"
|
"evening_detective_server/internal/modules/string_tools"
|
||||||
"evening_detective_server/internal/repos/scenarios_repo"
|
|
||||||
"evening_detective_server/internal/services/scenarios_service"
|
"evening_detective_server/internal/services/scenarios_service"
|
||||||
proto "evening_detective_server/proto"
|
proto "evening_detective_server/proto"
|
||||||
|
|
||||||
@@ -37,7 +35,7 @@ func (s *server) DownloadScenarioArchive(ctx context.Context, req *proto.Downloa
|
|||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
switch {
|
switch {
|
||||||
case errors.Is(err, scenarios_repo.ErrScenarioNotFound):
|
case errors.Is(err, scenarios_service.ErrScenarioNotFound):
|
||||||
return nil, status.Errorf(codes.NotFound, "%v", err)
|
return nil, status.Errorf(codes.NotFound, "%v", err)
|
||||||
case errors.Is(err, scenarios_service.ErrScenarioNotOwner):
|
case errors.Is(err, scenarios_service.ErrScenarioNotOwner):
|
||||||
return nil, status.Errorf(codes.PermissionDenied, "%v", err)
|
return nil, status.Errorf(codes.PermissionDenied, "%v", err)
|
||||||
@@ -74,8 +72,8 @@ func (s *server) UploadScenarioArchive(ctx context.Context, req *httpbody.HttpBo
|
|||||||
if req == nil || len(req.Data) == 0 {
|
if req == nil || len(req.Data) == 0 {
|
||||||
return nil, status.Errorf(codes.InvalidArgument, "пустое тело запроса")
|
return nil, status.Errorf(codes.InvalidArgument, "пустое тело запроса")
|
||||||
}
|
}
|
||||||
if len(req.Data) > scenario_archive.MaxArchiveSize() {
|
if len(req.Data) > scenarios_service.MaxArchiveSize() {
|
||||||
return nil, status.Errorf(codes.InvalidArgument, "архив больше максимального размера (%d байт)", scenario_archive.MaxArchiveSize())
|
return nil, status.Errorf(codes.InvalidArgument, "архив больше максимального размера (%d байт)", scenarios_service.MaxArchiveSize())
|
||||||
}
|
}
|
||||||
|
|
||||||
id, err := s.scenarioService.UploadArchive(ctx, req.Data, claims.UserID)
|
id, err := s.scenarioService.UploadArchive(ctx, req.Data, claims.UserID)
|
||||||
|
|||||||
@@ -131,6 +131,14 @@ var ErrScenarioPublished = errors.New("Опубликованный сценар
|
|||||||
// ErrScenarioNotOwner — сценарий принадлежит другому пользователю.
|
// ErrScenarioNotOwner — сценарий принадлежит другому пользователю.
|
||||||
var ErrScenarioNotOwner = errors.New("Сценарий принадлежит другому пользователю")
|
var ErrScenarioNotOwner = errors.New("Сценарий принадлежит другому пользователю")
|
||||||
|
|
||||||
|
// ErrScenarioNotFound — сценарий не найден или уже удалён.
|
||||||
|
var ErrScenarioNotFound = errors.New("Сценарий не найден")
|
||||||
|
|
||||||
|
// MaxArchiveSize возвращает максимальный размер загружаемого архива.
|
||||||
|
func MaxArchiveSize() int {
|
||||||
|
return scenario_archive.MaxArchiveSize()
|
||||||
|
}
|
||||||
|
|
||||||
// getScenarioForChange проверяет права актора на изменение сценария:
|
// getScenarioForChange проверяет права актора на изменение сценария:
|
||||||
// не-админ должен быть автором сценария, сценарий не должен быть удалён.
|
// не-админ должен быть автором сценария, сценарий не должен быть удалён.
|
||||||
// Возвращает сценарий, чтобы вызывающий код не делал повторное чтение.
|
// Возвращает сценарий, чтобы вызывающий код не делал повторное чтение.
|
||||||
@@ -409,6 +417,9 @@ func (s *ScenarioService) DownloadArchive(
|
|||||||
) ([]byte, string, error) {
|
) ([]byte, string, error) {
|
||||||
scenario, err := s.getScenarioForChange(ctx, id, actorID, isAdmin)
|
scenario, err := s.getScenarioForChange(ctx, id, actorID, isAdmin)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
if errors.Is(err, scenarios_repo.ErrScenarioNotFound) {
|
||||||
|
return nil, "", ErrScenarioNotFound
|
||||||
|
}
|
||||||
return nil, "", err
|
return nil, "", err
|
||||||
}
|
}
|
||||||
data, err := s.scenarioArchive.Pack(
|
data, err := s.scenarioArchive.Pack(
|
||||||
|
|||||||
@@ -649,7 +649,7 @@ func TestDownloadArchiveNotFound(t *testing.T) {
|
|||||||
storage := newFakeStorage()
|
storage := newFakeStorage()
|
||||||
svc := newTestService(repo, storage)
|
svc := newTestService(repo, storage)
|
||||||
|
|
||||||
if _, _, err := svc.DownloadArchive(context.Background(), 404, 1, true); !errors.Is(err, scenarios_repo.ErrScenarioNotFound) {
|
if _, _, err := svc.DownloadArchive(context.Background(), 404, 1, true); !errors.Is(err, ErrScenarioNotFound) {
|
||||||
t.Errorf("err = %v, want ErrScenarioNotFound", err)
|
t.Errorf("err = %v, want ErrScenarioNotFound", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user