File size: 2,166 Bytes
3c2af29
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
include!(concat!(env!("OUT_DIR"), "/aiserver.v1.rs"));
use error_details::Error;

impl ErrorDetails {
    pub fn status_code(&self) -> u16 {
        match Error::try_from(self.error) {
            Ok(error) => match error {
                Error::Unspecified => 500,
                Error::BadApiKey
                | Error::InvalidAuthId
                | Error::AuthTokenNotFound
                | Error::AuthTokenExpired
                | Error::Unauthorized => 401,
                Error::NotLoggedIn
                | Error::NotHighEnoughPermissions
                | Error::AgentRequiresLogin
                | Error::ProUserOnly
                | Error::TaskNoPermissions => 403,
                Error::NotFound
                | Error::UserNotFound
                | Error::TaskUuidNotFound
                | Error::AgentEngineNotFound
                | Error::GitgraphNotFound
                | Error::FileNotFound => 404,
                Error::FreeUserRateLimitExceeded
                | Error::ProUserRateLimitExceeded
                | Error::OpenaiRateLimitExceeded
                | Error::OpenaiAccountLimitExceeded
                | Error::GenericRateLimitExceeded
                | Error::Gpt4VisionPreviewRateLimit
                | Error::ApiKeyRateLimit => 429,
                Error::BadRequest
                | Error::BadModelName
                | Error::SlashEditFileTooLong
                | Error::FileUnsupported
                | Error::ClaudeImageTooLarge => 400,
                Error::Deprecated
                | Error::FreeUserUsageLimit
                | Error::ProUserUsageLimit
                | Error::ResourceExhausted
                | Error::Openai
                | Error::MaxTokens
                | Error::ApiKeyNotSupported
                | Error::UserAbortedRequest
                | Error::CustomMessage
                | Error::OutdatedClient
                | Error::Debounced
                | Error::RepositoryServiceRepositoryIsNotInitialized => 500,
            },
            Err(_) => 500,
        }
    }

    // pub fn is_expected(&self) -> bool {
    //     self.is_expected.unwrap_or_default()
    // }
}