private async void ProcessRequestAsync(StreamSocket socket)
{
try
{
StringBuilder request = new StringBuilder();
//Get the incomming data
using (IInputStream input = socket.InputStream)
{
byte[] data = new byte[BufferSize];
IBuffer buffer = data.AsBuffer();
uint dataRead = BufferSize;
//Read all the incomming data
while (dataRead == BufferSize)
{
await input.ReadAsync(buffer, BufferSize, InputStreamOptions.Partial);
request.Append(Encoding.UTF8.GetString(data, 0, data.Length));
dataRead = buffer.Length;
}
}
//Got the data start processing a response
using (IOutputStream output = socket.OutputStream)
{
string requestMethod = request.ToString();
string[] requestParts = { "" };
if (requestMethod != null)
{
//Beakup the request into it parts
requestMethod = requestMethod.Split('\n')[0];
requestParts = requestMethod.Split(' ');
}
//We only respond HTTP GETS and POST methods
if (requestParts[0] == "GET")
await WriteGetResponseAsync(requestParts[1], output);
else if (requestParts[0] == "POST")
await WritePostResponseAsync(requestParts[1], output);
else
await WriteMethodNotSupportedResponseAsync(requestParts[1], output);
}
}
catch (Exception) { }
}