Source/NuGetGallery.Operations/Infrastructure/LogLevelConverter.cs (42 lines of code) (raw):
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Newtonsoft.Json;
using NLog;
namespace NuGetGallery.Operations.Infrastructure
{
public class LogLevelConverter : JsonConverter
{
public override bool CanConvert(Type objectType)
{
return objectType == typeof(LogLevel);
}
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
if (reader.TokenType == JsonToken.String)
{
var ret = LogLevel.FromString((string)reader.Value);
reader.Read();
return ret;
}
else if (reader.TokenType == JsonToken.StartObject)
{
reader.Read();
if (reader.TokenType == JsonToken.PropertyName && String.Equals((string)reader.Value, "name", StringComparison.OrdinalIgnoreCase))
{
reader.Read();
if (reader.TokenType == JsonToken.String)
{
return LogLevel.FromString((string)reader.Value);
}
}
}
return null;
}
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
writer.WriteValue(((LogLevel)value).Name);
}
}
}