Exemplo n.º 1
0
        public Dictionary <string, string> BuscarInfo(string id)
        {
            var tx_id = client.NewQueryProposalRequest();

            tx_id.Args = new List <string>()
            {
                id
            };
            tx_id.ChaincodeID = new Hyperledger.Fabric.SDK.ChaincodeID()
            {
                Name = chaincode
            };
            tx_id.Fcn = "BuscarInfo";
            //c3369ed2-0b93-42ef-aa93-c76fd962a448
            var response = channel.QueryByChaincode(tx_id);

            if (!response[0].IsInvalid)
            {
                var msgEnc = response[0].ChaincodeActionResponsePayload;
                var msg    = System.Text.Encoding.UTF8.GetString(msgEnc);
                var result = Newtonsoft.Json.JsonConvert.DeserializeObject <List <string> >(msg);
                return(Newtonsoft.Json.JsonConvert.DeserializeObject <Dictionary <string, string> >(result[0]));
            }
            Console.WriteLine(response[0].Message);
            return(null);
        }
        private void QueryChaincodeForExpectedValue(HFClient client, Channel channel, string expect, ChaincodeID chaincdeID)
        {
            Util.COut("Now query chaincode {0} on channel {1} for the value of b expecting to see: {2}", chaincdeID, channel.Name, expect);
            QueryByChaincodeRequest queryByChaincodeRequest = client.NewQueryProposalRequest();

            queryByChaincodeRequest.SetArgs("b".ToBytes()); // test using bytes as args. End2end uses Strings.
            queryByChaincodeRequest.SetFcn("query");
            queryByChaincodeRequest.ChaincodeID = chaincdeID;

            List <ProposalResponse> queryProposals;

            queryProposals = channel.QueryByChaincode(queryByChaincodeRequest);

            foreach (ProposalResponse proposalResponse in queryProposals)
            {
                if (!proposalResponse.IsVerified || proposalResponse.Status != ChaincodeResponse.ChaincodeResponseStatus.SUCCESS)
                {
                    Assert.Fail($"Failed query proposal from peer {proposalResponse.Peer.Name} status: {proposalResponse.Status}. Messages: {proposalResponse.Message}. Was verified : {proposalResponse.IsVerified}");
                }
                else
                {
                    string payload = proposalResponse.ProtoProposalResponse.Response.Payload.ToStringUtf8();
                    Util.COut("Query payload of b from peer {0} returned {1}", proposalResponse.Peer.Name, payload);
                    Assert.AreEqual(expect, payload, $"Failed compare on channel {channel.Name} chaincode id {chaincdeID} expected value:'{expect}', but got:'{payload}'");
                }
            }
        }
Exemplo n.º 3
0
        public FabCarCollections QueryAllCars()
        {
            var t       = client.NewQueryProposalRequest();
            var request = t;

            t.ChaincodeID = new Hyperledger.Fabric.SDK.ChaincodeID()
            {
                Name = chaincode
            };
            t.Fcn  = "queryAllCars";
            t.Args = new System.Collections.Generic.List <string>();
            var response = channel.QueryByChaincode(t);

            if (response.Count > 0)
            {
                return(Newtonsoft.Json.JsonConvert.DeserializeObject <FabCarCollections>(System.Text.Encoding.UTF8.GetString(response[0].ChaincodeActionResponsePayload)));
            }

            return(null);
        }
Exemplo n.º 4
0
        // Returns the current value of b's assets
        private static string QueryChaincodeForCurrentValue(HFClient client, Channel channel, ChaincodeID chaincodeID)
        {
            Util.COut("Now query chaincode on channel {0} for the current value of b", channel.Name);

            QueryByChaincodeRequest queryByChaincodeRequest = client.NewQueryProposalRequest();

            queryByChaincodeRequest.SetArgs("b");
            queryByChaincodeRequest.SetFcn("query");
            queryByChaincodeRequest.SetChaincodeID(chaincodeID);

            List <ProposalResponse> queryProposals;

            queryProposals = channel.QueryByChaincode(queryByChaincodeRequest);
            string expect = null;

            foreach (ProposalResponse proposalResponse in queryProposals)
            {
                if (!proposalResponse.IsVerified || proposalResponse.Status != ChaincodeResponse.ChaincodeResponseStatus.SUCCESS)
                {
                    Assert.Fail($"Failed query proposal from peer {proposalResponse.Peer.Name} status: {proposalResponse.Status}. Messages: {proposalResponse.Message}. Was verified : {proposalResponse.IsVerified}");
                }
                else
                {
                    string payload = proposalResponse.ProtoProposalResponse.Response.Payload.ToStringUtf8();
                    Util.COut("Query payload of b from peer {0} returned {1}", proposalResponse.Peer.Name, payload);
                    if (expect != null)
                    {
                        Assert.AreEqual(expect, payload);
                    }
                    else
                    {
                        expect = payload;
                    }
                }
            }

            return(expect);
        }