diff --git a/src/main/java/org/qortal/api/resource/BlocksResource.java b/src/main/java/org/qortal/api/resource/BlocksResource.java index bcd531d4..28d54a44 100644 --- a/src/main/java/org/qortal/api/resource/BlocksResource.java +++ b/src/main/java/org/qortal/api/resource/BlocksResource.java @@ -268,9 +268,15 @@ public class BlocksResource { @ApiErrors({ ApiError.REPOSITORY_ISSUE }) - public BlockData getLastBlock() { + public BlockData getLastBlock(@QueryParam("includeOnlineSignatures") Boolean includeOnlineSignatures) { try (final Repository repository = RepositoryManager.getRepository()) { - return repository.getBlockRepository().getLastBlock(); + BlockData blockData = repository.getBlockRepository().getLastBlock(); + + if (includeOnlineSignatures == null || includeOnlineSignatures == false) { + blockData.setOnlineAccountsSignatures(null); + } + + return blockData; } catch (DataException e) { throw ApiExceptionFactory.INSTANCE.createException(request, ApiError.REPOSITORY_ISSUE, e); } @@ -548,20 +554,25 @@ public class BlocksResource { @ApiErrors({ ApiError.BLOCK_UNKNOWN, ApiError.REPOSITORY_ISSUE }) - public BlockData getByTimestamp(@PathParam("timestamp") long timestamp) { + public BlockData getByTimestamp(@PathParam("timestamp") long timestamp, + @QueryParam("includeOnlineSignatures") Boolean includeOnlineSignatures) { try (final Repository repository = RepositoryManager.getRepository()) { BlockData blockData = null; // Try the Blocks table int height = repository.getBlockRepository().getHeightFromTimestamp(timestamp); - if (height > 0) { + if (height > 1) { // Found match in Blocks table - return repository.getBlockRepository().fromHeight(height); + blockData = repository.getBlockRepository().fromHeight(height); + if (includeOnlineSignatures == null || includeOnlineSignatures == false) { + blockData.setOnlineAccountsSignatures(null); + } + return blockData; } // Not found in Blocks table, so try the archive height = repository.getBlockArchiveRepository().getHeightFromTimestamp(timestamp); - if (height > 0) { + if (height > 1) { // Found match in archive blockData = repository.getBlockArchiveRepository().fromHeight(height); } @@ -571,6 +582,10 @@ public class BlocksResource { throw ApiExceptionFactory.INSTANCE.createException(request, ApiError.BLOCK_UNKNOWN); } + if (includeOnlineSignatures == null || includeOnlineSignatures == false) { + blockData.setOnlineAccountsSignatures(null); + } + return blockData; } catch (DataException e) { throw ApiExceptionFactory.INSTANCE.createException(request, ApiError.REPOSITORY_ISSUE, e); diff --git a/src/test/java/org/qortal/test/api/BlockApiTests.java b/src/test/java/org/qortal/test/api/BlockApiTests.java index 6415880a..ed0a2b8f 100644 --- a/src/test/java/org/qortal/test/api/BlockApiTests.java +++ b/src/test/java/org/qortal/test/api/BlockApiTests.java @@ -77,7 +77,7 @@ public class BlockApiTests extends ApiCommon { @Test public void testGetBlockByTimestamp() { - assertNotNull(this.blocksResource.getByTimestamp(System.currentTimeMillis())); + assertNotNull(this.blocksResource.getByTimestamp(System.currentTimeMillis(), false)); } @Test