diff options
Diffstat (limited to 'octosentry/GitHubAPIError.swift')
| -rw-r--r-- | octosentry/GitHubAPIError.swift | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/octosentry/GitHubAPIError.swift b/octosentry/GitHubAPIError.swift new file mode 100644 index 0000000..7baf918 --- /dev/null +++ b/octosentry/GitHubAPIError.swift @@ -0,0 +1,41 @@ +// +// GitHubAPIError.swift +// octosentry +// + +import Foundation + +enum GitHubAPIError: Error, LocalizedError, Sendable { + case missingToken + case network(String) + case invalidResponse + case unauthorized + case forbidden + case notFound + case rateLimited + case httpError(status: Int) + case decodingFailed(String) + + var errorDescription: String? { + switch self { + case .missingToken: + "No GitHub token found in the GITHUB_TOKEN environment variable." + case .network(let message): + "Network error: \(message)" + case .invalidResponse: + "Received an unexpected response from GitHub." + case .unauthorized: + "GitHub rejected the token (401 Unauthorized)." + case .forbidden: + "Token lacks permission for this alert type (403 Forbidden)." + case .notFound: + "Repository or endpoint not found (404)." + case .rateLimited: + "GitHub API rate limit exceeded (429)." + case .httpError(let status): + "GitHub API returned HTTP \(status)." + case .decodingFailed(let message): + "Failed to parse GitHub API response: \(message)" + } + } +} |
