Skip to content

Commit

Permalink
Merge pull request #106 from DennisPitallano/feature/#72
Browse files Browse the repository at this point in the history
Add Get Address BEP20 Token Holding
  • Loading branch information
DennisPitallano authored Mar 3, 2022
2 parents 8364d3b + d28f6d8 commit 3d281cf
Show file tree
Hide file tree
Showing 6 changed files with 102 additions and 0 deletions.
1 change: 1 addition & 0 deletions src/BscScan.NetCore/Constants/Constants.cs
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,7 @@ internal static class TokenModuleAction
public const string TOKEN_SUPPLY_HISTORY = "tokensupplyhistory";
public const string TOKEN_BALANCE_HISTORY = "tokenbalancehistory";
public const string TOKEN_INFO = "tokeninfo";
public const string ADDRESS_TOKEN_BALANCE = "addresstokenbalance";
}

/// <summary>
Expand Down
7 changes: 7 additions & 0 deletions src/BscScan.NetCore/Contracts/IBscScanTokensService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -60,5 +60,12 @@ public interface IBscScanTokensService
/// <param name="contractAddress">the contract address of the BEP-20/BEP721 token to retrieve token info</param>
/// <returns>Returns project information and social media links of a BEP-20/BEP-721 token.</returns>
Task<TokenInfo?> GetTokenInfoByContractAddress(string contractAddress);

/// <summary>
/// Get Address BEP20 Token Holding 🅰🅿🅸 🅿🆁🅾
/// </summary>
/// <param name="request">AddressBep20TokenHoldingRequest</param>
/// <returns>Returns the BEP-20 tokens and amount held by an address.</returns>
Task<AddressBep20TokenHolding?> GetAddressBep20TokenHolding(AddressBep20TokenHoldingRequest request);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
using System.Text.Json.Serialization;

namespace BscScan.NetCore.Models.Request.Tokens
{
/// <summary>
/// AddressBep20TokenHoldingRequest
/// </summary>
public class AddressBep20TokenHoldingRequest
{
/// <summary>
/// the contract address of the BEP-20 token
/// </summary>
[JsonPropertyName("contractaddress")]
public string? ContractAddress { get; set; }
/// <summary>
/// the integer page number, if pagination is enabled (default is 1)
/// </summary>
[JsonPropertyName("page")]
public int Page { get; set; } = 1;

/// <summary>
/// the number of transactions displayed per page (default is 10)
/// </summary>
[JsonPropertyName("offset")]
public int OffSet { get; set; } = 10;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
using System.Text.Json.Serialization;

namespace BscScan.NetCore.Models.Response.Tokens
{
/// <summary>
/// AddressBep20TokenHolding
/// </summary>
public class AddressBep20TokenHolding : BaseResponse
{
/// <summary>
/// List of AddressBep20TokenHoldingData
/// </summary>
[JsonPropertyName("result")]
public IEnumerable<AddressBep20TokenHoldingData>? Result { get; set; }
}

/// <summary>
/// AddressBep20TokenHoldingData
/// </summary>
public class AddressBep20TokenHoldingData
{
/// <summary>
/// TokenAddress
/// </summary>
[JsonPropertyName("TokenAddress")]
public string? TokenAddress { get; set; }

/// <summary>
/// TokenName
/// </summary>
[JsonPropertyName("TokenName")]
public string? TokenName { get; set; }

/// <summary>
/// TokenSymbol
/// </summary>
[JsonPropertyName("TokenSymbol")]
public string? TokenSymbol { get; set; }

/// <summary>
/// TokenQuantity
/// </summary>
[JsonPropertyName("TokenQuantity")]
public string? TokenQuantity { get; set; }

/// <summary>
/// TokenDivisor
/// </summary>
[JsonPropertyName("TokenDivisor")]
public string? TokenDivisor { get; set; }

}
}
1 change: 1 addition & 0 deletions src/BscScan.NetCore/Models/Response/Tokens/TokenInfo.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ public class TokenInfo : BaseResponse
/// <summary>
/// List of TokenInfoData
/// </summary>
[JsonPropertyName("result")]
public IEnumerable<TokenInfoData>? Result { get; set; }
}

Expand Down
13 changes: 13 additions & 0 deletions src/BscScan.NetCore/Services/BscScanTokensService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -128,5 +128,18 @@ public BscScanTokensService(HttpClient bscScanHttpClient, BscScanConfiguration b
var result = await JsonSerializer.DeserializeAsync<TokenInfo>(responseStream);
return result;
}

/// <inheritdoc />
public async Task<AddressBep20TokenHolding?> GetAddressBep20TokenHolding(AddressBep20TokenHoldingRequest request)
{
var queryParameters = $"{_bscScanModuleAccount}{request.ToRequestParameters(TokenModuleAction.ADDRESS_TOKEN_BALANCE)}";
using var response = await BscScanHttpClient.GetAsync($"{queryParameters}")
.ConfigureAwait(false);

response.EnsureSuccessStatusCode();
await using var responseStream = await response.Content.ReadAsStreamAsync().ConfigureAwait(false);
var result = await JsonSerializer.DeserializeAsync<AddressBep20TokenHolding>(responseStream);
return result;
}
}
}

0 comments on commit 3d281cf

Please sign in to comment.