using System; using System.Threading.Tasks; using Newtonsoft.Json; using Newtonsoft.Json.Linq; namespace RedditSharp.Things { public class AuthenticatedUser : RedditUser { private const string ModeratorUrl = "/reddits/mine/moderator.json"; private const string UnreadMessagesUrl = "/message/unread.json?mark=true&limit=25"; private const string ModQueueUrl = "/r/mod/about/modqueue.json"; private const string UnmoderatedUrl = "/r/mod/about/unmoderated.json"; private const string ModMailUrl = "/message/moderator.json"; private const string MessagesUrl = "/message/messages.json"; private const string InboxUrl = "/message/inbox.json"; private const string SentUrl = "/message/sent.json"; public new AuthenticatedUser Init(Reddit reddit, JToken json, IWebAgent webAgent) { CommonInit(reddit, json, webAgent); JsonConvert.PopulateObject(json["name"] == null ? json["data"].ToString() : json.ToString(), this, reddit.JsonSerializerSettings); return this; } public async new Task InitAsync(Reddit reddit, JToken json, IWebAgent webAgent) { CommonInit(reddit, json, webAgent); await Task.Factory.StartNew(() => JsonConvert.PopulateObject(json["name"] == null ? json["data"].ToString() : json.ToString(), this, reddit.JsonSerializerSettings)); return this; } private void CommonInit(Reddit reddit, JToken json, IWebAgent webAgent) { base.Init(reddit, json, webAgent); } public Listing ModeratorSubreddits { get { return new Listing(Reddit, ModeratorUrl, WebAgent); } } public Listing UnreadMessages { get { return new Listing(Reddit, UnreadMessagesUrl, WebAgent); } } public Listing ModerationQueue { get { return new Listing(Reddit, ModQueueUrl, WebAgent); } } public Listing UnmoderatedLinks { get { return new Listing(Reddit, UnmoderatedUrl, WebAgent); } } public Listing ModMail { get { return new Listing(Reddit, ModMailUrl, WebAgent); } } public Listing PrivateMessages { get { return new Listing(Reddit, MessagesUrl, WebAgent); } } public Listing Inbox { get { return new Listing(Reddit, InboxUrl, WebAgent); } } public Listing Sent { get { return new Listing(Reddit, SentUrl, WebAgent); } } #region Obsolete Getter Methods [Obsolete("Use ModeratorSubreddits property instead")] public Listing GetModeratorReddits() { return ModeratorSubreddits; } [Obsolete("Use UnreadMessages property instead")] public Listing GetUnreadMessages() { return UnreadMessages; } [Obsolete("Use ModerationQueue property instead")] public Listing GetModerationQueue() { return new Listing(Reddit, ModQueueUrl, WebAgent); } public Listing GetUnmoderatedLinks() { return new Listing(Reddit, UnmoderatedUrl, WebAgent); } [Obsolete("Use ModMail property instead")] public Listing GetModMail() { return new Listing(Reddit, ModMailUrl, WebAgent); } [Obsolete("Use PrivateMessages property instead")] public Listing GetPrivateMessages() { return new Listing(Reddit, MessagesUrl, WebAgent); } [Obsolete("Use Inbox property instead")] public Listing GetInbox() { return new Listing(Reddit, InboxUrl, WebAgent); } #endregion Obsolete Getter Methods [JsonProperty("modhash")] public string Modhash { get; set; } [JsonProperty("has_mail")] public bool HasMail { get; set; } [JsonProperty("has_mod_mail")] public bool HasModMail { get; set; } } }