示例#1
0
文件: Flair.cs 项目: openemma/reddit
        /// <summary>
        /// 
        /// </summary>
        /// <param name="session"></param>
        /// <param name="sub"></param>
        /// <see cref="https://github.com/reddit/reddit/wiki/API%3A-flairlist"/>
        /// <returns></returns>
        public static FlairListing GetFlair(Session session, string sub, string after, string before)
        {
            // var url = "http://www.reddit.com/api/flairlist?r=" + sub + "&limit=1000&uh=" + session.ModHash;
            var url = "http://www.reddit.com/r/" + sub + "/api/flairlist.json?uh=" + session.ModHash + "&limit=1000";
            if (!string.IsNullOrEmpty(after))
                url += "&after=" + after;

            if (!string.IsNullOrEmpty(before))
                url += "&before=" + before;

            var request = new Request
            {
                Url = url,
                Method = "GET",
                Cookie = session.Cookie
            };

            var json = string.Empty;
            if (request.Execute(out json) != System.Net.HttpStatusCode.OK)
                throw new RedditException(json);

            var o = JObject.Parse(json);

            // convert to a post listing
            var list = FlairListing.FromJson(o["users"]);
            list.Next = o["next"] == null ? string.Empty : o["next"].ToString();
            list.Prev = o["prev"] == null ? string.Empty : o["prev"].ToString();
            return list;
        }
示例#2
0
文件: Thing.cs 项目: openemma/reddit
        /// <summary>
        /// 
        /// </summary>
        /// <param name="session"></param>
        /// <param name="id"></param>
        /// <see cref="https://github.com/reddit/reddit/wiki/API:-report"/>
        internal static void Report(Session session, string id, string modhash)
        {
            // POST

            // id = post thing id
            // uh = modhash
        }
示例#3
0
文件: Search.cs 项目: openemma/reddit
        public static PostListing Query(Session session, string qry, string after, string before)
        {
            var request = new Request
            {
                Url = "http://www.reddit.com/search.json?q=" + qry,
                Method = "GET",
                Cookie = session.Cookie
            };

            var json = string.Empty;
            if (request.Execute(out json) != System.Net.HttpStatusCode.OK)
                throw new RedditException(json);

            var o = JObject.Parse(json);
            return PostListing.FromJson(o);
        }
示例#4
0
文件: Friend.cs 项目: openemma/reddit
        public static PostListing GetPosts(Session session)
        {
            var request = new Request
            {
                Url = "http://www.reddit.com/r/friends/.json",
                Method = "GET",
                Cookie = session.Cookie
            };

            var json = string.Empty;
            if (request.Execute(out json) != System.Net.HttpStatusCode.OK)
                throw new RedditException(json);

            var o = JObject.Parse(json);
            return PostListing.FromJson(o);
        }
示例#5
0
文件: Friend.cs 项目: openemma/reddit
        // List submissions from friends
        /// http://www.reddit.com/r/friends/.json
        /// 
        public static UserListing List(Session session)
        {
            var request = new Request
            {
                Url = "https://ssl.reddit.com/prefs/friends.json",
                Method = "GET",
                Cookie = session.Cookie
            };

            var json = string.Empty;
            if (request.Execute(out json) != System.Net.HttpStatusCode.OK)
                throw new Exception(json);

            var o = JObject.Parse(json);
            var list = UserListing.FromJson(o);
            return list;
        }
示例#6
0
文件: Thing.cs 项目: openemma/reddit
        internal static void UnHide(Session session, string id, string modhash)
        {
            var request = new Request
            {
                Url = "http://www.reddit.com/api/unhide",
                Method = "POST",
                Content = "uh=" + modhash + "&id=" + id,
                Cookie = session.Cookie
            };

            var json = string.Empty;
            if (request.Execute(out json) != System.Net.HttpStatusCode.OK)
                throw new Exception(json);

            if (json != "{}")
                throw new Exception(json);
        }
示例#7
0
文件: Info.cs 项目: openemma/reddit
        /// <summary>
        /// Get information about a URL or domain, find all the stories and comments 
        /// associated within.
        /// </summary>
        /// <param name="session"></param>
        /// <param name="url"></param>
        /// <returns></returns>
        public static PostListing FromUrl(Session session, string url)
        {
            // build the request
            var request = new Request
            {
                Url = "http://www.reddit.com/api/info.json?url=" + url,
                Method = "GET",
                Cookie = session.Cookie
            };

            // execute the request
            var json = string.Empty;
            if (request.Execute(out json) != System.Net.HttpStatusCode.OK)
                throw new Exception(json);

            // convert to a post listing
            var o = JObject.Parse(json);
            return PostListing.FromJson(o);
        }
