blob: 78f8759c795696c97fc96eb3d0ee60fe9a8db390 [file] [log] [blame]
#region License
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
#endregion
using System;
namespace Gremlin.Net.Driver.Messages
{
/// <summary>
/// Represents the various status codes that Gremlin Server returns.
/// </summary>
public enum ResponseStatusCode
{
/// <summary>
/// The server successfully processed a request to completion - there are no messages remaining in this
/// stream.
/// </summary>
Success = 200,
/// <summary>
/// The server processed the request but there is no result to return (e.g. an Iterator with no elements)
/// - there are no messages remaining in this stream.
/// </summary>
NoContent = 204,
/// <summary>
/// The server successfully returned some content, but there is more in the stream to arrive - wait for a
/// SUCCESS to signify the end of the stream.
/// </summary>
PartialContent = 206,
/// <summary>
/// The request attempted to access resources that the requesting user did not have access to.
/// </summary>
Unauthorized = 401,
/// <summary>
/// A challenge from the server for the client to authenticate its request.
/// </summary>
Authenticate = 407,
/// <summary>
/// The request message was not properly formatted which means it could not be parsed at all or the "op" code
/// was not recognized such that Gremlin Server could properly route it for processing. Check the message format
/// and retry the request.
/// </summary>
MalformedRequest = 498,
/// <summary>
/// The request message was parseable, but the arguments supplied in the message were in conflict or incomplete.
/// Check the message format and retry the request.
/// </summary>
InvalidRequestArguments = 499,
/// <summary>
/// A general server error occurred that prevented the request from being processed.
/// </summary>
ServerError = 500,
/// <summary>
/// The script submitted for processing evaluated in the ScriptEngine with errors and could not be processed.
/// Check the script submitted for syntax errors or other problems and then resubmit.
/// </summary>
ScriptEvaluationError = 597,
/// <summary>
/// The server exceeded one of the timeout settings for the request and could therefore only partially responded
/// or did not respond at all.
/// </summary>
ServerTimeout = 598,
/// <summary>
/// The server was not capable of serializing an object that was returned from the script supplied on the request.
/// Either transform the object into something Gremlin Server can process within the script or install mapper
/// serialization classes to Gremlin Server.
/// </summary>
ServerSerializationError = 599
}
internal static class ResponseStatusCodeExtensions
{
public static bool IndicatesError(this ResponseStatusCode statusCode)
{
switch (statusCode)
{
case ResponseStatusCode.Success:
case ResponseStatusCode.NoContent:
case ResponseStatusCode.PartialContent:
case ResponseStatusCode.Authenticate:
return false;
case ResponseStatusCode.Unauthorized:
case ResponseStatusCode.MalformedRequest:
case ResponseStatusCode.InvalidRequestArguments:
case ResponseStatusCode.ServerError:
case ResponseStatusCode.ScriptEvaluationError:
case ResponseStatusCode.ServerTimeout:
case ResponseStatusCode.ServerSerializationError:
return true;
default:
throw new ArgumentOutOfRangeException(nameof(statusCode), statusCode, null);
}
}
}
}