Exemplo n.º 1
0
        public async Task <List <Structures.Post> > getPostList(int tid, int numPage)
        {
            string strUrl  = strUrlBaseApi + strPostList + "&tid=" + tid + "&ppp=" + tpp + "&page=" + numPage;
            string strJson = await hc.GetStringAsync(new Uri(strUrl));

            JsonObject             jo         = JsonObject.Parse(strJson);
            JsonArray              postsArray = jo["Variables"].GetObject()["postlist"].GetArray();
            int                    numPosts   = postsArray.Count;
            List <Structures.Post> result     = new List <Structures.Post>();

            arc = strJson;

            // sort posts by lastpost time in ascending order (earlier in the front)
            Helpers.ComparableJsonContainer[] posts = new Helpers.ComparableJsonContainer[numPosts];
            for (int i = 0; i < numPosts; i++)
            {
                JsonObject tmp = postsArray[i].GetObject();
                Helpers.ComparableJsonContainer postTuple = new Helpers.ComparableJsonContainer {
                    obj = tmp, key = int.Parse(tmp["dbdateline"].GetString())
                };
                posts[i] = postTuple;
            }
            IEnumerable <Helpers.ComparableJsonContainer> sortedTTs = posts.OrderBy(tuple => tuple.key);

            foreach (Helpers.ComparableJsonContainer tuple in sortedTTs)
            {
                // replace all img attachments with real urls
                string resultTmp = Helpers.AttachSolver.solve(tuple.obj);
                // replace all html char entities
                resultTmp = Helpers.MyHTMLSolver.removeHTMLCharEntities(resultTmp);
                // replace <br> with <br/> and <img ...> with <img .../>
                resultTmp = Helpers.MyHTMLSolver.completeTags(resultTmp);

                Structures.Post p = new Structures.Post();
                p.htmlMsg        = resultTmp;
                p.strUriAvatar   = Helpers.AvatarFactory.getAvatar(tuple.obj["authorid"].GetString(), true);
                p.strUriAvatar_s = Helpers.AvatarFactory.getAvatar(tuple.obj["authorid"].GetString(), false);
                p.tid            = tuple.obj["tid"].GetString();
                p.authorid       = tuple.obj["authorid"].GetString();
                p.author         = Helpers.MyHTMLSolver.removeHTMLCharEntities(tuple.obj["author"].GetString());
                p.dateline       = Helpers.MyHTMLSolver.removeHTMLCharEntities(tuple.obj["dateline"].GetString());
                p.memberstatus   = Helpers.MyHTMLSolver.removeHTMLCharEntities(tuple.obj["memberstatus"].GetString());
                p.status         = Helpers.MyHTMLSolver.removeHTMLCharEntities(tuple.obj["status"].GetString());
                result.Add(p);
            }
            return(result);
        }
Exemplo n.º 2
0
        public async Task <List <Structures.Thread> > getThreadList(int fid, int numPage)
        {
            string strUrl  = strUrlBaseApi + strThreadList + "&fid=" + fid + "&tpp=" + tpp + "&page=" + numPage;
            string strJson = await hc.GetStringAsync(new Uri(strUrl));

            JsonObject jo                   = JsonObject.Parse(strJson);
            JsonArray  threadsArray         = jo["Variables"].GetObject()["forum_threadlist"].GetArray();
            int        numThreads           = threadsArray.Count;
            List <Structures.Thread> result = new List <Structures.Thread>();

            arc = strJson;

            // sort threads by lastpost time in descending order
            Helpers.ComparableJsonContainer[] threads = new Helpers.ComparableJsonContainer[numThreads];
            for (int i = 0; i < numThreads; i++)
            {
                JsonObject tmp = threadsArray[i].GetObject();
                Helpers.ComparableJsonContainer threadTuple = new Helpers.ComparableJsonContainer {
                    obj = tmp, key = int.Parse(tmp["dblastpost"].GetString())
                };
                threads[i] = threadTuple;
            }
            IEnumerable <Helpers.ComparableJsonContainer> sortedTTs = threads.OrderByDescending(tuple => tuple.key);

            foreach (Helpers.ComparableJsonContainer tuple in sortedTTs)
            {
                Structures.Thread t = new Structures.Thread();
                /// HtmlUtilities.ConvertToText toooooooooooooooooo slow!
                t.tid        = tuple.obj["tid"].GetString();
                t.fid        = fid.ToString();
                t.authorid   = tuple.obj["authorid"].GetString();
                t.author     = Helpers.MyHTMLSolver.removeHTMLCharEntities(tuple.obj["author"].GetString());
                t.subject    = Helpers.MyHTMLSolver.removeHTMLCharEntities(tuple.obj["subject"].GetString());
                t.lastpost   = Helpers.MyHTMLSolver.removeHTMLCharEntities(tuple.obj["lastpost"].GetString());
                t.lastposter = Helpers.MyHTMLSolver.removeHTMLCharEntities(tuple.obj["lastposter"].GetString());
                t.dateline   = Helpers.MyHTMLSolver.removeHTMLCharEntities(tuple.obj["dateline"].GetString());
                t.replies    = Helpers.MyHTMLSolver.removeHTMLCharEntities(tuple.obj["replies"].GetString());
                result.Add(t);
            }
            return(result);
        }