web3-dotnet-sdk
web3-dotnet-sdk copied to clipboard
MoralisClient.Web3Api.Token.GetTokenMetadata fails when multiple addresses
Since api isn't accepting param array chained with " , "
Example not working => returns "message": "addresses is not a valid hex address"
https://deep-index.moralis.io/api/v2/erc20/metadata?addresses=0X720ABD02E351F79CEFA90B6A9201B366B502E89C,0x1659fFb2d40DfB1671Ac226A0D9Dcc95A774521A&chain=polygon
Working Example it needs to be chained with addresses separator per item.
https://deep-index.moralis.io/api/v2/erc20/metadata?addresses=0X720ABD02E351F79CEFA90B6A9201B366B502E89C&addresses=0x1659fFb2d40DfB1671Ac226A0D9Dcc95A774521A&chain=polygon
Posible fixes on SDK On File: TokenApi.cs
public async Task<List> GetTokenMetadata
line 118
var parametersFixed = String.Join("&addresses=", ApiClient.ParameterToString(addresses).Split(","));
if (addresses != null) queryParams.Add("addresses", parametersFixed);
...
On File: ApiClient.cs Add separator param
public string ParameterToString(object obj, string separator = ",")
{
if (obj is DateTime)
// Return a formatted date string - Can be customized with Configuration.DateTimeFormat
// Defaults to an ISO 8601, using the known as a Round-trip date/time pattern ("o")
// https://msdn.microsoft.com/en-us/library/az4se3k1(v=vs.110).aspx#Anchor_8
// For example: 2009-06-15T13:45:30.0000000
return ((DateTime)obj).ToString(Configuration.DateTimeFormat);
else if (obj is List<string>)
return String.Join(separator, (obj as List<string>).ToArray());
else if (obj is string || obj is int || obj is long || obj is decimal || obj is bool || obj is float || obj is double || obj is byte || obj is char)
{
return obj.ToString();
}
else
return JsonConvert.SerializeObject(obj);
}
And called:
if (addresses != null) queryParams.Add("addresses", ApiClient.ParameterToString(addresses, "&addresses="));