示例#8
0
文件: Friend.cs 项目: openemma/reddit
        public static void Add(Session session, string username, string id, string modhash)
        {
            id = id.StartsWith("t2_") ? id : "t2_" + id;

            var request = new Request
            {
                Url = "http://www.reddit.com/api/friend?note=",
                Method = "POST",
                Cookie = session.Cookie,
                Content = "name=" + username +
                          "&container=" + id +
                          "&type=friend" +
                          "&uh=" + modhash +
                          "&renderstyle=html"
            };

            var json = string.Empty;
            if (request.Execute(out json) != System.Net.HttpStatusCode.OK)
                throw new RedditException(json);

            var o = JObject.Parse(json);
            // o["jquery"][20][3][0].ToString()
        }
示例#9
0
        /// <summary>
        /// 
        /// </summary>
        /// <param name="session"></param>
        /// <param name="sub"></param>
        /// <param name="after"></param>
        /// <param name="before"></param>
        /// <returns></returns>
        public static SubListing List(Session session, string after = "", string before = "")
        {
            var request = new Request
            {
                Url = "http://www.reddit.com/reddits/.json",
                Method = "GET",
                Cookie = session.Cookie
            };

            var json = string.Empty;
            if (request.Execute(out json) != System.Net.HttpStatusCode.OK)
                throw new RedditException(json);

            var o = JObject.Parse(json);
            return SubListing.FromJson(o);
        }
示例#10
0
文件: Post.cs 项目: TaNeRs/SSSS
 public static void VoteUp(Session session, string id, string modhash)
 {
     Thing.VoteUp(session, id, modhash);
 }
示例#11
0
文件: Search.cs 项目: openemma/reddit
 public static PostListing Query(Session session, string qry, string after)
 {
     return Query(session, qry, after, string.Empty);
 }
示例#12
0
文件: Thing.cs 项目: openemma/reddit
        private static void Vote(Session session, string id, string modhash, int direction)
        {
            var request = new Request
            {
                Url = "http://www.reddit.com/api/vote",
                Method = "POST",
                Content = "uh=" + modhash + "&id=" + id + "&dir=" + direction.ToString(),
                Cookie = session.Cookie
            };

            var json = string.Empty;
            if (request.Execute(out json) != System.Net.HttpStatusCode.OK)
                throw new Exception(json);

            if (json != "{}")
                throw new Exception(json);
        }
示例#13
0
        public static void Read(Session session, params string[] id)
        {
            var request = new Request
            {
                Url = "http://www.reddit.com/api/read_message",
                Method = "POST",
                Cookie = session.Cookie,
                Content = "id=" + string.Join(",", id) + "&uh=" + session.ModHash
            };

            var json = string.Empty;
            if (request.Execute(out json) != System.Net.HttpStatusCode.OK)
                throw new RedditException(json);

            var o = JObject.Parse(json);
        }
示例#14
0
        public static void BanUser(Session session, string sub, string sub_id, string username, string modhash)
        {
            var request = new Request
            {
                Url = "http://www.reddit.com/api/friend",
                Method = "POST",
                Cookie = session.Cookie,
                Content = "action=add" +
                          "&container=" + sub_id +
                          "&type=banned" +
                          "&name=" + username +
                          "&id=#banned" +
                          "&r=" + sub +
                          "&uh=" + modhash +
                          "&renderstyle=html"
            };

            var json = string.Empty;
            if (request.Execute(out json) != System.Net.HttpStatusCode.OK)
                throw new RedditException(json);

            var o = JObject.Parse(json);
        }
示例#15
0
文件: Thing.cs 项目: openemma/reddit
 internal static void VoteNull(Session session, string id, string modhash)
 {
     Vote(session, id, modhash, 0);
 }
示例#16
0
文件: Post.cs 项目: TaNeRs/SSSS
        public static PostListing GetRelated(Session session, string id)
        {
            // Make sure we process the request with the type removed, so
            // we just pass the base-36 ID
            id = id.Replace("t3_", string.Empty);

            // build a request
            var request = new Request
            {
                Url = "http://www.reddit.com/related/" + id + ".json",
                Cookie = session.Cookie
            };

            var json = string.Empty;
            if (request.Execute(out json) != System.Net.HttpStatusCode.OK)
                throw new Exception(json);

            return JsonConvert.DeserializeObject<PostListing>(json);
        }
