50 lines
1.4 KiB
C#
50 lines
1.4 KiB
C#
using System;
|
|
using System.Linq;
|
|
using Newtonsoft.Json;
|
|
using Newtonsoft.Json.Linq;
|
|
|
|
namespace RedditSharp
|
|
{
|
|
[Flags]
|
|
public enum ModeratorPermission
|
|
{
|
|
None = 0x00,
|
|
Access = 0x01,
|
|
Config = 0x02,
|
|
Flair = 0x04,
|
|
Mail = 0x08,
|
|
Posts = 0x10,
|
|
Wiki = 0x20,
|
|
All = Access | Config | Flair | Mail | Posts | Wiki
|
|
}
|
|
|
|
internal class ModeratorPermissionConverter : JsonConverter
|
|
{
|
|
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
|
|
{
|
|
throw new NotImplementedException();
|
|
}
|
|
|
|
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
|
|
{
|
|
var data = String.Join(",", JArray.Load(reader).Select(t => t.ToString()));
|
|
|
|
ModeratorPermission result;
|
|
|
|
var valid = Enum.TryParse(data, true, out result);
|
|
|
|
if (!valid)
|
|
result = ModeratorPermission.None;
|
|
|
|
return result;
|
|
}
|
|
|
|
public override bool CanConvert(Type objectType)
|
|
{
|
|
// NOTE: Not sure if this is what is supposed to be returned
|
|
// This method wasn't called in my (Sharparam) tests so unsure what it does
|
|
return objectType == typeof (ModeratorPermission);
|
|
}
|
|
}
|
|
}
|