コード例 #1
0
ファイル: MVCHandler.cs プロジェクト: rioka/nfx
        /// <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));
        }
コード例 #2
0
ファイル: MultiPartContentTest.cs プロジェクト: rioka/nfx
        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));
        }
コード例 #3
0
ファイル: MultiPartContentTest.cs プロジェクト: rioka/nfx
 public void ParseInputsAndTextExplicitBoundaryNotMatch()
 {
     using (var stream = new MemoryStream(upload_stream_inputs_and_file))
     {
         var mp = MultiPartContent.Decode(stream, "---------------------------7de23d3b1d07fd");
     }
 }
コード例 #4
0
        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());
            }
        }
コード例 #5
0
ファイル: MultiPartContentTest.cs プロジェクト: rioka/nfx
 public void ParseInputsAndTextEnsureBoundary()
 {
     using (var stream = new MemoryStream(upload_stream_inputs_and_file))
     {
         var mp = MultiPartContent.Decode(stream);
         Assert.AreEqual("---------------------------7de23d3b1d07fe", mp.Boundary);
     }
 }
コード例 #6
0
ファイル: MultiPartContentTest.cs プロジェクト: rioka/nfx
        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);
        }
コード例 #7
0
ファイル: MultiPartContentTest.cs プロジェクト: rioka/nfx
        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);
            }
        }
コード例 #8
0
ファイル: MultiPartContentTest.cs プロジェクト: rioka/nfx
        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));
            }
        }
コード例 #9
0
ファイル: MultiPartContentTest.cs プロジェクト: rioka/nfx
        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"]);
            }
        }
コード例 #10
0
ファイル: MultiPartContentTest.cs プロジェクト: rioka/nfx
        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"]));
            }
        }
コード例 #11
0
ファイル: MultiPartContentTest.cs プロジェクト: rioka/nfx
        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));
            }
        }
コード例 #12
0
ファイル: MultiPartContentTest.cs プロジェクト: rioka/nfx
        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));
            }
        }
コード例 #13
0
ファイル: MultiPartContentTest.cs プロジェクト: rioka/nfx
        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));
            }
        }