public async Task ParseBlock(AssetDefinitionParseBlockContext context) { try { _console.Write(nameof(ParseBlockCommandQueueConsumer), nameof(ParseBlock), context.ToJson(), "Started"); var block = await _indexerClient.GetBlock(uint256.Parse(context.BlockHash)); foreach (var transaction in block.Transactions.Where(p => p.HasValidColoredMarker())) { var assetDefUrl = transaction.TryGetAssetDefinitionUrl(); if (assetDefUrl != null) { await _log.WriteInfoAsync(nameof(ParseBlockCommandQueueConsumer), nameof(ParseBlock), context.ToJson(), $"Found asset definition url {assetDefUrl.AbsoluteUri}"); await _assetDefinitionCommandProducer.CreateRetrieveAssetDefinitionCommand(assetDefUrl.AbsoluteUri); } } await _assetDefinitionParsedBlockRepository.AddBlockAsync(AssetDefinitionParsedBlock.Create(context.BlockHash)); _console.Write(nameof(ParseBlockCommandQueueConsumer), nameof(ParseBlock), context.ToJson(), "Done"); } catch (Exception e) { await _log.WriteErrorAsync(nameof(ParseBlockCommandQueueConsumer), nameof(ParseBlock), context.ToJson(), e); } }
public Task CreateParseBlockCommand(string blockHash) { var context = new AssetDefinitionParseBlockContext { BlockHash = blockHash }; return(_queue.PutRawMessageAsync(context.ToJson())); }