コード例 #1
0
        public void Can_encode_findvalue_response()
        {
            var node    = new KNodeId32(1);
            var buffer  = new ArrayBufferWriter <byte>();
            var encoder = new KJsonMessageEncoder <KNodeId32>();
            var body    = new KFindValueResponse <KNodeId32>(new KNodeInfo <KNodeId32>[] { new KNodeInfo <KNodeId32>(node, new[] { new Uri("http://www.google.com") }) }, new KValueInfo(new byte[0], 1, DateTime.UtcNow.AddSeconds(.9)));
            var message = new KResponse <KNodeId32, KFindValueResponse <KNodeId32> >(new KMessageHeader <KNodeId32>(node, 1), KResponseStatus.Success, body);

            encoder.Encode(new KMessageContext <KNodeId32>("application/json".Yield()), buffer, new KMessageSequence <KNodeId32>(1, new IKMessage <KNodeId32>[] { message }));
            var j = JObject.Parse(Encoding.UTF8.GetString(buffer.WrittenSpan.ToArray()));
            var z = JObject.ReadFrom(new JsonTextReader(new StreamReader(typeof(KJsonMessageEncoderTests).Assembly.GetManifestResourceStream("Alethic.Kademlia.Tests.Json.Samples.findvalue_response.json"))));

            j.Should().BeEquivalentTo(z);
        }
コード例 #2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="response"></param>
        /// <param name="e"></param>
        private void HandleException(KResponse <T> response, Exception e)
        {
            response.Status  = EkResponseStatus.Failure;
            response.Message = e.Message;
            response.Errors  = new List <string> {
                e.Message
            };

            if (e.InnerException != null)
            {
                response.Errors = response.Errors.Append(e.InnerException.Message);
            }

            Log.Logger.Error($"An error has occured : {e.Message} - {e.InnerException?.Message}");
        }
コード例 #3
0
        /// <summary>
        /// Get a response with a list
        /// </summary>
        /// <param name="apiMethod">The function that produces the results</param>
        /// <returns>The response with the results</returns>
        protected KResponse <T> GetResponse(Func <List <T> > apiMethod)
        {
            var response = new KResponse <T>();

            try
            {
                response.Status  = EkResponseStatus.Success;
                response.Content = new KContent <T> {
                    Results = apiMethod.Invoke()
                };
            }
            catch (Exception e)
            {
                HandleException(response, e);
            }

            return(response);
        }
コード例 #4
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="apiMethod"></param>
        /// <returns></returns>
        protected KResponse <long> Count(Func <long> apiMethod)
        {
            var response = new KResponse <long>();

            try
            {
                response.Status  = EkResponseStatus.Success;
                response.Content = new KContent <long> {
                    Result = apiMethod.Invoke()
                };
            }
            catch (Exception e)
            {
                HandleException(response, e);
            }

            return(response);
        }