errors.go RawHistoryFolder
1// SPDX-License-Identifier: AGPL-3.0-or-later
2
3package domain
4
5import "errors"
6
7// Sentinel errors of the domain. Callers match them with errors.Is.
8var (
9 // ErrNotFound means the entity does not exist or is hidden from the caller.
10 ErrNotFound = errors.New("not found")
11 // ErrInvalidName means a repository name breaks the naming rules.
12 ErrInvalidName = errors.New("invalid repository name")
13 // ErrInvalidVisibility means a visibility value is neither public nor private.
14 ErrInvalidVisibility = errors.New("invalid visibility")
15 // ErrInvalidScope means a scope is not one of the known scopes.
16 ErrInvalidScope = errors.New("invalid scope")
17 // ErrInvalidToken means the settings of a token are not acceptable.
18 ErrInvalidToken = errors.New("invalid token")
19 // ErrAlreadyExists means the entity to create already exists.
20 ErrAlreadyExists = errors.New("already exists")
21 // ErrUnauthenticated means the operation needs credentials the caller lacks.
22 ErrUnauthenticated = errors.New("unauthenticated")
23 // ErrForbidden means the caller is known but may not do this.
24 ErrForbidden = errors.New("forbidden")
25 // ErrRejected means a push was refused by policy.
26 ErrRejected = errors.New("rejected")
27 // ErrConflict means a concurrent change prevented the operation.
28 ErrConflict = errors.New("conflict")
29 // ErrInvalid means an argument of a use case is not acceptable and no
30 // more specific error says why: an empty update, an unknown topic, a
31 // description that breaks the rules.
32 ErrInvalid = errors.New("invalid argument")
33 // ErrPreconditionFailed means the state of the forge does not allow the
34 // operation, for example a default branch that does not exist.
35 ErrPreconditionFailed = errors.New("failed precondition")
36 // ErrResourceExhausted means a limit of the server is reached, for example
37 // the number of event watchers; the caller may retry later.
38 ErrResourceExhausted = errors.New("resource exhausted")
39)
40
41// invalidErrors are the errors that mean a request was malformed.
42var invalidErrors = []error{
43 ErrInvalid, ErrInvalidName, ErrInvalidVisibility,
44 ErrInvalidScope, ErrInvalidToken,
45 ErrInvalidObjectID, ErrInvalidRevision, ErrInvalidPath,
46 ErrInvalidPageToken, ErrInvalidPageSize, ErrInvalidRefKind,
47 ErrNotDirectory, ErrNotFile, ErrInvalidText,
48}
49
50// IsInvalid reports whether err means that the request was malformed: an
51// invalid name, revision, path, page token, text, and the like. The adapters
52// answer all of them alike (invalid_argument on the API, the 404 page on the
53// web).
54func IsInvalid(err error) bool {
55 for _, invalid := range invalidErrors {
56 if errors.Is(err, invalid) {
57 return true
58 }
59 }
60 return false
61}