Ejemplo n.º 1
0
        public async void GetContent(int tid, EventHandler <DiscuzEventArgs> eHandler)
        {
            MessageDetail messageDetial = new MessageDetail();

            try
            {
                var methodViewThread = new ViewThread()
                {
                    ThreadID = tid
                };
                var posts = await ApiClient.Execute(methodViewThread);

                var PostID       = posts.First().ID;
                var Title        = posts.First().ThreadID.ToString();
                var Content      = posts.First().Content;
                var Author       = posts.First().Author;
                var AuthorID     = posts.First().AuthorID;
                var AuthorImgURL = posts.First().AuthorImg;
                List <Dictionary <string, string> > messagePhotos = new List <Dictionary <string, string> >();

                var AuthorImgLocalPath = LocalTmpUsersIcon() + "/" + Author + ".gif";
                SaveAndCloseStream(AuthorImgLocalPath, await GetPhotoResponse(GetUserImgUrl(AuthorID)));


                //浏览帖子内容
                foreach (ThreadPost p in posts)
                {
                    //获取所有回复
                    if (!p.IsFirst)
                    {
                        var replyPostID       = posts.First().ID;
                        var replyTitle        = "reply";
                        var replyContent      = posts.First().Content;
                        var replyAuthor       = posts.First().Author;
                        var replyAuthorID     = posts.First().AuthorID;
                        var replyAuthorImgURL = posts.First().AuthorImg;

                        var replyImgLocalPath = LocalTmpUsersIcon() + "/" + replyAuthor + ".gif";
                        SaveAndCloseStream(replyImgLocalPath, await GetPhotoResponse(GetUserImgUrl(replyAuthorID)));
                        messageDetial.AddReply(new MessageProfile(new UserInfo(replyImgLocalPath, replyAuthor), replyPostID, replyTitle, replyContent));
                    }
                    //获取附件
                    if (p.Attachments != null)
                    {
                        foreach (KeyValuePair <string, Attachement> a in p.Attachments)
                        {
                            var Attachments = new Dictionary <string, string>()
                            {
                                { "src", a.Value.Url }
                            };
                            messagePhotos.Add(Attachments);
                        }
                    }
                }

                //保存附件图像
                for (int i = 0; i < messagePhotos.Count; i++)
                {
                    var photoURL       = baseUrl + "/" + messagePhotos[i]["src"];
                    var fileName       = photoURL.Substring(photoURL.LastIndexOf('/') + 1);
                    var localDir       = String.Format("{0}/{1}/", LocalTmpPosts(), Title);
                    var photoLocalPath = localDir + fileName;
                    if (!Directory.Exists(localDir))
                    {
                        Directory.CreateDirectory(localDir);
                    }                                                                            //文件夹不存在,则创建文件夹
                    SaveAndCloseStream(photoLocalPath, GetPhotoResponse(photoURL).Result);
                    messagePhotos[i]["src"] = photoLocalPath;
                }
                messageDetial.SetMessageMainBody(new MessageProfile(new UserInfo(AuthorImgLocalPath, Author), PostID, Title, Content, messagePhotos));
            }
            catch (Exception e) { Console.WriteLine(e); messageDetial = null; }
            finally
            {
                eHandler(this, new DiscuzEventArgs(messageDetial));
            }
        }