Skip to content

Commit

Permalink
Merge branch 'feature/#36' into Manual-Test
Browse files Browse the repository at this point in the history
# Conflicts:
#	src/BscScan.NetCore/Models/Request/Blocks/DailyAverageBlockSizeRequest.cs
  • Loading branch information
DennisPitallano committed Feb 21, 2022
2 parents 559a480 + a2ccc0f commit 62bf264
Show file tree
Hide file tree
Showing 7 changed files with 122 additions and 40 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 @@ -54,6 +54,7 @@ internal static class BlocksModuleAction
public const string GET_BLOCK_COUNT_DOWN= "getblockcountdown";
public const string GET_BLOCK_NUMBER_BY_TIMESTAMP= "getblocknobytime";
public const string GET_DAILY_AVG_BLOCK_SIZE = "dailyavgblocksize";
public const string GET_DAILY_BLOCK_COUNT = "dailyblkcount";
}


Expand Down
8 changes: 8 additions & 0 deletions src/BscScan.NetCore/Contracts/IBscScanBlocksService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -38,5 +38,13 @@ public interface IBscScanBlocksService
/// <param name="request">DailyAverageBlockSizeRequest Model</param>
/// <returns>Returns the daily average block size within a date range.</returns>
Task<DailyAverageBlockSize?> GetDailyAverageBlockSize(DailyAverageBlockSizeRequest request);


/// <summary>
/// Get Daily Block Count and Rewards 🅰🅿🅸 🅿🆁🅾
/// </summary>
/// <param name="request">DailyBlockCountAndRewardRequest Model</param>
/// <returns>Returns the number of blocks validated daily and the amount of block rewards.</returns>
Task<DailyBlockCountAndRewards?> GetDailyBlockCountsAndRewards(DailyBlockCountAndRewardRequest request);
}
}
Original file line number Diff line number Diff line change
@@ -1,47 +1,10 @@
using System.Text.Json.Serialization;

namespace BscScan.NetCore.Models.Request.Blocks
namespace BscScan.NetCore.Models.Request.Blocks
{
/// <summary>
/// DailyAverageBlockSize Request Model
/// </summary>
public class DailyAverageBlockSizeRequest
public class DailyAverageBlockSizeRequest :DailyBlockRequest
{
/// <summary>
/// the starting date in yyyy-MM-dd format, eg. 2021-08-01
/// </summary>
[JsonIgnore]
public DateOnly StartDate { get; set; }

/// <summary>
/// the starting date in yyyy-MM-dd format, eg. 2021-08-01
/// </summary>
[JsonPropertyName("startdate")]
public string StartDateParam => StartDate.ToString("yyyy-MM-dd");

/// <summary>
/// the ending date in yyyy-MM-dd format, eg. 2021-08-31
/// </summary>
[JsonIgnore]
public DateOnly EndDate { get; set; }

/// <summary>
/// the ending date in yyyy-MM-dd format, eg. 2021-08-31
/// </summary>
[JsonPropertyName("enddate")]
public string EndDateParam => EndDate.ToString("yyyy-MM-dd");

/// <summary>
/// the sorting preference, use asc to sort by ascending and desc to sort by descending
/// </summary>
[JsonIgnore]
public Sort Sort { get; set; } = Sort.Asc;


/// <summary>
/// the sorting preference, use asc to sort by ascending and desc to sort by descending
/// </summary>
[JsonPropertyName("sort")]
public string SortParam => Sort.ToString().ToLower();

}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
namespace BscScan.NetCore.Models.Request.Blocks
{
/// <summary>
/// DailyBlockCountAndRewardRequest Model
/// </summary>
public class DailyBlockCountAndRewardRequest: DailyBlockRequest
{
}
}
47 changes: 47 additions & 0 deletions src/BscScan.NetCore/Models/Request/Blocks/DailyBlockRequest.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
using System.Text.Json.Serialization;

namespace BscScan.NetCore.Models.Request.Blocks
{
/// <summary>
/// DailyBlockRequest Base Request
/// </summary>
public class DailyBlockRequest
{
/// <summary>
/// the starting date in yyyy-MM-dd format, eg. 2021-08-01
/// </summary>
[JsonIgnore]
public DateOnly StartDate { get; set; }

/// <summary>
/// the starting date in yyyy-MM-dd format, eg. 2021-08-01
/// </summary>
[JsonPropertyName("startdate")]
public string StartDateParam => StartDate.ToString("yyyy-MM-dd");

/// <summary>
/// the ending date in yyyy-MM-dd format, eg. 2021-08-31
/// </summary>
[JsonIgnore]
public DateOnly EndDate { get; set; }

/// <summary>
/// the ending date in yyyy-MM-dd format, eg. 2021-08-31
/// </summary>
[JsonPropertyName("enddate")]
public string EndDateParam => EndDate.ToString("yyyy-MM-dd");

/// <summary>
/// the sorting preference, use asc to sort by ascending and desc to sort by descending
/// </summary>
[JsonIgnore]
public Sort Sort { get; set; }


/// <summary>
/// the sorting preference, use asc to sort by ascending and desc to sort by descending
/// </summary>
[JsonPropertyName("sort")]
public string SortParam => Sort.ToString().ToLower();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
using System.Text.Json.Serialization;

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

/// <summary>
/// DailyBlockCountAndRewardsData
/// </summary>
public class DailyBlockCountAndRewardsData
{
/// <summary>
/// UTCDate
/// </summary>
[JsonPropertyName("UTCDate")]
public string? UtcDate { get; set; }

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

/// <summary>
/// BlockTimeSec
/// </summary>
[JsonPropertyName("blockTime_sec")]
public string? BlockTimeSec { get; set; }
}
}
14 changes: 14 additions & 0 deletions src/BscScan.NetCore/Services/BscScanBlocksService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -76,5 +76,19 @@ public BscScanBlocksService(HttpClient bscScanHttpClient, BscScanConfiguration b
var result = await JsonSerializer.DeserializeAsync<DailyAverageBlockSize>(responseStream);
return result;
}


/// <inheritdoc />
public async Task<DailyBlockCountAndRewards?> GetDailyBlockCountsAndRewards(DailyBlockCountAndRewardRequest request)
{
var queryParameters = $"{_bscScanModuleStat}{request.ToRequestParameters(BlocksModuleAction.GET_DAILY_BLOCK_COUNT)}";
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<DailyBlockCountAndRewards>(responseStream);
return result;
}
}
}

0 comments on commit 62bf264

Please sign in to comment.