示例#17
0
文件: Post.cs 项目: TaNeRs/SSSS
 /// <summary>
 /// https://github.com/reddit/reddit/wiki/API:-hide
 /// </summary>
 /// <param name="session"></param>
 /// <param name="id"></param>
 public static void Hide(Session session, string id, string modhash)
 {
     // http://www.reddit.com/api/hide
     Thing.Hide(session, id, modhash);
 }
示例#18
0
文件: Post.cs 项目: TaNeRs/SSSS
        public static PostListing Get(Session session, string id)
        {
            // check this is a link (in the correct format)
            if (!id.StartsWith("t3_"))
                throw new RedditException("ID is not of a link/post");

            // build a request
            var request = new Request
            {
                Url = "http://www.reddit.com/by_id/" + id + ".json",
                Cookie = session.Cookie
            };

            var json = string.Empty;
            if (request.Execute(out json) != System.Net.HttpStatusCode.OK)
                throw new RedditException(json);

            return JsonConvert.DeserializeObject<PostListing>(json);
        }
示例#19
0
        public static MessageListing Unread(Session session)
        {
            //
            var request = new Request
            {
                Method = "GET",
                Cookie = session.Cookie,
                Url = "http://www.reddit.com/message/unread/.json"
            };

            var json = string.Empty;
            if (request.Execute(out json) != System.Net.HttpStatusCode.OK)
                throw new Exception(json);

            var o = JObject.Parse(json);
            return MessageListing.FromJson(o);
        }
示例#20
0
        public static void Send(Session session, Message message, string iden, string captcha)
        {
            var request = new Request
            {
                Url = "http://www.reddit.com/api/compose",
                Method = "POST",
                Cookie = session.Cookie,
                Content = "uh=" + session.ModHash +
                          "&to=" + message.Destination +
                          "&subject=" + message.Subject +
                          "&thing_id=" +
                          "&text=" + message.Body +
                          "&iden=" + iden +
                          "&captcha=" + captcha +
                          "&id=#compose-message" +
                          "&renderstyle=html"
            };

            var json = string.Empty;
            if (request.Execute(out json) != System.Net.HttpStatusCode.OK)
            {

            }

            /*
            {
                "jquery": [
                    [0, 1, "call", ["#compose-message"]],
                    [1, 2, "attr", "find"],
                    [2, 3, "call", [".status"]],
                    [3, 4, "attr", "hide"],
                    [4, 5, "call", []],
                    [5, 6, "attr", "html"],
                    [6, 7, "call", [""]],
                    [7, 8, "attr", "end"],
                    [8, 9, "call", []],
                    [1, 10, "attr", "find"],
                    [10, 11, "call", [".status"]],
                    [11, 12, "attr", "show"],
                    [12, 13, "call", []],
                    [13, 14, "attr", "html"],
                    [14, 15, "call", ["your message has been delivered"]],
                    [15, 16, "attr", "end"],
                    [16, 17, "call", []],
                    [1, 18, "attr", "find"],
                    [18, 19, "call", ["*[name=captcha]"]],
                    [19, 20, "attr", "attr"],
                    [20, 21, "call", ["value", ""]],
                    [21, 22, "attr", "end"],
                    [22, 23, "call", []],
                    [1, 24, "attr", "find"],
                    [24, 25, "call", ["*[name=to]"]],
                    [25, 26, "attr", "attr"],
                    [26, 27, "call", ["value", ""]],
                    [27, 28, "attr", "end"],
                    [28, 29, "call", []],
                    [1, 30, "attr", "find"],
                    [30, 31, "call", ["*[name=text]"]],
                    [31, 32, "attr", "attr"],
                    [32, 33, "call", ["value", ""]],
                    [33, 34, "attr", "end"],
                    [34, 35, "call", []],
                    [1, 36, "attr", "find"],
                    [36, 37, "call", ["*[name=subject]"]],
                    [37, 38, "attr", "attr"],
                    [38, 39, "call", ["value", ""]],
                    [39, 40, "attr", "end"],
                    [40, 41, "call", []]
                ]
            }
             */
        }
示例#21
0
        public static PostListing getUnmoderated(Session session, string sub)
        {
            //

            var request = new Request
            {
                Url = "http://www.reddit.com/r/" + sub + "/about/unmoderated/.json?limit=100",
                Method = "GET",
                Cookie = session.Cookie
            };

            var json = string.Empty;
            if (request.Execute(out json) != System.Net.HttpStatusCode.OK)
                throw new Exception(json);

            var o = JObject.Parse(json);
            return PostListing.FromJson(o);
        }
