はじめに
TwitterAPIを使ったアプリを作った時にエラー構造体を作ったので共有します。
返ってくる可能性のあるエラーは全て記載してあると思います。
実装
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」のみをサポートしています"
}
}
}
おわり
エラー詳細の日本語は間違ってるのあるかも笑