public Result <T> Error <T>(MetaError metaError)
 {
     return(new Result <T>()
     {
         MetaError = metaError, Obj = default(T)
     });
 }
 public Result Error(MetaError metaError)
 {
     return(new Result()
     {
         MetaError = metaError
     });
 }
Exemple #3
0
        public static MetaError ToMetaError(this ValidationFailure error, HttpStatusCode protocolCode = HttpStatusCode.Conflict)
        {
            var err  = new Error(error.ErrorMessage, error.ErrorCode);
            var meta = new MetaError(err, protocolCode);

            return(meta);
        }
Exemple #4
0
 protected static void AssertError(MetaError error, string file, string id, int lineNumber, int columnNumber, int?endLineNumber = null, int?endColumnNumber = null)
 {
     AssertError(error, file, id);
     Assert.Equal(lineNumber, error.LineNumber);
     Assert.Equal(columnNumber, error.ColumnNumber);
     Assert.Equal(endLineNumber ?? lineNumber, error.EndLineNumber);
     Assert.Equal(endColumnNumber ?? columnNumber, error.EndColumnNumber);
 }
Exemple #5
0
 static BuildErrorEventArgs ToBuildError(MetaError error)
 {
     return(new BuildErrorEventArgs(
                subcategory: "MetaSharp",
                code: error.Id,
                file: error.File,
                lineNumber: error.LineNumber,
                columnNumber: error.ColumnNumber,
                endLineNumber: error.EndLineNumber,
                endColumnNumber: error.EndColumnNumber,
                message: error.Message,
                helpKeyword: string.Empty,
                senderName: "MetaSharp"
                ));
 }
        protected bool IsValid(string value, int minLength, int maxLegth, MetaError errorForNull, MetaError errorForLength, out Result result)
        {
            if (string.IsNullOrWhiteSpace(value))
            {
                result = Error(errorForNull);
            }
            else if (value.Length < minLength || value.Length > maxLegth)
            {
                result = Error(errorForLength);
            }
            else
            {
                result = null;
            }

            return(result == null);
        }
Exemple #7
0
        public static Mapper <MetaValue> .ToRule ObjectsAreDecomposed(Mapper <MetaValue> binder)
        {
            object FromMeta(MetaValue target)
            {
                return(target.Value.Match <object>(
                           metaObject => throw new NotImplementedException(),
                           metaValue => metaValue.Value.Value,
                           metaArray => throw new NotImplementedException()
                           ));
            }

            MetaObject ToMetaObject(object target)
            {
                MetaType ToMetaType(Type type)
                {
                    if (type == typeof(object))
                    {
                        throw new Exception();
                    }

                    return(new MetaType
                    {
                        Name = type.GetTypeInfo().IsGenericType&& !type.IsConstructedGenericType ? null : MetaName.From(type.FullName),
                        GenericType = type.GetTypeInfo().IsGenericType&& !type.IsConstructedGenericType ? ToMetaType(type.GetGenericTypeDefinition()) : null,
                        GenericArguments = type.GetTypeInfo().IsGenericType&& !type.IsConstructedGenericType ? type.GetTypeInfo().GenericTypeArguments.Select(ToMetaType).ToArray() : null
                    });
                }

                MetaParameter ToParam(ParameterInfo arg) => new MetaParameter()
                {
                    Name = MetaName.From(arg.Name),
                    Type = ToMetaType(arg.ParameterType)
                };
                MetaResult ToResult(Func <object> execute)
                {
                    try
                    {
                        var result = execute();
                        return(MetaResult.From(binder.Map(result).AsT0));
                    }
                    catch (Exception ex)
                    {
                        return(MetaResult.From(MetaError.From(ex.Message)));
                    }
                }

                MetaAction ToAction(MethodInfo method) => new MetaAction()
                {
                    Name = MetaName.From(method.Name),
                    Call = args =>
                           ToResult(() => method.Invoke(target, args.Select(arg => FromMeta(arg.Value)).ToArray())),
                    Parameters = method.GetParameters().Select(ToParam)
                };
                MetaProperty ToProperty(PropertyInfo propertyInfo) => new MetaProperty()
                {
                    Name     = MetaName.From(propertyInfo.Name),
                    Type     = ToMetaType(propertyInfo.PropertyType),
                    GetValue = !propertyInfo.CanRead ? null as Func <MetaValue> : () =>
                    {
                        var value = propertyInfo.GetValue(target);
                        return(value == null?MetaScalar.From(new MetaNull()) : binder.Map(value).AsT0);
                    },
                    SetValue = !propertyInfo.CanWrite ? null as Action <MetaValue> : (arg) =>
                    {
                        propertyInfo.SetValue(target, FromMeta(arg.Value));
                    },
                };
                return(new MetaObject()
                {
                    Type = ToMetaType(target.GetType()),
                    Properties = target.GetType().GetTypeInfo().DeclaredProperties.Where(t => !t.IsSpecialName && t.DeclaringType == target.GetType()).Select(ToProperty).ToArray(),
                    Actions = target.GetType().GetTypeInfo().DeclaredMethods.Where(t => !t.Name.StartsWith("<") && !t.Name.StartsWith("get_") && !t.Name.StartsWith("set_") && t.DeclaringType == target.GetType()).Select(ToAction).ToArray()
                });
            }

            return(target => (Mapper <MetaValue> .RuleOutput)(MetaValue) ToMetaObject(target));
        }
 protected static void AssertError(MetaError error, string file, string id) {
     Assert.Equal(file, error.File);
     Assert.Equal(id, error.Id);
 }
 protected static void AssertError(MetaError error, string file, string id, int lineNumber, int columnNumber, int? endLineNumber = null, int? endColumnNumber = null) {
     AssertError(error, file, id);
     Assert.Equal(lineNumber, error.LineNumber);
     Assert.Equal(columnNumber, error.ColumnNumber);
     Assert.Equal(endLineNumber ?? lineNumber, error.EndLineNumber);
     Assert.Equal(endColumnNumber ?? columnNumber, error.EndColumnNumber);
 }