示例#22
0
 /// <summary>
 /// Search for a subreddit based on it's title and description
 /// </summary>
 /// <param name="session"></param>
 /// <param name="query"></param>
 /// <returns></returns>
 public static SubListing Search(Session session, string subID, string query)
 {
     // http://www.reddit.com/reddits/search.json?q=cats
     throw new NotImplementedException();
 }
示例#23
0
        public static TrafficListing GetTrafficStats(Session session, string sub)
        {
            var request = new Request
            {
                Url = "http://www.reddit.com/r/" + sub + "/about/traffic/.json",
                Method = "GET",
                Cookie = session.Cookie
            };

            // Permission error is not thrown, just a 404
            // {"error": 404}

            throw new NotImplementedException();
        }
示例#24
0
文件: Post.cs 项目: TaNeRs/SSSS
        public static void UnNsfw(Session session, string sub, string id, string modhash)
        {
            var request = new Request
            {
                Url = "http://www.reddit.com/api/unmarknsfw",
                Method = "POST",
                Cookie = session.Cookie,
                Content = "id=" + id +
                          "&executed=unmarked" +
                          "&r=" + sub +
                          "&uh=" + modhash +
                          "&renderstyle=html"
            };

            var json = string.Empty;
            if (request.Execute(out json) != System.Net.HttpStatusCode.OK)
                throw new RedditException(json);

            var o = JObject.Parse(json);
        }
示例#25
0
文件: Thing.cs 项目: openemma/reddit
 internal static void VoteUp(Session session, string id, string modhash)
 {
     Vote(session, id, modhash, 1);
 }
示例#26
0
文件: Post.cs 项目: TaNeRs/SSSS
 public static void UnSave(Session session, string id, string modhash)
 {
     Thing.UnSave(session, id, modhash);
 }
示例#27
0
文件: Post.cs 项目: TaNeRs/SSSS
 /// <summary>
 /// 
 /// </summary>
 /// <param name="session"></param>
 /// <param name="id"></param>
 /// <see cref="https://github.com/reddit/reddit/wiki/API:-report"/>
 public static void Report(Session session, string id, string modhash)
 {
     Thing.Report(session, id, modhash);
 }
示例#28
0
        public static void GetSendForm(Session session, out string iden, out string captcha)
        {
            var request = new Request
            {
                Cookie = session.Cookie,
                Method = "GET",
                Url = "http://www.reddit.com/message/compose"
            };

            var html = string.Empty;
            if (request.Execute(out html) != System.Net.HttpStatusCode.OK)
                throw new Exception(html);

            // use NSOUP to get the iden string and captcha URL
               /// var client = NSoup.NSoupClient.Parse(html);

            //iden = client.Select("#compose-message input[name=iden]").Val();
            //captcha = client.Select("#compose-message img.capimage").Attr("src");

            iden = null;
            captcha = null;
        }
示例#29
0
 public CosineSimilarityForm()
 {
     InitializeComponent();
     session = User.Login(ConfigurationManager.AppSettings["username"], ConfigurationManager.AppSettings["password"]);
 }
示例#30
0
文件: Post.cs 项目: TaNeRs/SSSS
        /// <summary>
        /// 
        /// </summary>
        /// <param name="session"></param>
        /// <param name="post"></param>
        /// <see cref="https://github.com/reddit/reddit/wiki/API"/>
        public static void Submit(Session session, Post post, PostKind kind)
        {
            if (string.IsNullOrEmpty((kind == PostKind.Link ? post.Url : post.SelfText)))
                throw new Exception("No link or self text added to the new post");

            if (string.IsNullOrEmpty(post.SubReddit))
                throw new Exception("No subreddit set");

            if (string.IsNullOrEmpty(post.Title))
                throw new Exception("No title provided");

            var request = new Request
            {
                Url = "http://www.reddit.com/api/submit",
                Method = "POST",
                Cookie = session.Cookie,
                Content = "uh=" + session.ModHash +
                          "&kind=" + (kind == PostKind.Link ? "link" : "self") +
                          "&url=" + (kind == PostKind.Link ? post.Url : post.SelfText) +
                          "&sr=" + post.SubReddit +
                          "&title=" + post.Title +
                          "&r=" + post.SubReddit +
                          "&renderstyle=html"
            };

            var json = string.Empty;
            if (request.Execute(out json) != System.Net.HttpStatusCode.OK)
                throw new Exception(json);

            var o = JObject.Parse(json);

            // Capcha
            // o["jquery"][10][3].ToString()

            // Error Message
            // o["jquery"][12][3].ToString()
        }