/// <inheritdoc /> public virtual async Task <ParseResponseResult> LookupSchemaAsync(Pool pool, string schemaId) { var req = await IndyLedger.BuildGetSchemaRequestAsync(null, schemaId); var res = await IndyLedger.SubmitRequestAsync(pool, req); EnsureSuccessResponse(res); return(await IndyLedger.ParseGetSchemaResponseAsync(res)); }
/// <inheritdoc /> public virtual async Task <ParseResponseResult> LookupSchemaAsync(IAgentContext agentContext, string schemaId) { async Task <ParseResponseResult> LookupSchema() { var req = await IndyLedger.BuildGetSchemaRequestAsync(null, schemaId); var res = await IndyLedger.SubmitRequestAsync(await agentContext.Pool, req); EnsureSuccessResponse(res); return(await IndyLedger.ParseGetSchemaResponseAsync(res)); }; return(await ResilienceUtils.RetryPolicyAsync( action : LookupSchema, exceptionPredicate : (IndyException e) => e.SdkErrorCode == 309)); }
/// <summary> /// Processes the incoming <see cref="AgentMessage" /> /// </summary> /// <param name="message">The message.</param> /// <param name="agentContext">The message agentContext.</param> /// <param name="messageContext">The message context.</param> /// <returns></returns> protected override async Task <AgentMessage> ProcessAsync(BasicMessage message, IAgentContext agentContext, UnpackedMessageContext messageContext) { var jObject = JObject.Parse(message.Content); if (jObject.ContainsKey("~CustomType")) { var customType = (string)jObject["~CustomType"]; switch (customType) { case "LedgerLookupDefinition": { var definitionID = (string)jObject["~DefinitionID"]; var req = await IndyLedger.BuildGetCredDefRequestAsync(null, definitionID); var res = await IndyLedger.SubmitRequestAsync(await agentContext.Pool, req); var resMessage = new BasicMessage { Content = res }; return(resMessage); } case "LedgerLookupRevocationRegistryDefinition": { var registryId = (string)jObject["~RegistryID"]; var req = await IndyLedger.BuildGetRevocRegDefRequestAsync(null, registryId); var res = await IndyLedger.SubmitRequestAsync(await agentContext.Pool, req); var resMessage = new BasicMessage { Content = res }; return(resMessage); } case "LedgerLookupSchema": { var schemaId = (string)jObject["~SchemaID"]; var req = await IndyLedger.BuildGetSchemaRequestAsync(null, schemaId); var res = await IndyLedger.SubmitRequestAsync(await agentContext.Pool, req); var resMessage = new BasicMessage { Content = res }; return(resMessage); } case "LedgerLookupRevocationRegistryDelta": { var revocationRegistryId = (string)jObject["~RevocationRegistryId"]; var from = (string)jObject["~From"]; var to = (string)jObject["~To"]; var req = await IndyLedger.BuildGetRevocRegDeltaRequestAsync(null, revocationRegistryId, Convert.ToInt64(from), Convert.ToInt64(to)); var res = await IndyLedger.SubmitRequestAsync(await agentContext.Pool, req); var resMessage = new BasicMessage { Content = res }; return(resMessage); } } } var record = new BasicMessageRecord { Id = Guid.NewGuid().ToString(), ConnectionId = messageContext.Connection.Id, Text = message.Content, SentTime = DateTime.TryParse(message.SentTime, out var dateTime) ? dateTime : DateTime.UtcNow, Direction = MessageDirection.Incoming }; await _recordService.AddAsync(agentContext.Wallet, record); messageContext.ContextRecord = record; return(null); } }