Exemplo n.º 1
0
        private static void Wrap(StreamWriter w, StreamReader r, string path)
        {
            var mcc = CodecWithPath(path);

            if (mcc == null)
            {
                throw new Exception($"unknown codec {path}");
            }

            var hdrs = Encoding.UTF8.GetString(mcc.Header);

            Action <ICodec, ICodec> wrapRT = (c, mc) =>
            {
                var v = c.Decoder(r.BaseStream).Decode <dynamic>();
                mc.Encoder(w.BaseStream).Encode(v);
            };

            if (hdrs == JsonCodec.HeaderMsgioPath)
            {
                wrapRT(JsonCodec.CreateCodec(true), mcc);
            }
            else if (hdrs == JsonCodec.HeaderPath)
            {
                wrapRT(JsonCodec.CreateCodec(false), mcc);
            }
            else if (hdrs == CborCodec.HeaderPath)
            {
                wrapRT(CborCodec.CreateCodec(), mcc);
            }
            else
            {
                throw new Exception($"wrap unsupported for codec {hdrs}");
            }
        }
        public void TestMethod9()
        {
            Request             request = new Request("Image", "Payload for testing");
            JsonCodec <Request> jsonCod = new JsonCodec <Request>();

            byte[] reqCod = jsonCod.Encode(request);

            Request reqDecod = jsonCod.Decode(reqCod);

            Assert.AreEqual(request.Type, reqDecod.Type);
        }
        public void TestMethod16()
        {
            Request             request = new Request("", "Payload for testing");
            JsonCodec <Request> jsonCod = new JsonCodec <Request>();

            byte[] reqCod = jsonCod.Encode(request);

            Request reqDecod = jsonCod.Decode(reqCod);

            Assert.AreEqual(request.RequestBody, reqDecod.RequestBody);
        }
        public void TestMethod14()
        {
            Request             request = new Request("Image", "");
            JsonCodec <Request> jsonCod = new JsonCodec <Request>();

            byte[] reqCod = jsonCod.Encode(request);

            Request reqDecod = jsonCod.Decode(reqCod);

            Assert.AreEqual(request.RequestBody, reqDecod.RequestBody);
        }
        public void TestMethod11()
        {
            Request             request = new Request("", "");
            JsonCodec <Request> jsonCod = new JsonCodec <Request>();

            byte[] reqCod = jsonCod.Encode(request);

            Request reqDecod = jsonCod.Decode(reqCod);

            Assert.AreEqual(request.Type, reqDecod.Type);
        }
Exemplo n.º 6
0
 public void JsonCodecWithoutMsgIoRoundTrip() => MulticodecRoundTrip(JsonCodec.CreateCodec(false));
Exemplo n.º 7
0
 public void JsonCodecWithMsgIoRoundTrip() => MulticodecRoundTrip(JsonCodec.CreateCodec(true));
Exemplo n.º 8
0
 public Task JsonCodecWithoutMsgIoRoundTripMany_Async() => MulticodecRoundTripManyAsync(JsonCodec.CreateCodec(false));
Exemplo n.º 9
0
 public Task JsonMulticodecWithMsgIoRoundTripMany_Async() => MulticodecRoundTripManyAsync(JsonCodec.CreateMulticodec(true));
Exemplo n.º 10
0
 public void JsonMulticodecWithMsgIoRoundTripMany() => MulticodecRoundTripMany(JsonCodec.CreateMulticodec(true));
Exemplo n.º 11
0
 public Task JsonCodecWithMsgIoRoundTrip_Async() => MulticodecRoundTripAsync(JsonCodec.CreateCodec(true));
Exemplo n.º 12
0
 public static async Task <object> Request(string url, object param, IDictionary <string, string> headers, int timeout = 0)
 {
     return(JsonCodec.ToJsonObject(await Request <string>(url, param, headers, timeout)));
 }
