/// <summary> /// Converts request into JSONDataMap /// </summary> protected JSONDataMap GetRequestAsJSONDataMap(WorkContext work) { if (!work.Request.HasEntityBody) { return(work.MatchedVars); } JSONDataMap result = null; var ctp = work.Request.ContentType; //Multipart if (ctp.IndexOf(ContentType.FORM_MULTIPART_ENCODED) >= 0) { result = MultiPartContent.ToJSONDataMap(work.Request.InputStream, ctp, work.Request.ContentEncoding); } else //Form URL encoded if (ctp.IndexOf(ContentType.FORM_URL_ENCODED) >= 0) { result = JSONDataMap.FromURLEncodedStream(new NFX.IO.NonClosingStreamWrap(work.Request.InputStream), work.Request.ContentEncoding); } else//JSON if (ctp.IndexOf(ContentType.JSON) >= 0) { result = JSONReader.DeserializeDataObject(new NFX.IO.NonClosingStreamWrap(work.Request.InputStream), work.Request.ContentEncoding) as JSONDataMap; } return(result == null ? work.MatchedVars : result.Append(work.MatchedVars)); }
public void EncodeDecode_FieldsAndFileTest() { byte[] eol = new byte[] { 0x0D, 0x0A }; byte[] contentBytes = upload; var part0 = NFX.Web.MultiPartContent.MultiPart.CreateField("text1", "abba", eol); var part1 = NFX.Web.MultiPartContent.MultiPart.CreateField("check1", "on", eol); var part2 = NFX.Web.MultiPartContent.MultiPart.CreateFile("content2", "upload.txt", "text/plain", contentBytes, eol); var parts = new NFX.Web.MultiPartContent.MultiPart[] { part0, part1, part2 }; var mpc0 = MultiPartContent.Encode(parts); var mpc1 = MultiPartContent.Decode(mpc0.Stream); Assert.AreEqual(3, mpc1.Parts.Count); Assert.AreEqual("text1", mpc1.Parts[0].Parameters.Name); Assert.AreEqual("abba", mpc1.Parts[0].ContentAsString); Assert.AreEqual("check1", mpc1.Parts[1].Parameters.Name); Assert.AreEqual("on", mpc1.Parts[1].ContentAsString); Assert.AreEqual("content2", mpc1.Parts[2].Parameters.Name); Assert.AreEqual("upload.txt", mpc1.Parts[2].Parameters.FileName); Assert.AreEqual("text/plain", mpc1.Parts[2].Parameters.ContentType); Assert.IsTrue(mpc1.Parts[2].Content.SequenceEqual(contentBytes)); }
public void ParseInputsAndTextExplicitBoundaryNotMatch() { using (var stream = new MemoryStream(upload_stream_inputs_and_file)) { var mp = MultiPartContent.Decode(stream, "---------------------------7de23d3b1d07fd"); } }
public async void create( string _name, string _description, string _address, string _contact, String _latitude, String _longitude, String _id, string _token, MyFile newImage ) { MyList <string> fileKey = new MyList <string>() { "image" }; MyList <MyFile> file = new MyList <MyFile>() { newImage }; this.token = _token; var client = new ApiClient("http://api.dolankuy.me/api/"); var req = new ApiRequestBuilder() .buildHttpRequest() .addParameters("category_id", _id) .addParameters("name", _name) .addParameters("address", _address) .addParameters("description", _description) .addParameters("contact", _contact) .addParameters("latitude", _latitude) .addParameters("longitude", _longitude) .setRequestMethod(HttpMethod.Post) .setEndpoint("locations/create"); client.setAuthorizationToken(_token); if (newImage == null) { client.setOnSuccessRequest(setViewRegisterStatus); } var response = await client.sendRequest(req.getApiRequestBundle()); if (newImage != null) { MultiPartContent multiPartContent1 = new MultiPartContent(file, fileKey); var req2 = new ApiRequestBuilder() .buildMultipartRequest(multiPartContent1) .setRequestMethod(HttpMethod.Post) .setEndpoint("locations/update/" + response.getJObject()["id"].ToString()); client.setAuthorizationToken(_token); client.setOnSuccessRequest(setViewRegisterStatus); var response2 = await client.sendRequest(req2.getApiRequestBundle()); } }
public void ParseInputsAndTextEnsureBoundary() { using (var stream = new MemoryStream(upload_stream_inputs_and_file)) { var mp = MultiPartContent.Decode(stream); Assert.AreEqual("---------------------------7de23d3b1d07fe", mp.Boundary); } }
public void EncodeDecode_FieldSingleTest() { byte[] eol = new byte[] { 0x0D, 0x0A }; var part0 = NFX.Web.MultiPartContent.MultiPart.CreateField("text1", "abba", eol); var parts = new NFX.Web.MultiPartContent.MultiPart[] { part0 }; var mpc0 = MultiPartContent.Encode(parts); var mpc1 = MultiPartContent.Decode(mpc0.Stream); Assert.AreEqual(1, mpc1.Parts.Count); Assert.AreEqual("text1", mpc1.Parts[0].Parameters.Name); Assert.AreEqual("abba", mpc1.Parts[0].ContentAsString); }
public void ParseTwoText() { using (var stream = new MemoryStream(upload_stream_2_text_files_txt)) { var mp = MultiPartContent.Decode(stream); Assert.AreEqual(2, mp.Parts.Count); Assert.AreEqual("content1", mp.Parts[0].Parameters.Name); Assert.AreEqual("upload.txt", mp.Parts[0].Parameters.FileName); Assert.AreEqual("text/plain", mp.Parts[0].Parameters.ContentType); Assert.AreEqual("content2", mp.Parts[1].Parameters.Name); Assert.AreEqual("upload.txt", mp.Parts[1].Parameters.FileName); Assert.AreEqual("text/plain", mp.Parts[1].Parameters.ContentType); } }
public void ParseBmpAndText() { using (var stream = new MemoryStream(upload_stream_bmp_and_text)) { var mp = MultiPartContent.Decode(stream); Assert.AreEqual(2, mp.Parts.Count); Assert.AreEqual("content1", mp.Parts[0].Parameters.Name); Assert.AreEqual("upload_img.bmp", mp.Parts[0].Parameters.FileName); Assert.AreEqual("image/bmp", mp.Parts[0].Parameters.ContentType); Assert.IsTrue(upload_img_bmp.SequenceEqual(mp.Parts[0].Content)); Assert.AreEqual("content2", mp.Parts[1].Parameters.Name); Assert.AreEqual("upload.txt", mp.Parts[1].Parameters.FileName); Assert.AreEqual("text/plain", mp.Parts[1].Parameters.ContentType); Assert.IsTrue(upload.SequenceEqual(mp.Parts[1].Content)); } }
public void ToJSONDataMap_BmpAndTextFiles() { using (var stream = new MemoryStream(upload_stream_bmp_and_text)) { var contentType = "multipart/form-data; boundary={0}".Args(upload_stream_bmp_and_text_content_type); var data = MultiPartContent.ToJSONDataMap(stream, contentType); Assert.IsNotNull(data); Assert.AreEqual(6, data.Count()); Assert.IsTrue(upload_img_bmp.SequenceEqual((byte[])data["content1"])); Assert.AreEqual("upload_img.bmp", data["content1_filename"]); Assert.AreEqual("image/bmp", data["content1_contenttype"]); Assert.IsTrue(upload.SequenceEqual((byte[])data["content2"])); Assert.AreEqual("upload.txt", data["content2_filename"]); Assert.AreEqual("text/plain", data["content2_contenttype"]); } }
public void ToJSONDataMap_FieldsAndFile() { using (var stream = new MemoryStream(upload_stream_inputs_and_file)) { var contentType = "multipart/form-data; boundary={0}".Args(upload_stream_inputs_and_file_content_type); var data = MultiPartContent.ToJSONDataMap(stream, contentType); Assert.IsNotNull(data); Assert.AreEqual(5, data.Count()); Assert.IsTrue(data.ContainsKey("text1")); Assert.AreEqual("abba", data["text1"]); Assert.IsTrue(data.ContainsKey("check1")); Assert.AreEqual("on", data["check1"]); Assert.IsTrue(data.ContainsKey("content2")); Assert.IsTrue(upload.SequenceEqual((byte[])data["content2"])); } }
public void ParseInputsAndTextRussian() { using (var stream = new MemoryStream(upload_stream_inputs_and_test_russian_txt)) { var mp = MultiPartContent.Decode(stream); Assert.AreEqual(3, mp.Parts.Count); Assert.AreEqual("text1", mp.Parts[0].Parameters.Name); Assert.AreEqual("фрайштадт", mp.Parts[0].ContentAsString); Assert.AreEqual("check1", mp.Parts[1].Parameters.Name); Assert.AreEqual("on", mp.Parts[1].ContentAsString); Assert.AreEqual("content2", mp.Parts[2].Parameters.Name); Assert.AreEqual("upload.txt", mp.Parts[2].Parameters.FileName); Assert.AreEqual("text/plain", mp.Parts[2].Parameters.ContentType); Assert.IsTrue(upload.SequenceEqual(mp.Parts[2].Content)); } }
public void ParseInputsAndTextUnixEOL() { using (var stream = new MemoryStream(upload_stream_inputs_and_bmp_lf_txt)) { var mp = MultiPartContent.Decode(stream); Assert.AreEqual(3, mp.Parts.Count); Assert.AreEqual("text1", mp.Parts[0].Parameters.Name); Assert.AreEqual("abba", mp.Parts[0].ContentAsString); Assert.AreEqual("check1", mp.Parts[1].Parameters.Name); Assert.AreEqual("on", mp.Parts[1].ContentAsString); Assert.AreEqual("content2", mp.Parts[2].Parameters.Name); Assert.AreEqual("upload_img.bmp", mp.Parts[2].Parameters.FileName); Assert.AreEqual("image/bmp", mp.Parts[2].Parameters.ContentType); Assert.IsTrue(upload_img_bmp.SequenceEqual(mp.Parts[2].Content)); } }
public void ParseInputsAndTextExplicitBoundary() { using (var stream = new MemoryStream(upload_stream_inputs_and_file)) { var mp = MultiPartContent.Decode(stream, "---------------------------7de23d3b1d07fe"); Assert.AreEqual("---------------------------7de23d3b1d07fe", mp.Boundary); Assert.AreEqual(3, mp.Parts.Count); Assert.AreEqual("text1", mp.Parts[0].Parameters.Name); Assert.AreEqual("abba", mp.Parts[0].ContentAsString); Assert.AreEqual("check1", mp.Parts[1].Parameters.Name); Assert.AreEqual("on", mp.Parts[1].ContentAsString); Assert.AreEqual("content2", mp.Parts[2].Parameters.Name); Assert.AreEqual("upload.txt", mp.Parts[2].Parameters.FileName); Assert.AreEqual("text/plain", mp.Parts[2].Parameters.ContentType); Assert.IsTrue(upload.SequenceEqual(mp.Parts[2].Content)); } }