예제 #1
0
        public ErrorABI BuildError(IDictionary <string, object> errorObject)
        {
            var errorABI = new ErrorABI((string)errorObject["name"]);

            errorABI.InputParameters = BuildFunctionParameters((List <object>)errorObject["inputs"]);

            return(errorABI);
        }
예제 #2
0
        public TError DecodeExceptionEncodedData(string data)
        {
            if (ErrorABI.IsExceptionEncodedDataForError(data))
            {
                return(data.DecodeExceptionEncodedData <TError>());
            }

            return(null);
        }
 public ErrorABI ExtractErrorABI(Type contractMessageType)
 {
     if (ErrorAttribute.IsErrorType(contractMessageType))
     {
         var errorAttribute = ErrorAttribute.GetAttribute(contractMessageType);
         var errorABI       = new ErrorABI(errorAttribute.Name);
         errorABI.InputParameters = ExtractParametersFromAttributes(contractMessageType);
         return(errorABI);
     }
     return(null);
 }
예제 #4
0
        public ErrorABI ExtractErrorABI(string signature, string name, string parameters)
        {
            var errorABI = new ErrorABI(name);

            errorABI.InputParameters = new List <Parameter>().ToArray();
            if (!string.IsNullOrEmpty(parameters))
            {
                errorABI.InputParameters = ExtractParameters(parameters).ToArray();
            }
            return(errorABI);
        }
예제 #5
0
        public static bool IsExceptionForError(this ErrorABI errorABI, RpcResponseException exception)
        {
            if (exception.RpcError.Data == null)
            {
                return(false);
            }
            var encodedData = exception.RpcError.Data.ToString();

            if (!encodedData.IsHex())
            {
                return(false);
            }
            return(encodedData.IsExceptionEncodedDataForError(errorABI.Sha3Signature));
        }
예제 #6
0
 public static bool IsExceptionEncodedDataForError(this ErrorABI errorABI, string data)
 {
     return(data.IsExceptionEncodedDataForError(errorABI.Sha3Signature));
 }
예제 #7
0
 public static List <ParameterOutput> DecodeExceptionEncodedDataToDefault(this ErrorABI errorABI, string data)
 {
     return(_functionCallDecoder.DecodeFunctionInput(errorABI.Sha3Signature, data,
                                                     errorABI.InputParameters));
 }
예제 #8
0
        public static bool IsErrorABIForErrorType <TError>(this ErrorABI errorABI)
        {
            var errorTypeABI = ABITypedRegistry.GetError <TError>();

            return(errorTypeABI.Sha3Signature.ToLowerInvariant() == errorABI.Sha3Signature.ToLowerInvariant());
        }
예제 #9
0
 public ErrorBase(Type errorTypeAbi)
 {
     ErrorABI = ABITypedRegistry.GetError(errorTypeAbi);
 }
예제 #10
0
 public ErrorBase(ErrorABI errorABI)
 {
     ErrorABI = errorABI;
 }
예제 #11
0
 public ErrorDTOModel(ErrorABI errorABI, string @namespace)
     : base(@namespace, errorABI.GetErrorTypeNameBasedOnOverloads(), "Error")
 {
     ErrorABI = errorABI;
     InitisialiseNamespaceDependencies();
 }
예제 #12
0
 public ErrorDTOGenerator(ErrorABI abi, string @namespace, CodeGenLanguage codeGenLanguage)
 {
     ClassModel = new ErrorDTOModel(abi, @namespace);
     ClassModel.CodeGenLanguage = codeGenLanguage;
     InitialiseTemplate(codeGenLanguage);
 }