Exemplo n.º 13
0
        public static async Task <T> CustomRequest <T>(string url, object param, Action <HttpWebRequest> updateRequestParamFunc = null) where T : class
        {
            T      result = null;
            string input  = null;

            if (param != null)
            {
                input = param is string?param.ToString() : JsonCodec.ToJsonString(param);
            }

            HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(url);

            httpWebRequest.Accept      = "*/*";
            httpWebRequest.UserAgent   = "curl/7.50.0";
            httpWebRequest.ContentType = "text/plain";
            httpWebRequest.Method      = param == null ? "GET" : "POST";
            httpWebRequest.Timeout     = DefaultTimeout;

            updateRequestParamFunc?.Invoke(httpWebRequest);

            if (input != null)
            {
                using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
                {
                    await streamWriter.WriteAsync(input);

                    await streamWriter.FlushAsync();

                    streamWriter.Close();
                }
            }

            using (var response = await TryToGetResponse(httpWebRequest))
            {
                using (StreamReader streamReader = new StreamReader(response.GetResponseStream()))
                {
                    string responseString = await streamReader.ReadToEndAsync();

                    var expectedType = typeof(T);
                    if (expectedType == typeof(string))
                    {
                        result = responseString as T;
                    }
                    else if (expectedType == typeof(IDictionary <string, object>))
                    {
                        result = JsonCodec.ToDictionary(responseString) as T;
                    }
                    else if (expectedType == typeof(Tuple <int, string>))
                    {
                        var ret = new Tuple <int, string>((int)(((HttpWebResponse)response).StatusCode), responseString);
                        result = ret as T;
                    }
                    else
                    {
                        result = JsonCodec.ToJsonObject <T>(responseString);
                    }
                    streamReader.Close();
                }
            }

            return(result);
        }
Exemplo n.º 14
0
 public static async Task <object> CustomRequest(string url, object param, Action <HttpWebRequest> updateRequestParamFunc = null)
 {
     return(JsonCodec.ToJsonObject(await CustomRequest <string>(url, param, updateRequestParamFunc)));
 }
 public static ResourceSyncDocument FromJson(JsonString json)
 {
     return(JsonCodec.FromJson <ResourceSyncDocument>(json));
 }
 public JsonString ToJson()
 {
     return(JsonCodec.ToJson(this));
 }
Exemplo n.º 17
0
        public static async Task <T> Request <T>(string url, object param, IDictionary <string, string> headers, int timeout = 0) where T : class
        {
            T      result = null;
            string input  = null;

            if (param != null)
            {
                input = param is string?param.ToString() : JsonCodec.ToJsonString(param);
            }

            HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(url);

            httpWebRequest.Accept      = "*/*";
            httpWebRequest.UserAgent   = "curl/7.50.0";
            httpWebRequest.ContentType = "text/plain";
            httpWebRequest.Method      = param == null ? "GET" : "POST";

            if (headers != null)
            {
                var reqHeaders = new Dictionary <string, string>(headers);
                if (reqHeaders.ContainsKey("Content-Type"))
                {
                    httpWebRequest.ContentType = reqHeaders["Content-Type"];
                    reqHeaders.Remove("Content-Type");
                }
                foreach (var item in reqHeaders)
                {
                    httpWebRequest.Headers.Add(item.Key, item.Value);
                }
            }

            httpWebRequest.Timeout = timeout > 0 ? timeout : DefaultTimeout;

            if (input != null)
            {
                using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
                {
                    await streamWriter.WriteAsync(input);

                    await streamWriter.FlushAsync();

                    streamWriter.Close();
                }
            }

            using (var response = await TryToGetResponse(httpWebRequest))
            {
                using (StreamReader streamReader = new StreamReader(response.GetResponseStream()))
                {
                    string responseString = await streamReader.ReadToEndAsync();

                    var expectedType = typeof(T);
                    if (expectedType == typeof(string))
                    {
                        result = responseString as T;
                    }
                    else if (expectedType == typeof(IDictionary <string, object>))
                    {
                        result = JsonCodec.ToDictionary(responseString) as T;
                    }
                    else if (expectedType == typeof(Tuple <int, string>))
                    {
                        var ret = new Tuple <int, string>((int)(((HttpWebResponse)response).StatusCode), responseString);
                        result = ret as T;
                    }
                    else
                    {
                        result = JsonCodec.ToJsonObject <T>(responseString);
                    }
                    streamReader.Close();
                }
            }

            return(result);
        }