コード例 #1
0
 public static bool MoveTo(this PrivateMessageMetadata metadata, PrivateMessageFolderMetadata folder)
 {
     return(AwfulContentRequest.Messaging.MoveMessage(
                metadata.FolderId,
                folder.FolderId,
                metadata.PrivateMessageId));
 }
コード例 #2
0
        /// <summary>
        /// TODO: ADD SUMMARY.
        /// </summary>
        /// <param name="doc"></param>
        /// <returns></returns>
        public static ICollection <PrivateMessageFolderMetadata> ParseFolderList(HtmlDocument doc)
        {
            List <PrivateMessageFolderMetadata> folders = new List <PrivateMessageFolderMetadata>();
            // get select option nodes
            var top        = doc.DocumentNode;
            var selectNode = top.Descendants("select")
                             .Where(node => node.GetAttributeValue("name", "").Equals("folderid"))
                             .FirstOrDefault();

            if (selectNode != null)
            {
                var optionNodes = selectNode.Descendants("option");
                foreach (var option in optionNodes)
                {
                    try
                    {
                        PrivateMessageFolderMetadata folder = new PrivateMessageFolderMetadata();
                        folder.Messages = new List <PrivateMessageMetadata>();
                        string name  = option.NextSibling.InnerText.Trim();
                        string value = option.GetAttributeValue("value", "");
                        folder.FolderId = value;
                        folder.Name     = name;
                        folders.Add(folder);
                    }
                    catch (Exception) { }
                }
            }
            return(folders);
        }
コード例 #3
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="htmlDocument"></param>
        /// <returns></returns>
        public static PrivateMessageFolderMetadata ParsePrivateMessageFolder(HtmlDocument htmlDocument)
        {
            PrivateMessageFolderMetadata folder = null;
            var top = htmlDocument.DocumentNode;
            var currentFolderNode = top.Descendants("div")
                                    .Where(node => node.GetAttributeValue("class", "").Equals("breadcrumbs"))
                                    .FirstOrDefault();

            if (currentFolderNode != null)
            {
                // *************************************************************
                // THIS IS CURRENTLY BROKEN ON SA -- THE TITLE OF THE FOLDER IS *NOT* WHAT'S DISPLAYED ON THE BREADCRUMBS //
                string name = currentFolderNode.ParseTitleFromBreadcrumbsNode();
                // *************************************************************
                var idString = GetInputValue(top.Descendants("input").ToArray(), "thisfolder");

                folder = new PrivateMessageFolderMetadata()
                {
                    FolderId = idString
                };

                var messages = ParseMessageList(htmlDocument);
                folder.Messages = messages;

                foreach (var message in messages)
                {
                    message.FolderId = folder.FolderId;
                }
            }

            return(folder);
        }
コード例 #4
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="folder"></param>
        public void DeleteFolder(PrivateMessageFolderMetadata folder)
        {
            // folder index = folder id + 1
            int index = -1;

            int.TryParse(folder.FolderId, out index);
            index = index + 1;

            // set folder field to empty
            this.FolderTable[index] = string.Empty;
        }
コード例 #5
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="folder"></param>
        /// <param name="newFolderName"></param>
        public void RenameFolder(PrivateMessageFolderMetadata folder, string newFolderName)
        {
            // folder index = folder id + 1
            int index = -1;

            int.TryParse(folder.FolderId, out index);
            index = index + 1;

            // rename field
            this.FolderTable[index] = newFolderName;
        }
コード例 #6
0
        /// <summary>
        /// TODO: Add summary here.
        /// </summary>
        /// <param name="folderID"></param>
        /// <param name="result"></param>
        public PrivateMessageFolderMetadata FetchFolder(int folderID)
        {
            string url = string.Format("{0}/{1}?folderid={2}", CoreConstants.BASE_URL, CoreConstants.PRIVATE_MESSAGE_URI, folderID);
            var    web = new AwfulWebClient();
            var    doc = web.FetchHtml(url).ToHtmlDocument();
            PrivateMessageFolderMetadata folder = null;

            if (doc != null)
            {
                folder = PrivateMessageParser.ParsePrivateMessageFolder(doc);
            }

            return(folder);
        }
コード例 #7
0
 public static bool DeleteAllMessages(this PrivateMessageFolderMetadata metadata)
 {
     return(AwfulContentRequest.Messaging.DeleteAllMessages(metadata.FolderId,
                                                            metadata.Messages.Select(messsage => messsage.PrivateMessageId)));
 }
コード例 #8
0
 public static bool Delete(this PrivateMessageFolderMetadata metadata)
 {
     return(AwfulContentRequest.Messaging.DeleteFolder(metadata.FolderId));
 }
コード例 #9
0
        public static bool RenameTo(this PrivateMessageFolderMetadata metadata, string name)
        {
            bool success = AwfulContentRequest.Messaging.RenameFolder(metadata.FolderId, name);

            return(success);
        }
コード例 #10
0
 public static PrivateMessageFolderMetadata Refresh(this PrivateMessageFolderMetadata metadata)
 {
     return(AwfulContentRequest.Messaging.LoadFolder(metadata.FolderId));
 }
コード例 #11
0
        public static bool MoveTo(this IEnumerable <PrivateMessageMetadata> messages, PrivateMessageFolderMetadata folder)
        {
            var idList = new List <string>(messages.Count());

            string folderId = messages.First().FolderId;

            foreach (var message in messages)
            {
                if (folderId.Equals(message.FolderId))
                {
                    throw new Exception("All messages must belong to the same folder.");
                }

                idList.Add(message.PrivateMessageId);
            }

            return(AwfulContentRequest.Messaging.MoveMessages(folderId, folder.FolderId, idList));
        }