Example #1
0
        private async Task <FlexResponse> ProcessRequest(FlexRequest request)
        {
            Func <FlexRequest, Task <FlexResponse> > processor = null;

            if (request.Method == "GET")
            {
                Get.TryGetValue(request.Url, out processor);
            }
            else if (request.Method == "POST")
            {
                Post.TryGetValue(request.Url, out processor);
            }
            else if (request.Method == "PUT")
            {
                Put.TryGetValue(request.Url, out processor);
            }
            else if (request.Method == "DELETE")
            {
                Delete.TryGetValue(request.Url, out processor);
            }

            if (processor != null)
            {
                FlexResponse response = await processor(request);

                return(response);
            }

            return(DefaultResponse);
        }
Example #2
0
        private async void ListenerConnectionReceived(StreamSocketListener sender, StreamSocketListenerConnectionReceivedEventArgs args)
        {
            StreamSocket socket = args.Socket;

            StringBuilder requestStrBuilder = new StringBuilder();

            using (IInputStream input = socket.InputStream)
            {
                byte[]  data     = new byte[BufferSize];
                IBuffer buffer   = data.AsBuffer();
                uint    dataRead = BufferSize;
                while (dataRead == BufferSize)
                {
                    await input.ReadAsync(buffer, BufferSize, InputStreamOptions.Partial);

                    requestStrBuilder.Append(Encoding.UTF8.GetString(data, 0, (int)buffer.Length));
                    dataRead = buffer.Length;
                }
            }

            string requestStr = requestStrBuilder.ToString();

            if (String.IsNullOrEmpty(requestStr))
            {
                return;
            }

            FlexRequest request = FlexRequest.TryParse(requestStr);

            if (request == null)
            {
                return;
            }

            FlexResponse response = await ProcessRequest(request);

            using (IOutputStream output = socket.OutputStream)
            {
                using (Stream responseStream = output.AsStreamForWrite())
                {
                    await response.WriteToStream(responseStream);

                    await responseStream.FlushAsync();
                }
            }
        }