Skip to content

Commit

Permalink
Extensions to Abi Model
Browse files Browse the repository at this point in the history
  • Loading branch information
juanfranblanco committed Aug 12, 2023
1 parent 929c336 commit 6847eb7
Showing 1 changed file with 90 additions and 0 deletions.
90 changes: 90 additions & 0 deletions src/Nethereum.ABI/Model/ModelExtensions.cs
@@ -0,0 +1,90 @@
using Nethereum.ABI.FunctionEncoding;
using Nethereum.Hex.HexConvertors.Extensions;
using System;
using System.Collections.Generic;
using System.Text;

namespace Nethereum.ABI.Model
{
public static class ModelExtensions
{
public static FunctionABI FindFunctionABI(this ContractABI contractABI, string signature)
{
foreach (var functionABI in contractABI.Functions)
{
if (functionABI.IsSignatureForFunction(signature))
{
return functionABI;
}
}
return null;
}

public static FunctionABI FindFunctionABIFromInputData(this ContractABI contractABI, string inputData)
{
if (string.IsNullOrEmpty(inputData)) return null;
inputData = inputData.EnsureHexPrefix();
if(inputData.Length < 10) return null;
var signature = inputData.Substring(0, 10);
return contractABI.FindFunctionABI(signature);
}


public static EventABI FindEventABI(this ContractABI contractABI, string signature)
{
foreach (var eventABI in contractABI.Events)
{
if (eventABI.IsSignatureForEvent(signature))
{
return eventABI;
}
}
return null;
}

public static ErrorABI FindErrorABI(this ContractABI contractABI, string signature)
{
foreach (var errorAbi in contractABI.Errors)
{
if (errorAbi.IsSignatureForError(signature))
{
return errorAbi;
}
}
return null;
}

public static bool IsSignatureForFunction(this FunctionABI functionABI, string sha3Signature)
{
sha3Signature = sha3Signature.EnsureHexPrefix();
var functionSignature = functionABI.Sha3Signature.EnsureHexPrefix();

if (sha3Signature == "0x") return false;

if (string.Equals(sha3Signature.ToLower(), functionSignature.ToLower(), StringComparison.Ordinal)) return true;
return false;
}

public static bool IsSignatureForEvent(this EventABI eventABI, string sha3Signature)
{
sha3Signature = sha3Signature.EnsureHexPrefix();
var eventSignature = eventABI.Sha3Signature.EnsureHexPrefix();

if (sha3Signature == "0x") return false;

if (string.Equals(sha3Signature.ToLower(), eventSignature.ToLower(), StringComparison.Ordinal)) return true;
return false;
}

public static bool IsSignatureForError(this ErrorABI errorABI, string sha3Signature)
{
sha3Signature = sha3Signature.EnsureHexPrefix();
var errorSignature = errorABI.Sha3Signature.EnsureHexPrefix();

if (sha3Signature == "0x") return false;

if (string.Equals(sha3Signature.ToLower(), errorSignature.ToLower(), StringComparison.Ordinal)) return true;
return false;
}
}
}

0 comments on commit 6847eb7

Please sign in to comment.