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); }
public void JsonCodecWithoutMsgIoRoundTrip() => MulticodecRoundTrip(JsonCodec.CreateCodec(false));
public void JsonCodecWithMsgIoRoundTrip() => MulticodecRoundTrip(JsonCodec.CreateCodec(true));
public Task JsonCodecWithoutMsgIoRoundTripMany_Async() => MulticodecRoundTripManyAsync(JsonCodec.CreateCodec(false));
public Task JsonMulticodecWithMsgIoRoundTripMany_Async() => MulticodecRoundTripManyAsync(JsonCodec.CreateMulticodec(true));
public void JsonMulticodecWithMsgIoRoundTripMany() => MulticodecRoundTripMany(JsonCodec.CreateMulticodec(true));
public Task JsonCodecWithMsgIoRoundTrip_Async() => MulticodecRoundTripAsync(JsonCodec.CreateCodec(true));
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))); }
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); }
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)); }
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); }