1 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ 2 /* 3 * soup-status.h: HTTP status code and status class definitions 4 * 5 * Copyright (C) 2001-2003, Ximian, Inc. 6 */ 7 8 #ifndef __SOUP_STATUS_H__ 9 #define __SOUP_STATUS_H__ 1 10 11 #include <libsoup/soup-version.h> 12 13 G_BEGIN_DECLS 14 15 #define SOUP_STATUS_IS_TRANSPORT_ERROR(status) ((status) > 0 && (status) < 100) 16 #define SOUP_STATUS_IS_INFORMATIONAL(status) ((status) >= 100 && (status) < 200) 17 #define SOUP_STATUS_IS_SUCCESSFUL(status) ((status) >= 200 && (status) < 300) 18 #define SOUP_STATUS_IS_REDIRECTION(status) ((status) >= 300 && (status) < 400) 19 #define SOUP_STATUS_IS_CLIENT_ERROR(status) ((status) >= 400 && (status) < 500) 20 #define SOUP_STATUS_IS_SERVER_ERROR(status) ((status) >= 500 && (status) < 600) 21 22 typedef enum { 23 SOUP_STATUS_NONE, 24 25 /* Transport Errors */ 26 SOUP_STATUS_CANCELLED = 1, 27 SOUP_STATUS_CANT_RESOLVE, 28 SOUP_STATUS_CANT_RESOLVE_PROXY, 29 SOUP_STATUS_CANT_CONNECT, 30 SOUP_STATUS_CANT_CONNECT_PROXY, 31 SOUP_STATUS_SSL_FAILED, 32 SOUP_STATUS_IO_ERROR, 33 SOUP_STATUS_MALFORMED, 34 SOUP_STATUS_TRY_AGAIN, 35 SOUP_STATUS_TOO_MANY_REDIRECTS, 36 SOUP_STATUS_TLS_FAILED, 37 38 /* HTTP Status Codes */ 39 SOUP_STATUS_CONTINUE = 100, 40 SOUP_STATUS_SWITCHING_PROTOCOLS = 101, 41 SOUP_STATUS_PROCESSING = 102, /* WebDAV */ 42 43 SOUP_STATUS_OK = 200, 44 SOUP_STATUS_CREATED = 201, 45 SOUP_STATUS_ACCEPTED = 202, 46 SOUP_STATUS_NON_AUTHORITATIVE = 203, 47 SOUP_STATUS_NO_CONTENT = 204, 48 SOUP_STATUS_RESET_CONTENT = 205, 49 SOUP_STATUS_PARTIAL_CONTENT = 206, 50 SOUP_STATUS_MULTI_STATUS = 207, /* WebDAV */ 51 52 SOUP_STATUS_MULTIPLE_CHOICES = 300, 53 SOUP_STATUS_MOVED_PERMANENTLY = 301, 54 SOUP_STATUS_FOUND = 302, 55 SOUP_STATUS_MOVED_TEMPORARILY = 302, /* RFC 2068 */ 56 SOUP_STATUS_SEE_OTHER = 303, 57 SOUP_STATUS_NOT_MODIFIED = 304, 58 SOUP_STATUS_USE_PROXY = 305, 59 SOUP_STATUS_NOT_APPEARING_IN_THIS_PROTOCOL = 306, /* (reserved) */ 60 SOUP_STATUS_TEMPORARY_REDIRECT = 307, 61 SOUP_STATUS_PERMANENT_REDIRECT = 308, 62 63 SOUP_STATUS_BAD_REQUEST = 400, 64 SOUP_STATUS_UNAUTHORIZED = 401, 65 SOUP_STATUS_PAYMENT_REQUIRED = 402, /* (reserved) */ 66 SOUP_STATUS_FORBIDDEN = 403, 67 SOUP_STATUS_NOT_FOUND = 404, 68 SOUP_STATUS_METHOD_NOT_ALLOWED = 405, 69 SOUP_STATUS_NOT_ACCEPTABLE = 406, 70 SOUP_STATUS_PROXY_AUTHENTICATION_REQUIRED = 407, 71 SOUP_STATUS_PROXY_UNAUTHORIZED = SOUP_STATUS_PROXY_AUTHENTICATION_REQUIRED, 72 SOUP_STATUS_REQUEST_TIMEOUT = 408, 73 SOUP_STATUS_CONFLICT = 409, 74 SOUP_STATUS_GONE = 410, 75 SOUP_STATUS_LENGTH_REQUIRED = 411, 76 SOUP_STATUS_PRECONDITION_FAILED = 412, 77 SOUP_STATUS_REQUEST_ENTITY_TOO_LARGE = 413, 78 SOUP_STATUS_REQUEST_URI_TOO_LONG = 414, 79 SOUP_STATUS_UNSUPPORTED_MEDIA_TYPE = 415, 80 SOUP_STATUS_REQUESTED_RANGE_NOT_SATISFIABLE = 416, 81 SOUP_STATUS_INVALID_RANGE = SOUP_STATUS_REQUESTED_RANGE_NOT_SATISFIABLE, 82 SOUP_STATUS_EXPECTATION_FAILED = 417, 83 SOUP_STATUS_UNPROCESSABLE_ENTITY = 422, /* WebDAV */ 84 SOUP_STATUS_LOCKED = 423, /* WebDAV */ 85 SOUP_STATUS_FAILED_DEPENDENCY = 424, /* WebDAV */ 86 87 SOUP_STATUS_INTERNAL_SERVER_ERROR = 500, 88 SOUP_STATUS_NOT_IMPLEMENTED = 501, 89 SOUP_STATUS_BAD_GATEWAY = 502, 90 SOUP_STATUS_SERVICE_UNAVAILABLE = 503, 91 SOUP_STATUS_GATEWAY_TIMEOUT = 504, 92 SOUP_STATUS_HTTP_VERSION_NOT_SUPPORTED = 505, 93 SOUP_STATUS_INSUFFICIENT_STORAGE = 507, /* WebDAV search */ 94 SOUP_STATUS_NOT_EXTENDED = 510 /* RFC 2774 */ 95 } SoupStatus; 96 97 SOUP_AVAILABLE_IN_2_4 98 const char *soup_status_get_phrase (guint status_code); 99 SOUP_AVAILABLE_IN_2_26 100 guint soup_status_proxify (guint status_code); 101 102 /** 103 * SOUP_HTTP_ERROR: 104 * 105 * A #GError domain representing an HTTP status. Use a #SoupStatus for 106 * the <structfield>code</structfield> value. 107 **/ 108 #define SOUP_HTTP_ERROR (soup_http_error_quark()) 109 SOUP_AVAILABLE_IN_2_4 110 GQuark soup_http_error_quark (void); 111 112 #ifndef SOUP_DISABLE_DEPRECATED 113 /* For introspection purposes, we create a duplicate enum type under 114 * the deprecated type name, since some (all?) bindings don't handle 115 * enum type typedefs the way we want. 116 */ 117 typedef enum { 118 SOUP_KNOWN_STATUS_CODE_NONE, 119 120 SOUP_KNOWN_STATUS_CODE_CANCELLED = 1, 121 SOUP_KNOWN_STATUS_CODE_CANT_RESOLVE, 122 SOUP_KNOWN_STATUS_CODE_CANT_RESOLVE_PROXY, 123 SOUP_KNOWN_STATUS_CODE_CANT_CONNECT, 124 SOUP_KNOWN_STATUS_CODE_CANT_CONNECT_PROXY, 125 SOUP_KNOWN_STATUS_CODE_SSL_FAILED, 126 SOUP_KNOWN_STATUS_CODE_IO_ERROR, 127 SOUP_KNOWN_STATUS_CODE_MALFORMED, 128 SOUP_KNOWN_STATUS_CODE_TRY_AGAIN, 129 SOUP_KNOWN_STATUS_CODE_TOO_MANY_REDIRECTS, 130 SOUP_KNOWN_STATUS_CODE_TLS_FAILED, 131 132 SOUP_KNOWN_STATUS_CODE_CONTINUE = 100, 133 SOUP_KNOWN_STATUS_CODE_SWITCHING_PROTOCOLS = 101, 134 SOUP_KNOWN_STATUS_CODE_PROCESSING = 102, 135 136 SOUP_KNOWN_STATUS_CODE_OK = 200, 137 SOUP_KNOWN_STATUS_CODE_CREATED = 201, 138 SOUP_KNOWN_STATUS_CODE_ACCEPTED = 202, 139 SOUP_KNOWN_STATUS_CODE_NON_AUTHORITATIVE = 203, 140 SOUP_KNOWN_STATUS_CODE_NO_CONTENT = 204, 141 SOUP_KNOWN_STATUS_CODE_RESET_CONTENT = 205, 142 SOUP_KNOWN_STATUS_CODE_PARTIAL_CONTENT = 206, 143 SOUP_KNOWN_STATUS_CODE_MULTI_STATUS = 207, 144 145 SOUP_KNOWN_STATUS_CODE_MULTIPLE_CHOICES = 300, 146 SOUP_KNOWN_STATUS_CODE_MOVED_PERMANENTLY = 301, 147 SOUP_KNOWN_STATUS_CODE_FOUND = 302, 148 SOUP_KNOWN_STATUS_CODE_MOVED_TEMPORARILY = 302, 149 SOUP_KNOWN_STATUS_CODE_SEE_OTHER = 303, 150 SOUP_KNOWN_STATUS_CODE_NOT_MODIFIED = 304, 151 SOUP_KNOWN_STATUS_CODE_USE_PROXY = 305, 152 SOUP_KNOWN_STATUS_CODE_NOT_APPEARING_IN_THIS_PROTOCOL = 306, 153 SOUP_KNOWN_STATUS_CODE_TEMPORARY_REDIRECT = 307, 154 155 SOUP_KNOWN_STATUS_CODE_BAD_REQUEST = 400, 156 SOUP_KNOWN_STATUS_CODE_UNAUTHORIZED = 401, 157 SOUP_KNOWN_STATUS_CODE_PAYMENT_REQUIRED = 402, 158 SOUP_KNOWN_STATUS_CODE_FORBIDDEN = 403, 159 SOUP_KNOWN_STATUS_CODE_NOT_FOUND = 404, 160 SOUP_KNOWN_STATUS_CODE_METHOD_NOT_ALLOWED = 405, 161 SOUP_KNOWN_STATUS_CODE_NOT_ACCEPTABLE = 406, 162 SOUP_KNOWN_STATUS_CODE_PROXY_AUTHENTICATION_REQUIRED = 407, 163 SOUP_KNOWN_STATUS_CODE_PROXY_UNAUTHORIZED = SOUP_KNOWN_STATUS_CODE_PROXY_AUTHENTICATION_REQUIRED, 164 SOUP_KNOWN_STATUS_CODE_REQUEST_TIMEOUT = 408, 165 SOUP_KNOWN_STATUS_CODE_CONFLICT = 409, 166 SOUP_KNOWN_STATUS_CODE_GONE = 410, 167 SOUP_KNOWN_STATUS_CODE_LENGTH_REQUIRED = 411, 168 SOUP_KNOWN_STATUS_CODE_PRECONDITION_FAILED = 412, 169 SOUP_KNOWN_STATUS_CODE_REQUEST_ENTITY_TOO_LARGE = 413, 170 SOUP_KNOWN_STATUS_CODE_REQUEST_URI_TOO_LONG = 414, 171 SOUP_KNOWN_STATUS_CODE_UNSUPPORTED_MEDIA_TYPE = 415, 172 SOUP_KNOWN_STATUS_CODE_REQUESTED_RANGE_NOT_SATISFIABLE = 416, 173 SOUP_KNOWN_STATUS_CODE_INVALID_RANGE = SOUP_KNOWN_STATUS_CODE_REQUESTED_RANGE_NOT_SATISFIABLE, 174 SOUP_KNOWN_STATUS_CODE_EXPECTATION_FAILED = 417, 175 SOUP_KNOWN_STATUS_CODE_UNPROCESSABLE_ENTITY = 422, 176 SOUP_KNOWN_STATUS_CODE_LOCKED = 423, 177 SOUP_KNOWN_STATUS_CODE_FAILED_DEPENDENCY = 424, 178 179 SOUP_KNOWN_STATUS_CODE_INTERNAL_SERVER_ERROR = 500, 180 SOUP_KNOWN_STATUS_CODE_NOT_IMPLEMENTED = 501, 181 SOUP_KNOWN_STATUS_CODE_BAD_GATEWAY = 502, 182 SOUP_KNOWN_STATUS_CODE_SERVICE_UNAVAILABLE = 503, 183 SOUP_KNOWN_STATUS_CODE_GATEWAY_TIMEOUT = 504, 184 SOUP_KNOWN_STATUS_CODE_HTTP_VERSION_NOT_SUPPORTED = 505, 185 SOUP_KNOWN_STATUS_CODE_INSUFFICIENT_STORAGE = 507, 186 SOUP_KNOWN_STATUS_CODE_NOT_EXTENDED = 510 187 } SoupKnownStatusCode; 188 #endif 189 190 G_END_DECLS 191 192 #endif /* __SOUP_STATUS_H__ */ 193