1
0
Fork 0

issue #1626: fix HTTP status return codes for several error codes

This commit is contained in:
Jan Steemann 2015-12-23 21:57:45 +01:00
parent 7c9ee31c2d
commit 22b4524ba6
1 changed files with 96 additions and 2 deletions

View File

@ -210,45 +210,139 @@ HttpResponse::HttpResponseCode HttpResponse::responseCode (int code) {
switch (code) {
case TRI_ERROR_BAD_PARAMETER:
case TRI_ERROR_ARANGO_DATABASE_NAME_INVALID:
case TRI_ERROR_ARANGO_DOCUMENT_KEY_BAD:
case TRI_ERROR_ARANGO_DOCUMENT_KEY_UNEXPECTED:
case TRI_ERROR_ARANGO_DOCUMENT_KEY_MISSING:
case TRI_ERROR_ARANGO_DOCUMENT_TYPE_INVALID:
case TRI_ERROR_ARANGO_DOCUMENT_HANDLE_BAD:
case TRI_ERROR_CLUSTER_MUST_NOT_CHANGE_SHARDING_ATTRIBUTES:
case TRI_ERROR_CLUSTER_MUST_NOT_SPECIFY_KEY:
case TRI_ERROR_TYPE_ERROR:
case TRI_ERROR_QUERY_NUMBER_OUT_OF_RANGE:
case TRI_ERROR_QUERY_VARIABLE_NAME_INVALID:
case TRI_ERROR_QUERY_VARIABLE_REDECLARED:
case TRI_ERROR_QUERY_VARIABLE_NAME_UNKNOWN:
case TRI_ERROR_QUERY_TOO_MANY_COLLECTIONS:
case TRI_ERROR_QUERY_FUNCTION_NAME_UNKNOWN:
case TRI_ERROR_QUERY_FUNCTION_ARGUMENT_NUMBER_MISMATCH:
case TRI_ERROR_QUERY_FUNCTION_ARGUMENT_TYPE_MISMATCH:
case TRI_ERROR_QUERY_INVALID_REGEX:
case TRI_ERROR_QUERY_BIND_PARAMETERS_INVALID:
case TRI_ERROR_QUERY_BIND_PARAMETER_MISSING:
case TRI_ERROR_QUERY_BIND_PARAMETER_UNDECLARED:
case TRI_ERROR_QUERY_BIND_PARAMETER_TYPE:
case TRI_ERROR_QUERY_INVALID_LOGICAL_VALUE:
case TRI_ERROR_QUERY_INVALID_ARITHMETIC_VALUE:
case TRI_ERROR_QUERY_DIVISION_BY_ZERO:
case TRI_ERROR_QUERY_ARRAY_EXPECTED:
case TRI_ERROR_QUERY_FAIL_CALLED:
case TRI_ERROR_QUERY_INVALID_DATE_VALUE:
case TRI_ERROR_QUERY_MULTI_MODIFY:
case TRI_ERROR_QUERY_COMPILE_TIME_OPTIONS:
case TRI_ERROR_QUERY_EXCEPTION_OPTIONS:
case TRI_ERROR_QUERY_COLLECTION_USED_IN_EXPRESSION:
case TRI_ERROR_QUERY_DISALLOWED_DYNAMIC_CALL:
case TRI_ERROR_QUERY_ACCESS_AFTER_MODIFICATION:
case TRI_ERROR_QUERY_FUNCTION_INVALID_NAME:
case TRI_ERROR_QUERY_FUNCTION_INVALID_CODE:
case TRI_ERROR_REPLICATION_INVALID_APPLIER_CONFIGURATION:
case TRI_ERROR_REPLICATION_RUNNING:
case TRI_ERROR_REPLICATION_NO_START_TICK:
case TRI_ERROR_ARANGO_USE_SYSTEM_DATABASE:
case TRI_ERROR_ARANGO_INVALID_KEY_GENERATOR:
case TRI_ERROR_ARANGO_INVALID_EDGE_ATTRIBUTE:
case TRI_ERROR_ARANGO_INDEX_DOCUMENT_ATTRIBUTE_MISSING:
case TRI_ERROR_ARANGO_INDEX_CREATION_FAILED:
case TRI_ERROR_ARANGO_COLLECTION_TYPE_MISMATCH:
case TRI_ERROR_ARANGO_COLLECTION_TYPE_INVALID:
case TRI_ERROR_ARANGO_VALIDATION_FAILED:
case TRI_ERROR_ARANGO_ATTRIBUTE_PARSER_FAILED:
case TRI_ERROR_ARANGO_CROSS_COLLECTION_REQUEST:
case TRI_ERROR_ARANGO_INDEX_HANDLE_BAD:
case TRI_ERROR_ARANGO_CAP_CONSTRAINT_ALREADY_DEFINED:
case TRI_ERROR_ARANGO_DOCUMENT_TOO_LARGE:
case TRI_ERROR_QUERY_PARSE:
case TRI_ERROR_QUERY_EMPTY:
case TRI_ERROR_TRANSACTION_NESTED:
case TRI_ERROR_TRANSACTION_UNREGISTERED_COLLECTION:
case TRI_ERROR_TRANSACTION_DISALLOWED_OPERATION:
case TRI_ERROR_USER_INVALID_NAME:
case TRI_ERROR_USER_INVALID_PASSWORD:
case TRI_ERROR_TASK_INVALID_ID:
case TRI_ERROR_GRAPH_INVALID_GRAPH:
case TRI_ERROR_GRAPH_COULD_NOT_CREATE_GRAPH:
case TRI_ERROR_GRAPH_INVALID_VERTEX:
case TRI_ERROR_GRAPH_COULD_NOT_CREATE_VERTEX:
case TRI_ERROR_GRAPH_COULD_NOT_CHANGE_VERTEX:
case TRI_ERROR_GRAPH_INVALID_EDGE:
case TRI_ERROR_GRAPH_COULD_NOT_CREATE_EDGE:
case TRI_ERROR_GRAPH_COULD_NOT_CHANGE_EDGE:
case TRI_ERROR_GRAPH_COLLECTION_MULTI_USE:
case TRI_ERROR_GRAPH_COLLECTION_USE_IN_MULTI_GRAPHS:
case TRI_ERROR_GRAPH_CREATE_MISSING_NAME:
case TRI_ERROR_GRAPH_CREATE_MALFORMED_EDGE_DEFINITION:
case TRI_ERROR_GRAPH_WRONG_COLLECTION_TYPE_VERTEX:
case TRI_ERROR_GRAPH_NOT_IN_ORPHAN_COLLECTION:
case TRI_ERROR_GRAPH_COLLECTION_USED_IN_EDGE_DEF:
case TRI_ERROR_GRAPH_EDGE_COLLECTION_NOT_USED:
case TRI_ERROR_GRAPH_NOT_AN_ARANGO_COLLECTION:
case TRI_ERROR_GRAPH_INVALID_EXAMPLE_ARRAY_OBJECT_STRING:
case TRI_ERROR_GRAPH_INVALID_EXAMPLE_ARRAY_OBJECT:
case TRI_ERROR_GRAPH_INVALID_NUMBER_OF_ARGUMENTS:
case TRI_ERROR_GRAPH_INVALID_PARAMETER:
case TRI_ERROR_GRAPH_INVALID_ID:
case TRI_ERROR_GRAPH_COLLECTION_USED_IN_ORPHANS:
case TRI_ERROR_GRAPH_EDGE_COL_DOES_NOT_EXIST:
return BAD;
case TRI_ERROR_ARANGO_READ_ONLY:
return FORBIDDEN;
case TRI_ERROR_ARANGO_DATABASE_NOT_FOUND:
case TRI_ERROR_ARANGO_COLLECTION_NOT_FOUND:
case TRI_ERROR_ARANGO_COLLECTION_NOT_LOADED:
case TRI_ERROR_ARANGO_DOCUMENT_NOT_FOUND:
case TRI_ERROR_ARANGO_ENDPOINT_NOT_FOUND:
case TRI_ERROR_ARANGO_INDEX_NOT_FOUND:
case TRI_ERROR_CURSOR_NOT_FOUND:
case TRI_ERROR_QUERY_FUNCTION_NOT_FOUND:
case TRI_ERROR_QUERY_GEO_INDEX_MISSING:
case TRI_ERROR_QUERY_FULLTEXT_INDEX_MISSING:
case TRI_ERROR_QUERY_NOT_FOUND:
case TRI_ERROR_USER_NOT_FOUND:
case TRI_ERROR_TASK_NOT_FOUND:
case TRI_ERROR_GRAPH_NOT_FOUND:
case TRI_ERROR_GRAPH_VERTEX_COL_DOES_NOT_EXIST:
case TRI_ERROR_GRAPH_NO_GRAPH_COLLECTION:
case TRI_ERROR_QUEUE_UNKNOWN:
return NOT_FOUND;
case TRI_ERROR_REQUEST_CANCELED:
case TRI_ERROR_QUERY_KILLED:
case TRI_ERROR_TRANSACTION_ABORTED:
return GONE;
case TRI_ERROR_ARANGO_CONFLICT:
case TRI_ERROR_ARANGO_UNIQUE_CONSTRAINT_VIOLATED:
case TRI_ERROR_CURSOR_BUSY:
case TRI_ERROR_USER_DUPLICATE:
case TRI_ERROR_TASK_DUPLICATE_ID:
case TRI_ERROR_GRAPH_DUPLICATE:
case TRI_ERROR_QUEUE_ALREADY_EXISTS:
return CONFLICT;
case TRI_ERROR_DEADLOCK:
case TRI_ERROR_ARANGO_OUT_OF_KEYS:
case TRI_ERROR_CLUSTER_SHARD_GONE:
case TRI_ERROR_CLUSTER_TIMEOUT:
case TRI_ERROR_OUT_OF_MEMORY:
case TRI_ERROR_INTERNAL:
return SERVER_ERROR;
case TRI_ERROR_CLUSTER_UNSUPPORTED:
return NOT_IMPLEMENTED;
case TRI_ERROR_OUT_OF_MEMORY:
case TRI_ERROR_INTERNAL:
default:
return SERVER_ERROR;
}