redd 0.8.8 → 0.9.0.pre.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.rubocop.yml +4 -1
- data/CONTRIBUTING.md +63 -0
- data/Guardfile +7 -0
- data/README.md +6 -5
- data/Rakefile +1 -1
- data/TODO.md +423 -0
- data/bin/console +91 -77
- data/bin/guard +2 -0
- data/lib/redd.rb +7 -5
- data/lib/redd/api_client.rb +2 -3
- data/lib/redd/auth_strategies/auth_strategy.rb +7 -2
- data/lib/redd/auth_strategies/script.rb +7 -0
- data/lib/redd/auth_strategies/userless.rb +7 -0
- data/lib/redd/auth_strategies/web.rb +6 -1
- data/lib/redd/client.rb +0 -3
- data/lib/redd/errors.rb +56 -0
- data/lib/redd/middleware.rb +10 -8
- data/lib/redd/models/access.rb +30 -18
- data/lib/redd/models/comment.rb +185 -27
- data/lib/redd/models/front_page.rb +16 -36
- data/lib/redd/models/gildable.rb +1 -1
- data/lib/redd/models/inboxable.rb +13 -3
- data/lib/redd/models/listing.rb +27 -6
- data/lib/redd/models/live_thread.rb +76 -23
- data/lib/redd/models/live_update.rb +46 -0
- data/lib/redd/models/messageable.rb +1 -1
- data/lib/redd/models/mod_action.rb +59 -0
- data/lib/redd/models/model.rb +23 -0
- data/lib/redd/models/moderatable.rb +6 -6
- data/lib/redd/models/modmail.rb +61 -0
- data/lib/redd/models/modmail_conversation.rb +154 -0
- data/lib/redd/models/modmail_message.rb +35 -0
- data/lib/redd/models/more_comments.rb +29 -5
- data/lib/redd/models/multireddit.rb +63 -20
- data/lib/redd/models/paginated_listing.rb +113 -0
- data/lib/redd/models/postable.rb +11 -13
- data/lib/redd/models/private_message.rb +78 -11
- data/lib/redd/models/replyable.rb +2 -2
- data/lib/redd/models/reportable.rb +14 -0
- data/lib/redd/models/searchable.rb +2 -2
- data/lib/redd/models/self.rb +17 -0
- data/lib/redd/models/session.rb +75 -31
- data/lib/redd/models/submission.rb +309 -56
- data/lib/redd/models/subreddit.rb +330 -103
- data/lib/redd/models/trophy.rb +34 -0
- data/lib/redd/models/user.rb +185 -46
- data/lib/redd/models/wiki_page.rb +37 -16
- data/lib/redd/utilities/error_handler.rb +13 -13
- data/lib/redd/utilities/unmarshaller.rb +7 -5
- data/lib/redd/version.rb +1 -1
- data/redd.gemspec +18 -15
- metadata +82 -16
- data/lib/redd/error.rb +0 -53
- data/lib/redd/models/basic_model.rb +0 -80
- data/lib/redd/models/lazy_model.rb +0 -75
- data/lib/redd/models/mod_mail.rb +0 -142
- data/lib/redd/utilities/stream.rb +0 -61
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2390ae91194cc27f480a767e8d3c6aeaf8f4d649
|
4
|
+
data.tar.gz: ff8f69a3280a4403094fb6f5836167a6810704df
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 24cb20848f3d9c6b863b6b37f91b44380dca1eeacbfd1387568ee4b745e85e3e6e87c960a8cdd43e41a6ce821ab0a31fa68447629aa58d33656c86bce7959dfd
|
7
|
+
data.tar.gz: d3ece323ea83e671ea7f618fad231a29fbf9ba50b5cb1fdf138f49636907280fe8b9b726c41fb10acdb07830f50253f56269a6b13d713149edba06cffe2d2f86
|
data/.rubocop.yml
CHANGED
data/CONTRIBUTING.md
ADDED
@@ -0,0 +1,63 @@
|
|
1
|
+
# Contributing
|
2
|
+
|
3
|
+
This is the documentation that contains information on contributing to Redd.
|
4
|
+
Note that I would appreciate contributions to this document itself.
|
5
|
+
|
6
|
+
There isn't an official code of conduct, just
|
7
|
+
[don't be a dick](https://twitter.com/wilw/status/5966220832).
|
8
|
+
|
9
|
+
### Filing an Issue / Making a Pull Request
|
10
|
+
|
11
|
+
**The quickest way to get a feature into Redd is by raising an issue.**
|
12
|
+
|
13
|
+
Please try to provide as much information as possible when submitting an
|
14
|
+
issue. I'm not going to get mad if the issue is inconsequential, so don't
|
15
|
+
hesitate to ask even simple questions about the gem.
|
16
|
+
|
17
|
+
When making a pull request, you don't really have to write tests for the
|
18
|
+
time being (what a relief for you!). Just make sure you have manually tested
|
19
|
+
the call yourself and rubocop doesn't whine about it too much.
|
20
|
+
|
21
|
+
### Architecture
|
22
|
+
The central part of the gem is the `Client`. It knows how to make HTTP
|
23
|
+
requests. For specific reddit behaviour, there is a subclass named
|
24
|
+
`APIClient`. Keep in mind that neither of these are actually aware of the API
|
25
|
+
methods, just how to interact with the API.
|
26
|
+
|
27
|
+
To simplify the architecture as much as humanly possible, everything is
|
28
|
+
represented as a model. A model holds a client and some attributes. It has
|
29
|
+
some methods that make API requests using the client and maybe some of its
|
30
|
+
attributes.
|
31
|
+
|
32
|
+
Each authentication method has an `AuthStrategy` associated with it. This only
|
33
|
+
provides API keys and is aware of the OAuth2 protocol.
|
34
|
+
|
35
|
+
The `Redd.it` method combines all of these:
|
36
|
+
|
37
|
+
1. It creates an `AuthStrategy`.
|
38
|
+
2. It creates an `APIClient` using the `AuthStrategy`.
|
39
|
+
3. It creates a `Session` model using the `APIClient`.
|
40
|
+
4. It returns the created `Session`.
|
41
|
+
|
42
|
+
This seems complicated but trust me on this, this gem has gone through three
|
43
|
+
rewrites.
|
44
|
+
|
45
|
+
### Reddit API
|
46
|
+
|
47
|
+
Here are some links where you can find helpful information about the reddit
|
48
|
+
API:
|
49
|
+
|
50
|
+
1. [API reference](https://www.reddit.com/dev/api)
|
51
|
+
2. [GitHub Wiki](https://github.com/reddit/reddit/wiki/API)
|
52
|
+
3. [API Subreddit](https://www.reddit.com/r/redditdev)
|
53
|
+
|
54
|
+
### Testing
|
55
|
+
|
56
|
+
Unit testing has turned out to be ultimately pointless; the API is a total
|
57
|
+
mess and requires a deep knowledge of how reddit works. Testing the multitude
|
58
|
+
of parameters that each call takes, it's safe to assume individual unit tests
|
59
|
+
will span a few thousand lines and be incredibly brittle. So when you submit a
|
60
|
+
pull-request, I expect you to have *manually tested the calls yourself*.
|
61
|
+
|
62
|
+
To help you, there is a console that can be found at `./bin/console`. Give it
|
63
|
+
a shot — I think you'll love it!
|
data/Guardfile
ADDED
data/README.md
CHANGED
@@ -31,6 +31,8 @@
|
|
31
31
|
|
32
32
|
### Demo
|
33
33
|
|
34
|
+
#### Reddit Bot
|
35
|
+
|
34
36
|
```ruby
|
35
37
|
require 'redd'
|
36
38
|
|
@@ -42,7 +44,7 @@ session = Redd.it(
|
|
42
44
|
password: 'hunter2'
|
43
45
|
)
|
44
46
|
|
45
|
-
session.subreddit('all').
|
47
|
+
session.subreddit('all').comments.stream do |comment|
|
46
48
|
if comment.body.include?('roll a dice')
|
47
49
|
comment.reply("It's a #{rand(1..6)}!")
|
48
50
|
elsif comment.body.include?('flip a coin')
|
@@ -51,6 +53,8 @@ session.subreddit('all').comment_stream do |comment|
|
|
51
53
|
end
|
52
54
|
```
|
53
55
|
|
56
|
+
#### Web Application
|
57
|
+
|
54
58
|
```ruby
|
55
59
|
require 'sinatra'
|
56
60
|
require 'redd/middleware'
|
@@ -98,10 +102,7 @@ end
|
|
98
102
|
Check out the [**official subreddit**](https://www.reddit.com/r/Redd) or raise a [**GitHub issue**](https://github.com/avinashbot/redd/issues/new).
|
99
103
|
|
100
104
|
#### How do I request a feature / contribute?
|
101
|
-
|
102
|
-
- The quickest way to get a feature into Redd is to raise a [**GitHub issue**](https://github.com/avinashbot/redd/issues/new).
|
103
|
-
- Pull requests are also appreciated!
|
104
|
-
- Don't hesitate! There are no stupid questions!
|
105
|
+
Take a look at [**CONTRIBUTING.md**](https://github.com/avinashbot/redd/blob/master/CONTRIBUTING.md).
|
105
106
|
|
106
107
|
#### How can I contact you?
|
107
108
|
[Reddit](https://www.reddit.com/message/compose/?to=Mustermind) /
|
data/Rakefile
CHANGED
data/TODO.md
ADDED
@@ -0,0 +1,423 @@
|
|
1
|
+
# TODO
|
2
|
+
|
3
|
+
This page contains all the calls from the reddit api along with their
|
4
|
+
implementations in Redd. The API docs are located
|
5
|
+
[**here**](https://www.reddit.com/dev/api).
|
6
|
+
|
7
|
+
## Account
|
8
|
+
|
9
|
+
- **GET /api/v1/me**
|
10
|
+
- **Implemented**: [Redd::Models::Session#me](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/Session#me-instance_method)
|
11
|
+
- **GET /api/v1/me/karma**
|
12
|
+
- **Implemented**: [Redd::Models::Session#karma_breakdown](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/Session#karma_breakdown-instance_method)
|
13
|
+
- **GET /api/v1/me/prefs**
|
14
|
+
- **Implemented**: [Redd::Models::Session#my_preferences](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/Session#my_preferences-instance_method)
|
15
|
+
- **PATCH /api/v1/me/prefs**
|
16
|
+
- **Implemented**: [Redd::Models::Session#edit_preferences](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/Session#edit_preferences-instance_method)
|
17
|
+
- **GET /api/v1/me/trophies**
|
18
|
+
- **Won't Implement**: Already implemented for User.
|
19
|
+
- **GET /prefs/where**
|
20
|
+
- **Partially Implemented**: [Redd::Models::Session](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/Session) (for friends, blocked, and trusted)
|
21
|
+
|
22
|
+
## Captcha
|
23
|
+
|
24
|
+
- **GET /api/needs_captcha**
|
25
|
+
- **Won't Implement**: Not necessary for OAuth2 clients
|
26
|
+
|
27
|
+
## Flair
|
28
|
+
|
29
|
+
- **POST [/r/subreddit]/api/clearflairtemplates**
|
30
|
+
- **Not Implemented**
|
31
|
+
- **POST [/r/subreddit]/api/deleteflair**
|
32
|
+
- **Implemented**: [Redd::Models::Subreddit#delete_flair](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/Subreddit#delete_flair-instance_method)
|
33
|
+
- **POST [/r/subreddit]/api/deleteflairtemplate**
|
34
|
+
- **Not Implemented**
|
35
|
+
- **POST [/r/subreddit]/api/flair**
|
36
|
+
- **Implemented**: [Redd::Models::Subreddit#set_flair](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/Subreddit#set_flair-instance_method)
|
37
|
+
- **POST [/r/subreddit]/api/flairconfig**
|
38
|
+
- **Not Implemented**
|
39
|
+
- **POST [/r/subreddit]/api/flaircsv**
|
40
|
+
- **Not Implemented**
|
41
|
+
- **GET [/r/subreddit]/api/flairlist**
|
42
|
+
- **Implemented**: [Redd::Models::Subreddit#flair_listing](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/Subreddit#flair_listing-instance_method)
|
43
|
+
- **POST [/r/subreddit]/api/flairselector**
|
44
|
+
- **Not Implemented**
|
45
|
+
- **POST [/r/subreddit]/api/flairtemplate**
|
46
|
+
- **Not Implemented**
|
47
|
+
- **GET [/r/subreddit]/api/link_flair**
|
48
|
+
- **Not Implemented**
|
49
|
+
- **POST [/r/subreddit]/api/selectflair**
|
50
|
+
- **Implemented**: [Redd::Models::Subreddit#set_flair_template](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/Subreddit#set_flair_template-instance_method)
|
51
|
+
- **POST [/r/subreddit]/api/setflairenabled**
|
52
|
+
- **Not Implemented**
|
53
|
+
- **GET [/r/subreddit]/api/user_flair**
|
54
|
+
- **Not Implemented**
|
55
|
+
|
56
|
+
## Reddit Gold
|
57
|
+
|
58
|
+
- **POST /api/v1/gold/gild/fullname**
|
59
|
+
- **Implemented**: [Redd::Models::Gildable#gild](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/Gildable#gild-instance_method)
|
60
|
+
- **POST /api/v1/gold/give/username**
|
61
|
+
- **Implemented**: [Redd::Models::User#gift_gold](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/User#gift_gold-instance_method)
|
62
|
+
|
63
|
+
## Links & Comments
|
64
|
+
|
65
|
+
- **POST /api/comment**
|
66
|
+
- **Implemented**: [Redd::Models::Replyable#reply](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/Replyable#reply-instance_method)
|
67
|
+
- **POST /api/del**
|
68
|
+
- **Implemented**: [Redd::Models::Postable#delete](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/Postable#delete-instance_method)
|
69
|
+
- **POST /api/editusertext**
|
70
|
+
- **Implemented**: [Redd::Models::Postable#edit](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/Postable#edit-instance_method)
|
71
|
+
- **POST /api/hide**
|
72
|
+
- **Implemented**: [Redd::Models::Postable#hide](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/Postable#hide-instance_method)
|
73
|
+
- **GET [/r/subreddit]/api/info**
|
74
|
+
- **Implemented**
|
75
|
+
- [Redd::Models::Session#from_fullnames](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/Session#from_fullnames-instance_method)
|
76
|
+
- Also implemented as part of lazy loaders.
|
77
|
+
- **POST /api/lock**
|
78
|
+
- **Implemented**: [Redd::Models::Submission#lock](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/Submission#lock-instance_method)
|
79
|
+
- **POST /api/marknsfw**
|
80
|
+
- **Implemented**: [Redd::Models::Submission#mark_as_nsfw](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/Submission#mark_as_nsfw-instance_method)
|
81
|
+
- **GET /api/morechildren**
|
82
|
+
- TODO: add implementation/documentation link
|
83
|
+
- **POST /api/report**
|
84
|
+
- **Implemented**: [Redd::Models::Reportable#report](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/Reportable#report-instance_method)
|
85
|
+
- **POST /api/save**
|
86
|
+
- **Implemented**: [Redd::Models::Postable#save](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/Postable#save-instance_method)
|
87
|
+
- **GET /api/saved_categories**
|
88
|
+
- **Implemented**: [Redd::Models::Session#saved_categories](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/Session#saved_categories-instance_method)
|
89
|
+
- **POST /api/sendreplies**
|
90
|
+
- **Implemented**: [Redd::Models::Postable#enable_inbox_replies](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/Postable#enable_inbox_replies-instance_method)
|
91
|
+
- **POST /api/set_contest_mode**
|
92
|
+
- **Implemented**: [Redd::Models::Submission#enable_contest_mode](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/Submission#enable_contest_mode-instance_method)
|
93
|
+
- **POST /api/set_subreddit_sticky**
|
94
|
+
- **Implemented**: [Redd::Models::Submission#make_sticky](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/Submission#make_sticky-instance_method)
|
95
|
+
- **POST /api/set_suggested_sort**
|
96
|
+
- **Implemented**: [Redd::Models::Submission#set_suggested_sort](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/Submission#set_suggested_sort-instance_method)
|
97
|
+
- **POST /api/spoiler**
|
98
|
+
- **Implemented**: [Redd::Models::Submission#mark_as_spoiler](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/Submission#mark_as_spoiler-instance_method)
|
99
|
+
- **POST /api/store_visits**
|
100
|
+
- **Not Implemented**
|
101
|
+
- **POST /api/submit**
|
102
|
+
- **Implemented**: [Redd::Models::Subreddit#submit](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/Subreddit#submit-instance_method)
|
103
|
+
- **POST /api/unhide**
|
104
|
+
- **Implemented**: [Redd::Models::Postable#unhide](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/Postable#unhide-instance_method)
|
105
|
+
- **POST /api/unlock**
|
106
|
+
- **Implemented**: [Redd::Models::Submission#unlock](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/Submission#unlock-instance_method)
|
107
|
+
- **POST /api/unmarknsfw**
|
108
|
+
- **Implemented**: [Redd::Models::Submission#unmark_as_nsfw](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/Submission#unmark_as_nsfw-instance_method)
|
109
|
+
- **POST /api/unsave**
|
110
|
+
- **Implemented**: [Redd::Models::Postable#unsave](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/Postable#unsave-instance_method)
|
111
|
+
- **POST /api/unspoiler**
|
112
|
+
- **Implemented**: [Redd::Models::Submission#unmark_as_spoiler](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/Submission#unmark_as_spoiler-instance_method)
|
113
|
+
- **POST /api/vote**
|
114
|
+
- **Implemented**:
|
115
|
+
- [Redd::Models::Postable#upvote](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/Postable#upvote-instance_method)
|
116
|
+
- [Redd::Models::Postable#downvote](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/Postable#downvote-instance_method)
|
117
|
+
- [Redd::Models::Postable#undo_vote](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/Postable#undo_vote-instance_method)
|
118
|
+
|
119
|
+
## Listings
|
120
|
+
|
121
|
+
- **GET /api/trending_subreddits**
|
122
|
+
- **Implemented**: [Redd::Models::Session#trending_subreddits](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/Session#trending_subreddits-instance_method)
|
123
|
+
- **GET /by_id/names**
|
124
|
+
- **Not Implemented**: See `/api/info`.
|
125
|
+
- **GET [/r/subreddit]/comments/article**
|
126
|
+
- **Implemented**: Part of lazy-loading in Submission and Comment.
|
127
|
+
- **GET /duplicates/article**
|
128
|
+
- **Implemented**: [Redd::Models::Submission#duplicates](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/Submission#duplicates-instance_method)
|
129
|
+
- **GET [/r/subreddit]/hot**
|
130
|
+
- **Implemented**: [Redd::Models::FrontPage#hot](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/FrontPage#hot-instance_method)
|
131
|
+
- **Implemented**: [Redd::Models::Submission#hot](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/Submission#hot-instance_method)
|
132
|
+
- **GET [/r/subreddit]/new**
|
133
|
+
- **Implemented**: [Redd::Models::FrontPage#new](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/FrontPage#new-instance_method)
|
134
|
+
- **Implemented**: [Redd::Models::Submission#new](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/Submission#new-instance_method)
|
135
|
+
- **GET [/r/subreddit]/random**
|
136
|
+
- **Implemented**: [Redd::Models::FrontPage#random](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/FrontPage#random-instance_method)
|
137
|
+
- **Implemented**: [Redd::Models::Submission#random](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/Submission#random-instance_method)
|
138
|
+
- **GET [/r/subreddit]/rising**
|
139
|
+
- **Implemented**: [Redd::Models::FrontPage#rising](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/FrontPage#rising-instance_method)
|
140
|
+
- **Implemented**: [Redd::Models::Submission#rising](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/Submission#rising-instance_method)
|
141
|
+
- **GET [/r/subreddit]/sort**
|
142
|
+
- **Implemented**: [Redd::Models::FrontPage#listing](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/FrontPage#listing-instance_method)
|
143
|
+
- **Implemented**: [Redd::Models::Submission#listing](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/Submission#listing-instance_method)
|
144
|
+
|
145
|
+
## Live Threads
|
146
|
+
|
147
|
+
- **GET /api/live/by_id/names**
|
148
|
+
- **Not Implemented**
|
149
|
+
- **POST /api/live/create**
|
150
|
+
- **Not Implemented**
|
151
|
+
- **GET /api/live/happening_now**
|
152
|
+
- **Not Implemented**
|
153
|
+
- **POST /api/live/thread/accept_contributor_invite**
|
154
|
+
- **Not Implemented**
|
155
|
+
- **POST /api/live/thread/close_thread**
|
156
|
+
- **Not Implemented**
|
157
|
+
- **POST /api/live/thread/delete_update**
|
158
|
+
- **Implemented**: [Redd::Models::LiveThread#delete_update](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/LiveThread#delete_update-instance_method)
|
159
|
+
- **POST /api/live/thread/edit**
|
160
|
+
- **Implemented**: [Redd::Models::LiveThread#configure](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/LiveThread#configure-instance_method)
|
161
|
+
- **POST /api/live/thread/invite_contributor**
|
162
|
+
- **Not Implemented**
|
163
|
+
- **POST /api/live/thread/leave_contributor**
|
164
|
+
- **Not Implemented**
|
165
|
+
- **POST /api/live/thread/report**
|
166
|
+
- **Not Implemented**
|
167
|
+
- **POST /api/live/thread/rm_contributor**
|
168
|
+
- **Not Implemented**
|
169
|
+
- **POST /api/live/thread/rm_contributor_invite**
|
170
|
+
- **Not Implemented**
|
171
|
+
- **POST /api/live/thread/set_contributor_permissions**
|
172
|
+
- **Not Implemented**
|
173
|
+
- **POST /api/live/thread/strike_update**
|
174
|
+
- **Implemented**: [Redd::Models::LiveThread#strike_update](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/LiveThread#strike_update-instance_method)
|
175
|
+
- **POST /api/live/thread/update**
|
176
|
+
- **Implemented**: [Redd::Models::LiveThread#update](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/LiveThread#update-instance_method)
|
177
|
+
- **GET /live/thread**
|
178
|
+
- **Implemented**: [Redd::Models::LiveThread#updates](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/LiveThread#updates-instance_method)
|
179
|
+
- **GET /live/thread/about**
|
180
|
+
- **Implemented**: [Redd::Models::Session#live_thread](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/Session#live_thread-instance_method)
|
181
|
+
- **GET /live/thread/contributors**
|
182
|
+
- **Implemented**: [Redd::Models::LiveThread#contributors](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/LiveThread#contributors-instance_method)
|
183
|
+
- **GET /live/thread/discussions**
|
184
|
+
- **Implemented**: [Redd::Models::LiveThread#discussions](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/LiveThread#discussions-instance_method)
|
185
|
+
|
186
|
+
## Private Messages
|
187
|
+
|
188
|
+
- **POST /api/block**
|
189
|
+
- **Implemented**: [Redd::Models::Inboxable#block](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/Inboxable#block-instance_method)
|
190
|
+
- **POST /api/collapse_message**
|
191
|
+
- **Implemented**: [Redd::Models::Inboxable#collapse](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/Inboxable#collapse-instance_method)
|
192
|
+
- **POST /api/compose**
|
193
|
+
- **Implemented**: [Redd::Models::Messageable#send_message](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/Messageable#send_message-instance_method)
|
194
|
+
- **POST /api/del_msg**
|
195
|
+
- **Implemented**: [Redd::Models::PrivateMessage#delete](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/PrivateMessage#delete-instance_method)
|
196
|
+
- **POST /api/read_all_messages**
|
197
|
+
- **Implemented**: [Redd::Models::Session#read_all_messages](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/Session#read_all_messages-instance_method)
|
198
|
+
- **POST /api/read_message**
|
199
|
+
- **Implemented**: [Redd::Models::Inboxable#mark_as_read](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/Inboxable#mark_as_read-instance_method)
|
200
|
+
- **POST /api/unblock_subreddit**
|
201
|
+
- **Not Implemented**
|
202
|
+
- **POST /api/uncollapse_message**
|
203
|
+
- **Implemented**: [Redd::Models::Inboxable#uncollapse](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/Inboxable#uncollapse-instance_method)
|
204
|
+
- **POST /api/unread_message**
|
205
|
+
- **Implemented**: [Redd::Models::Inboxable#mark_as_unread](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/Inboxable#mark_as_unread-instance_method)
|
206
|
+
- **GET /message/where**
|
207
|
+
- **Implemented**: [Redd::Models::Session#my_messages](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/Session#my_messages-instance_method)
|
208
|
+
|
209
|
+
## Miscellaneous
|
210
|
+
|
211
|
+
- **GET /api/v1/scopes**
|
212
|
+
- **Not Implemented**
|
213
|
+
|
214
|
+
## Moderation
|
215
|
+
|
216
|
+
- **GET [/r/subreddit]/about/log**
|
217
|
+
- **Implemented**: [Redd::Models::Subreddit#mod_log](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/Subreddit#mod_log-instance_method)
|
218
|
+
- **GET [/r/subreddit]/about/location**
|
219
|
+
- **Implemented**: [Redd::Models::Subreddit#moderator_listing](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/Subreddit#moderator_listing-instance_method)
|
220
|
+
- **POST [/r/subreddit]/api/accept_moderator_invite**
|
221
|
+
- **Implemented**: [Redd::Models::Subreddit#accept_moderator_invite](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/Subreddit#accept_moderator_invite-instance_method)
|
222
|
+
- **POST /api/approve**
|
223
|
+
- **Implemented**: [Redd::Models::Moderatable#approve](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/Moderatable#approve-instance_method)
|
224
|
+
- **POST /api/distinguish**
|
225
|
+
- **Implemented**: [Redd::Models::Moderatable#distinguish](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/Moderatable#distinguish-instance_method)
|
226
|
+
- **POST /api/ignore_reports**
|
227
|
+
- **Implemented**: [Redd::Models::Moderatable#ignore_reports](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/Moderatable#ignore_reports-instance_method)
|
228
|
+
- **POST /api/leavecontributor**
|
229
|
+
- **Implemented**: [Redd::Models::Subreddit#leave_contributor](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/Subreddit#leave_contributor-instance_method)
|
230
|
+
- **POST /api/leavemoderator**
|
231
|
+
- **Implemented**: [Redd::Models::Subreddit#leave_moderator](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/Subreddit#leave_moderator-instance_method)
|
232
|
+
- **POST /api/mute_message_author**
|
233
|
+
- **Implemented**: [Redd::Models::PrivateMessage#mute_author](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/PrivateMessage#mute_author-instance_method)
|
234
|
+
- **POST /api/remove**
|
235
|
+
- **Implemented**: [Redd::Models::Moderatable#remove](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/Moderatable#remove-instance_method)
|
236
|
+
- **POST /api/unignore_reports**
|
237
|
+
- **Implemented**: [Redd::Models::Moderatable#unignore_reports](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/Moderatable#unignore_reports-instance_method)
|
238
|
+
- **POST /api/unmute_message_author**
|
239
|
+
- **Implemented**: [Redd::Models::PrivateMessage#unmute_author](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/PrivateMessage#unmute_author-instance_method)
|
240
|
+
- **GET [/r/subreddit]/stylesheet**
|
241
|
+
- **Implemented**: [Redd::Models::Subreddit#stylesheet](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/Subreddit#stylesheet-instance_method)
|
242
|
+
|
243
|
+
## New Modmail
|
244
|
+
|
245
|
+
- **POST /api/mod/bulk_read**
|
246
|
+
- **Not Implemented**
|
247
|
+
- **GET /api/mod/conversations**
|
248
|
+
- **Implemented**: [Redd::Models::Modmail#conversations](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/Modmail#conversations-instance_method)
|
249
|
+
- **POST /api/mod/conversations**
|
250
|
+
- **Implemented**: [Redd::Models::Modmail#create](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/Modmail#create-instance_method)
|
251
|
+
- **GET /api/mod/conversations/:conversation_id**
|
252
|
+
- **Implemented**: [Redd::Models::Modmail#get](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/Modmail#get-instance_method)
|
253
|
+
- **POST /api/mod/conversations/:conversation_id**
|
254
|
+
- **Implemented**: [Redd::Models::ModmailConversation#reply](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/ModmailConversation#reply-instance_method)
|
255
|
+
- **POST /api/mod/conversations/:conversation_id/archive**
|
256
|
+
- **Implemented**: [Redd::Models::ModmailConversation#archive](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/ModmailConversation#archive-instance_method)
|
257
|
+
- **DELETE /api/mod/conversations/:conversation_id/highlight**
|
258
|
+
- **Implemented**: [Redd::Models::ModmailConversation#unhighlight](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/ModmailConversation#unhighlight-instance_method)
|
259
|
+
- **POST /api/mod/conversations/:conversation_id/highlight**
|
260
|
+
- **Implemented**: [Redd::Models::ModmailConversation#highlight](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/ModmailConversation#highlight-instance_method)
|
261
|
+
- **POST /api/mod/conversations/:conversation_id/mute**
|
262
|
+
- **Implemented**: [Redd::Models::ModmailConversation#mute](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/ModmailConversation#mute-instance_method)
|
263
|
+
- **POST /api/mod/conversations/:conversation_id/unarchive**
|
264
|
+
- **Implemented**: [Redd::Models::ModmailConversation#unarchive](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/ModmailConversation#unarchive-instance_method)
|
265
|
+
- **POST /api/mod/conversations/:conversation_id/unmute**
|
266
|
+
- **Implemented**: [Redd::Models::ModmailConversation#unmute](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/ModmailConversation#unmute-instance_method)
|
267
|
+
- **GET /api/mod/conversations/:conversation_id/user**
|
268
|
+
- **Not Implemented**
|
269
|
+
- **POST /api/mod/conversations/read**
|
270
|
+
- **Partially Implemented**: [Redd::Models::ModmailConversation#mark_as_read](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/ModmailConversation#mark_as_read-instance_method)
|
271
|
+
- Bulk read not implemented
|
272
|
+
- **GET /api/mod/conversations/subreddits**
|
273
|
+
- **Implemented**: [Redd::Models::Modmail#enrolled](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/Modmail#enrolled-instance_method)
|
274
|
+
- **POST /api/mod/conversations/unread**
|
275
|
+
- **Partially Implemented**: [Redd::Models::ModmailConversation#mark_as_unread](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/ModmailConversation#mark_as_unread-instance_method)
|
276
|
+
- Bulk unread not implemented
|
277
|
+
- **GET /api/mod/conversations/unread/count**
|
278
|
+
- **Implemented**: [Redd::Models::Modmail#unread_count](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/Modmail#unread_count-instance_method)
|
279
|
+
|
280
|
+
## Multis
|
281
|
+
|
282
|
+
- **POST /api/multi/copy**
|
283
|
+
- **Not Implemented**
|
284
|
+
- **GET /api/multi/mine**
|
285
|
+
- **Not Implemented**
|
286
|
+
- **POST /api/multi/rename**
|
287
|
+
- **Not Implemented**
|
288
|
+
- **GET /api/multi/user/username**
|
289
|
+
- **Not Implemented**
|
290
|
+
- **DELETE /api/multi/multipath**
|
291
|
+
- **Not Implemented**
|
292
|
+
- **GET /api/multi/multipath**
|
293
|
+
- **Implemented**: [Redd::Models::Session#multi](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/Session#multi-instance_method)
|
294
|
+
- **POST /api/multi/multipath**
|
295
|
+
- **Not Implemented**
|
296
|
+
- **PUT /api/multi/multipath**
|
297
|
+
- **Not Implemented**
|
298
|
+
- **GET /api/multi/multipath/description**
|
299
|
+
- **Not Implemented**
|
300
|
+
- **PUT /api/multi/multipath/description**
|
301
|
+
- **Not Implemented**
|
302
|
+
- **DELETE /api/multi/multipath/r/srname**
|
303
|
+
- **Not Implemented**
|
304
|
+
- **GET /api/multi/multipath/r/srname**
|
305
|
+
- **Not Implemented**
|
306
|
+
- **PUT /api/multi/multipath/r/srname**
|
307
|
+
- **Not Implemented**
|
308
|
+
|
309
|
+
## Search
|
310
|
+
|
311
|
+
- **GET [/r/subreddit]/search**
|
312
|
+
- **Implemented**: [Redd::Models::Searchable#search](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/Searchable#search-instance_method)
|
313
|
+
|
314
|
+
## Subreddits
|
315
|
+
|
316
|
+
- **GET [/r/subreddit]/about/where**
|
317
|
+
- **Implemented**: [Redd::Models::Subreddit#relationship_listing](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/Subreddit#relationship_listing-instance_method)
|
318
|
+
- **POST [/r/subreddit]/api/delete_sr_banner**
|
319
|
+
- **Implemented**: [Redd::Models::Subreddit#delete_image](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/Subreddit#delete_image-instance_method)
|
320
|
+
- **POST [/r/subreddit]/api/delete_sr_header**
|
321
|
+
- **Implemented**: [Redd::Models::Subreddit#delete_image](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/Subreddit#delete_image-instance_method)
|
322
|
+
- **POST [/r/subreddit]/api/delete_sr_icon**
|
323
|
+
- **Implemented**: [Redd::Models::Subreddit#delete_image](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/Subreddit#delete_image-instance_method)
|
324
|
+
- **POST [/r/subreddit]/api/delete_sr_img**
|
325
|
+
- **Implemented**: [Redd::Models::Subreddit#delete_image](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/Subreddit#delete_image-instance_method)
|
326
|
+
- **GET /api/recommend/sr/srnames**
|
327
|
+
- **Not Implemented**
|
328
|
+
- **POST /api/search_reddit_names**
|
329
|
+
- **Not Implemented**
|
330
|
+
- **POST /api/search_subreddits**
|
331
|
+
- **Not Implemented**
|
332
|
+
- **POST /api/site_admin**
|
333
|
+
- **Implemented**: [Redd::Models::Subreddit#modify_settings](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/Subreddit#modify_settings-instance_method)
|
334
|
+
- **GET [/r/subreddit]/api/submit_text**
|
335
|
+
- **Won't Implement**: Already covered by the Subreddit model.
|
336
|
+
- **GET /api/subreddit_autocomplete**
|
337
|
+
- **Not Implemented**
|
338
|
+
- **POST [/r/subreddit]/api/subreddit_stylesheet**
|
339
|
+
- **Implemented**: [Redd::Models::Subreddit#update_stylesheet](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/Subreddit#update_stylesheet-instance_method)
|
340
|
+
- **GET /api/subreddits_by_topic**
|
341
|
+
- **Not Implemented**
|
342
|
+
- **POST /api/subscribe**
|
343
|
+
- **Implemented**: [Redd::Models::Subreddit#subscribe](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/Subreddit#subscribe-instance_method)
|
344
|
+
- **POST [/r/subreddit]/api/upload_sr_img**
|
345
|
+
- **Implemented**: [Redd::Models::Subreddit#upload_image](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/Subreddit#upload_image-instance_method)
|
346
|
+
- **GET /r/subreddit/about**
|
347
|
+
- **Implemented**: [Redd::Models::Session#subreddit](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/Session#subreddit-instance_method)
|
348
|
+
- **GET /r/subreddit/about/edit**
|
349
|
+
- **Implemented**: [Redd::Models::Subreddit#settings](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/Subreddit#settings-instance_method)
|
350
|
+
- **GET /r/subreddit/about/rules**
|
351
|
+
- **Not Implemented**
|
352
|
+
- **GET /r/subreddit/about/traffic**
|
353
|
+
- **Not Implemented**
|
354
|
+
- **GET [/r/subreddit]/sidebar**
|
355
|
+
- **Won't Implement**: Already covered by Subreddit's "description" property.
|
356
|
+
- **GET [/r/subreddit]/sticky**
|
357
|
+
- **Not Implemented**
|
358
|
+
- **GET /subreddits/mine/where**
|
359
|
+
- **Implemented**: [Redd::Models::Session#my_subreddits](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/Session#my_subreddits-instance_method)
|
360
|
+
- **GET /subreddits/search**
|
361
|
+
- **Not Implemented**
|
362
|
+
- **GET /subreddits/where**
|
363
|
+
- **Not Implemented**
|
364
|
+
- **GET /users/where**
|
365
|
+
- **Not Implemented**
|
366
|
+
|
367
|
+
## Users
|
368
|
+
|
369
|
+
- **POST /api/block_user**
|
370
|
+
- **Implemented**: [Redd::Models::User#block](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/User#block-instance_method)
|
371
|
+
- **POST [/r/subreddit]/api/friend**
|
372
|
+
- **Implemented**: Used in multiple methods.
|
373
|
+
- **POST /api/report_user**
|
374
|
+
- **Not Implemented**
|
375
|
+
- **POST [/r/subreddit]/api/setpermissions**
|
376
|
+
- **Not Implemented**
|
377
|
+
- **POST [/r/subreddit]/api/unfriend**
|
378
|
+
- **Implemented**: Used in multiple methods.
|
379
|
+
- **GET /api/user_data_by_account_ids**
|
380
|
+
- **Not Implemented**: [Redd::Models::Session#from_fullnames](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/Session#from_fullnames-instance_method)
|
381
|
+
- Currently commented out (will uncoment when adding cache check feature to lazy_lazer).
|
382
|
+
- Not implemented for batch calls, only individual.
|
383
|
+
- **GET /api/username_available**
|
384
|
+
- **Implemented**: [Redd::Models::Session#username_available?](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/Session#username_available?-instance_method)
|
385
|
+
- **DELETE /api/v1/me/friends/username**
|
386
|
+
- **Implemented**: [Redd::Models::User#unfriend](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/User#unfriend-instance_method)
|
387
|
+
- **GET /api/v1/me/friends/username**
|
388
|
+
- TODO: add implementation/documentation link
|
389
|
+
- **PUT /api/v1/me/friends/username**
|
390
|
+
- **Implemented**: [Redd::Models::User#friend](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/User#friend-instance_method)
|
391
|
+
- **GET /api/v1/user/username/trophies**
|
392
|
+
- **Implemented**: [Redd::Models::User#trophies](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/User#trophies-instance_method)
|
393
|
+
- **GET /user/username/about**
|
394
|
+
- **Implemented**: [Redd::Models::Session#user](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/Session#user-instance_method)
|
395
|
+
- **GET /user/username/where**
|
396
|
+
- **Implemented**: [Redd::Models::User#listing](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/User#listing-instance_method)
|
397
|
+
|
398
|
+
## Wiki
|
399
|
+
|
400
|
+
- **POST [/r/subreddit]/api/wiki/alloweditor/act**
|
401
|
+
- **Not Implemented**
|
402
|
+
- **POST [/r/subreddit]/api/wiki/edit**
|
403
|
+
- **Implemented**: [Redd::Models::WikiPage#edit](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/WikiPage#edit-instance_method)
|
404
|
+
- **POST [/r/subreddit]/api/wiki/hide**
|
405
|
+
- **Not Implemented**
|
406
|
+
- **POST [/r/subreddit]/api/wiki/revert**
|
407
|
+
- **Not Implemented**
|
408
|
+
- **GET [/r/subreddit]/wiki/discussions/page**
|
409
|
+
- **Not Implemented**
|
410
|
+
- **GET [/r/subreddit]/wiki/pages**
|
411
|
+
- **Implemented**: [Redd::Models::FrontPage#wiki_pages](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/FrontPage#wiki_pages-instance_method)
|
412
|
+
- **Implemented**: [Redd::Models::Subreddit#wiki_pages](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/Subreddit#wiki_pages-instance_method)
|
413
|
+
- **GET [/r/subreddit]/wiki/revisions**
|
414
|
+
- **Not Implemented**
|
415
|
+
- **GET [/r/subreddit]/wiki/revisions/page**
|
416
|
+
- **Not Implemented**
|
417
|
+
- **GET [/r/subreddit]/wiki/settings/page**
|
418
|
+
- **Not Implemented**
|
419
|
+
- **POST [/r/subreddit]/wiki/settings/page**
|
420
|
+
- **Not Implemented**
|
421
|
+
- **GET [/r/subreddit]/wiki/page**
|
422
|
+
- **Implemented**: [Redd::Models::FrontPage#wiki_page](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/FrontPage#wiki_page-instance_method)
|
423
|
+
- **Implemented**: [Redd::Models::Subreddit#wiki_page](http://www.rubydoc.info/github/avinashbot/redd/master/Redd/Models/Subreddit#wiki_page-instance_method)
|