【Swift】TwitterAPIのエラー構造体を作った

# はじめに
TwitterAPIを使ったアプリを作った時にエラー構造体を作ったので共有します。
返ってくる可能性のあるエラーは全て記載してあると思います。

# 実装
```swift
import Foundation

// MARK: - TwitterError
struct TwitterError: Codable {
    let errors: [Errors]
}

// MARK: - Error
struct Errors: Codable {
    let message: String
    let code: ErrorCode
}

enum ErrorCode: Int, Error, LocalizedError, Codable {
    case code000 = 0
    case code003 = 3
    case code013 = 13
    case code017 = 17
    case code032 = 32
    case code034 = 34
    case code036 = 36
    case code038 = 38
    case code044 = 44
    case code050 = 50
    case code063 = 63
    case code064 = 64
    case code068 = 68
    case code087 = 87
    case code088 = 88
    case code089 = 89
    case code092 = 92
    case code093 = 93
    case code099 = 99
    case code104 = 104
    case code120 = 120
    case code130 = 130
    case code131 = 131
    case code135 = 135
    case code139 = 139
    case code144 = 144
    case code150 = 150
    case code151 = 151
    case code160 = 160
    case code161 = 161
    case code179 = 179
    case code185 = 185
    case code186 = 186
    case code187 = 187
    case code193 = 193
    case code195 = 195
    case code205 = 205
    case code214 = 214
    case code215 = 215
    case code220 = 220
    case code226 = 226
    case code231 = 231
    case code251 = 251
    case code261 = 261
    case code271 = 271
    case code272 = 272
    case code323 = 323
    case code324 = 324
    case code325 = 325
    case code326 = 326
    case code327 = 327
    case code349 = 349
    case code354 = 354
    case code355 = 355
    case code385 = 385
    case code386 = 386
    case code407 = 407
    case code415 = 415
    case code416 = 416
    case code417 = 417

    var errorDescription: String? {
        switch self {
        case .code000:
            return "内部エラーが発生しました"
        case .code003:
            return "座標が無効です"
        case .code013:
            return "指定されたIPアドレスに関連する場所がありません"
        case .code017:
            return "指定された条件に一致するユーザーがいません"
        case .code032:
            return "認証データに問題があります"
        case .code034:
            return "申し訳ございませんが、そのページは存在しません"
        case .code036:
            return "スパムとして自分を報告することはできません"
        case .code038:
            return "パラメータが正しくありません"
        case .code044:
            return "ツイートに添付できるURLではありません"
        case .code050:
            return "ユーザーが見つかりません"
        case .code063:
            return "凍結したユーザーです"
        case .code064:
            return "本アカウントは凍結しています"
        case .code068:
            return "Twitter API v1 は終了しました"
        case .code087:
            return "許可されていない操作です"
        case .code088:
            return "レート制限を超えました"
        case .code089:
            return "ログインの有効期限が切れました"
        case .code092:
            return "SSL接続のみ許可されます"
        case .code093:
            return "DMへのアクセスはできません"
        case .code099:
            return "認証情報を確認することができませんでした"
        case .code104:
            return "このリストからメンバーを削除することは許可されていません"
        case .code120:
            return "アカウントの更新に失敗しました"
        case .code130:
            return "Twitterは一時的に容量オーバーになっています"
        case .code131:
            return "Twitterの内部でエラーが発生しました"
        case .code135:
            return "認証できませんでした"
        case .code139:
            return "既にお気に入りに登録されています"
        case .code144:
            return "お探しのツイートは見つかりませんでした"
        case .code150:
            return "メッセージを送信できません"
        case .code151:
            return "メッセージの送信中にエラーが発生しました"
        case .code160:
            return "フォローリクエストは送信済みです"
        case .code161:
            return "フォロー上限を超えました"
        case .code179:
            return "閲覧制限されたツイートです"
        case .code185:
            return "1日のツイート上限を超えました"
        case .code186:
            return "ツイートが長すぎます"
        case .code187:
            return "ツイート内容が重複しています"
        case .code193:
            return "メディアのサイズが大きすぎます"
        case .code195:
            return "パラメータが正しくありません"
        case .code205:
            return "スパム報告の上限を超えました"
        case .code214:
            return "DMの制限を解除してください"
        case .code215:
            return "不正な認証データです"
        case .code220:
            return "アクセスが許可されていません"
        case .code226:
            return "自動化されている可能性があります"
        case .code231:
            return "ログインする必要があります"
        case .code251:
            return "このAPIは廃止しました"
        case .code261:
            return "書き込み操作を行うことができません"
        case .code271:
            return "自身をミュートすることはできません"
        case .code272:
            return "指定されたユーザーをミュートしていません"
        case .code323:
            return "複数の画像をアップロードする場合、アニメーションGIFは使用できません"
        case .code324:
            return "メディアIDの検証に失敗しました"
        case .code325:
            return "メディアIDが見つかりませんでした"
        case .code326:
            return "このアカウントは一時的にロックされています"
        case .code327:
            return "既にリツイートされています"
        case .code349:
            return "このユーザーにメッセージを送信できません"
        case .code354:
            return "ダイレクトメッセージのテキストが最大文字数制限を超えています"
        case .code355:
            return "サブスクリプションはすでに存在しています"
        case .code385:
            return "削除されたツイートです"
        case .code386:
            return "ツイートが許容される添付ファイルの種類を越えています"
        case .code407:
            return "指定されたURLは無効です"
        case .code415:
            return "コールバックURLは承認されていません"
        case .code416:
            return "このアプリケーションは無効です"
        case .code417:
            return "デスクトップアプリケーションは、oauth_callbackの値「oob」のみをサポートしています"
        }
    }
}
```

# おわり
エラー詳細の日本語は間違ってるのあるかも笑