Exemplo n.º 1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="body"></param>
        /// <param name="err"></param>
        /// <typeparam name="T"></typeparam>
        /// <returns></returns>
        protected override bool TryExtractErrorFromBody <T>(T body, out FailBase err)
        {
            err = null;

            if (!(body is XDocument xBody))
            {
                return(false);
            }

            bool ExtractFromElement(out string errCode, out string errMsg)
            {
                errCode = xBody.XPathSelectElement("Exception/ErrorCode")?.Value ?? string.Empty;
                errMsg  = xBody.XPathSelectElement("Exception/ErrorMessage")?.Value ?? string.Empty;

                return(!string.IsNullOrEmpty(errCode + errMsg));
            }

            bool ExtractFromAttribute(out string errCode, out string errMsg)
            {
                var xData = xBody.Element("Data");

                errCode = xData?.Attribute("ErrorCode")?.Value ?? string.Empty;
                errMsg  = xData?.Attribute("ErrorText")?.Value ?? string.Empty;

                return(!string.IsNullOrEmpty(errCode + errMsg));
            }

            if (ExtractFromElement(out var sCode, out var sMsg) || ExtractFromAttribute(out sCode, out sMsg))
            {
                err = FailBase.CreateInstance(sCode, sMsg);
                return(true);
            }

            return(false);
        }
        /// <inheritdoc/>
        protected override bool TryExtractErrorFromBody <T>(T body, out FailBase err)
        {
            err = null;

            if (!(body is JToken jBody))
            {
                return(false);
            }

            if (!jBody.HasValues || jBody.First == null)
            {
                return(false);
            }
            var msg  = jBody["error"]?.Value <string>();
            var code = jBody["code"]?.Value <string>();

            if (string.IsNullOrEmpty(msg))
            {
                return(false);
            }

            err = FailBase.CreateInstance(code, msg);
            return(true);
        }
Exemplo n.º 3
0
 /// <summary>
 /// validate responce bode, if contains 'error' field return true
 /// </summary>
 /// <param name="body">responce body</param>
 /// <param name="err"></param>
 /// <returns>true or false</returns>
 protected abstract bool TryExtractErrorFromBody <T>(T body, out FailBase err);