Added same functionality to GET /blocks/signature/{signature}

Also renamed query string parameter to "includeOnlineSignatures" to make it clearer.
This commit is contained in:
CalDescent 2021-12-15 16:37:59 +00:00
parent 3a7da9f13b
commit 391c3fe4c9
2 changed files with 12 additions and 5 deletions

View File

@ -75,7 +75,8 @@ public class BlocksResource {
@ApiErrors({ @ApiErrors({
ApiError.INVALID_SIGNATURE, ApiError.BLOCK_UNKNOWN, ApiError.REPOSITORY_ISSUE ApiError.INVALID_SIGNATURE, ApiError.BLOCK_UNKNOWN, ApiError.REPOSITORY_ISSUE
}) })
public BlockData getBlock(@PathParam("signature") String signature58) { public BlockData getBlock(@PathParam("signature") String signature58,
@QueryParam("includeOnlineSignatures") Boolean includeOnlineSignatures) {
// Decode signature // Decode signature
byte[] signature; byte[] signature;
try { try {
@ -88,12 +89,18 @@ public class BlocksResource {
// Check the database first // Check the database first
BlockData blockData = repository.getBlockRepository().fromSignature(signature); BlockData blockData = repository.getBlockRepository().fromSignature(signature);
if (blockData != null) { if (blockData != null) {
if (includeOnlineSignatures == null || includeOnlineSignatures == false) {
blockData.setOnlineAccountsSignatures(null);
}
return blockData; return blockData;
} }
// Not found, so try the block archive // Not found, so try the block archive
blockData = repository.getBlockArchiveRepository().fromSignature(signature); blockData = repository.getBlockArchiveRepository().fromSignature(signature);
if (blockData != null) { if (blockData != null) {
if (includeOnlineSignatures == null || includeOnlineSignatures == false) {
blockData.setOnlineAccountsSignatures(null);
}
return blockData; return blockData;
} }
@ -424,12 +431,12 @@ public class BlocksResource {
ApiError.BLOCK_UNKNOWN, ApiError.REPOSITORY_ISSUE ApiError.BLOCK_UNKNOWN, ApiError.REPOSITORY_ISSUE
}) })
public BlockData getByHeight(@PathParam("height") int height, public BlockData getByHeight(@PathParam("height") int height,
@QueryParam("includesignatures") Boolean includeSignatures) { @QueryParam("includeOnlineSignatures") Boolean includeOnlineSignatures) {
try (final Repository repository = RepositoryManager.getRepository()) { try (final Repository repository = RepositoryManager.getRepository()) {
// Firstly check the database // Firstly check the database
BlockData blockData = repository.getBlockRepository().fromHeight(height); BlockData blockData = repository.getBlockRepository().fromHeight(height);
if (blockData != null) { if (blockData != null) {
if (includeSignatures == null || includeSignatures == false) { if (includeOnlineSignatures == null || includeOnlineSignatures == false) {
blockData.setOnlineAccountsSignatures(null); blockData.setOnlineAccountsSignatures(null);
} }
return blockData; return blockData;
@ -438,7 +445,7 @@ public class BlocksResource {
// Not found, so try the archive // Not found, so try the archive
blockData = repository.getBlockArchiveRepository().fromHeight(height); blockData = repository.getBlockArchiveRepository().fromHeight(height);
if (blockData != null) { if (blockData != null) {
if (includeSignatures == null || includeSignatures == false) { if (includeOnlineSignatures == null || includeOnlineSignatures == false) {
blockData.setOnlineAccountsSignatures(null); blockData.setOnlineAccountsSignatures(null);
} }
return blockData; return blockData;

View File

@ -40,7 +40,7 @@ public class BlockApiTests extends ApiCommon {
byte[] signatureBytes = GenesisBlock.getInstance(repository).getSignature(); byte[] signatureBytes = GenesisBlock.getInstance(repository).getSignature();
String signature = Base58.encode(signatureBytes); String signature = Base58.encode(signatureBytes);
assertNotNull(this.blocksResource.getBlock(signature)); assertNotNull(this.blocksResource.getBlock(signature, true));
} }
} }