Exemple #10
0
 protected static void AssertError(MetaError error, string file, string id, string message, int lineNumber, int columnNumber, int? endLineNumber = null, int? endColumnNumber = null) {
     AssertError(error, file, id, lineNumber, columnNumber, endLineNumber, endColumnNumber);
     Assert.Equal(message, error.Message);
 }
Exemple #11
0
 protected static void AssertError(MetaError error, string file, string id, string message, int lineNumber, int columnNumber, int?endLineNumber = null, int?endColumnNumber = null)
 {
     AssertError(error, file, id, lineNumber, columnNumber, endLineNumber, endColumnNumber);
     Assert.Equal(message, error.Message);
 }
Exemple #12
0
 protected static void AssertError(MetaError error, string file, string id)
 {
     Assert.Equal(file, error.File);
     Assert.Equal(id, error.Id);
 }
 public static IRuleBuilderOptions <T, TProperty> WithCustomError <T, TProperty>(this IRuleBuilderOptions <T, TProperty> rule, MetaError metaError)
 {
     rule.WithErrorCode(metaError.StatusCode.ToString());
     rule.WithMessage(metaError.Error);
     return(rule);
 }
Exemple #14
0
 static BuildErrorEventArgs ToBuildError(MetaError error)
 {
     return new BuildErrorEventArgs(
                 subcategory: "MetaSharp",
                 code: error.Id,
                 file: error.File,
                 lineNumber: error.LineNumber,
                 columnNumber: error.ColumnNumber,
                 endLineNumber: error.EndLineNumber,
                 endColumnNumber: error.EndColumnNumber,
                 message: error.Message,
                 helpKeyword: string.Empty,
                 senderName: "MetaSharp"
                 );
 }
Exemple #15
0
 /// <inheritdoc />
 public YandexApiResponseException(string message, MetaError apiMetaError) : base(message)
 {
     ApiMetaError = apiMetaError;
 }
Exemple #16
0
 /// <inheritdoc />
 public YandexApiResponseException(MetaError apiMetaError)
 {
     ApiMetaError = apiMetaError;
 }