From 22b4524ba63be2e5a763572abc346f9fb6489079 Mon Sep 17 00:00:00 2001 From: Jan Steemann Date: Wed, 23 Dec 2015 21:57:45 +0100 Subject: [PATCH] issue #1626: fix HTTP status return codes for several error codes --- lib/Rest/HttpResponse.cpp | 98 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 96 insertions(+), 2 deletions(-) diff --git a/lib/Rest/HttpResponse.cpp b/lib/Rest/HttpResponse.cpp index 1c47ac71d6..c7103acaaa 100644 --- a/lib/Rest/HttpResponse.cpp +++ b/lib/Rest/HttpResponse.cpp @@ -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; }