/// <summary>
        /// Create and return exception response for client
        /// </summary>
        /// <param name="exception">Any exception</param>
        /// <returns></returns>
        public static NextApiResponse CreateNextApiExceptionResponse(Exception exception)
        {
            var    message = exception.GetAllMessagesFromException();
            string code;
            var    parameters = new Dictionary <string, object>();

            if (exception is NextApiException nextApiException)
            {
                code = nextApiException.Code;
                if (nextApiException.Parameters != null)
                {
                    parameters = nextApiException.Parameters;
                }
            }
            else
            {
                code = NextApiErrorCode.Unknown.ToString();
            }

            if (!parameters.ContainsKey("message"))
            {
                parameters.Add(
                    "message", message);
            }

            var error = new NextApiError(code, parameters);

            return(new NextApiResponse(null, error, false));
        }
        /// <summary>
        /// Create and return error response for client
        /// </summary>
        /// <param name="code"></param>
        /// <param name="message"></param>
        /// <returns></returns>
        public static NextApiResponse CreateNextApiErrorResponse(
            NextApiErrorCode code, string message)
        {
            var error =
                new NextApiError(code.ToString(), new Dictionary <string, object> {
                { "message", message }
            });

            return(new NextApiResponse(null, error, false));
        }
Exemple #3
0
        /// <summary>
        /// Entry point of service calls
        /// </summary>
        /// <param name="command">Information about service call</param>
        /// <returns>Response from called service</returns>
        public async Task <dynamic> ExecuteCommand(NextApiCommand command)
        {
            // set current nextapi user
            _nextApiUserAccessor.User = Context.User;
            // set current request info
            _nextApiRequest.ClientContext = Context;
            _nextApiRequest.HubContext    = _hubContext;
            var result = await _handler.ExecuteCommand(command);

            if (!(result is NextApiFileResponse))
            {
                return(result);
            }

            var error = new NextApiError(NextApiErrorCode.OperationIsNotSupported.ToString(),
                                         new Dictionary <string, object>()
            {
                { "message", "File operations is not supported over SignalR, use HTTP" }
            });

            return(new NextApiResponse(data: null, error: error, success: false));
        }
        /// <summary>
        /// Parse NextApiException from NextApiError
        /// </summary>
        /// <param name="error"></param>
        /// <returns></returns>
        public static NextApiException NextApiException(NextApiError error)
        {
            var message = error.Parameters["message"];

            return(new NextApiException(error.Code, $"{error.Code} {message}", error.Parameters));
        }