forked from bonesoul/uhttpsharp
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathJsonResponseProvider.cs
More file actions
26 lines (22 loc) · 952 Bytes
/
Copy pathJsonResponseProvider.cs
File metadata and controls
26 lines (22 loc) · 952 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
using System.IO;
using System.Threading.Tasks;
using Newtonsoft.Json;
namespace uhttpsharp.Handlers
{
public class JsonResponseProvider : IResponseProvider
{
public static readonly IResponseProvider Default = new JsonResponseProvider();
private JsonResponseProvider()
{
}
public Task<IHttpResponse> Provide(object value, HttpResponseCode responseCode = HttpResponseCode.Ok)
{
var memoryStream = new MemoryStream();
var writer = new JsonTextWriter(new StreamWriter(memoryStream));
var serializer = new JsonSerializer() { ReferenceLoopHandling = ReferenceLoopHandling.Ignore, Formatting = Formatting.Indented};
serializer.Serialize(writer, value);
writer.Flush();
return Task.FromResult<IHttpResponse>(new HttpResponse(responseCode, "application/json; charset=utf-8", memoryStream, true));
}
}
}