Esempio n. 1
0
        /// <inheritdoc />
        public virtual async Task <ParseResponseResult> LookupRevocationRegistryDefinitionAsync(IAgentContext agentContext,
                                                                                                string registryId)
        {
            var req = await IndyLedger.BuildGetRevocRegDefRequestAsync(null, registryId);

            var res = await IndyLedger.SubmitRequestAsync(await agentContext.Pool, req);

            return(await IndyLedger.ParseGetRevocRegDefResponseAsync(res));
        }
        /// <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);
        }
    }