snoo 0.0.7 → 0.1.0.pre.1
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/snoo/flair.rb +32 -35
- data/lib/snoo/links_comments.rb +10 -0
- data/lib/snoo/listings.rb +6 -4
- data/lib/snoo/moderation.rb +4 -4
- data/lib/snoo/pms.rb +0 -4
- data/lib/snoo/subreddits.rb +8 -0
- data/lib/snoo/users.rb +0 -3
- data/lib/snoo/version.rb +1 -1
- metadata +5 -5
data/lib/snoo/flair.rb
CHANGED
@@ -59,30 +59,28 @@ module Snoo
|
|
59
59
|
|
60
60
|
# Configures flair options for a subreddit. All options are required
|
61
61
|
#
|
62
|
-
# @param enabled [true, false] Flair enabled?
|
63
|
-
# @param position [left, right] Position of user flair.
|
64
|
-
# @param self_assign [true, false] Allow users to assign their own flair from templates
|
65
|
-
# @param link_position [none, left, right] The position of link flair. Set to `none` to disable
|
66
|
-
# @param link_assign [true, false] Allow a submitter to assign their own link flair
|
67
62
|
# @param subreddit [String] The subreddit targeted.
|
63
|
+
# @param opts [Hash] An options hash
|
64
|
+
# @option opts [true, false] :flair_enabled (true) Flair enabled?
|
65
|
+
# @option opts [left, right] :flair_position ('right') Position of user flair.
|
66
|
+
# @option opts [true, false] :flair_self_assign_enabled (false) Allow users to assign their own flair from templates
|
67
|
+
# @option opts [none, left, right] :link_flair_position ('right') The position of link flair. Set to `none` to disable
|
68
|
+
# @option opts [true, false] :link_flair_self_assign_enabled (false) Allow a submitter to assign their own link flair
|
68
69
|
# @return (see #clear_sessions)
|
69
|
-
def flair_config
|
70
|
+
def flair_config subreddit, opts = {}
|
70
71
|
logged_in?
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
post('/api/flairconfig', body: {
|
78
|
-
flair_enabled: enabled,
|
79
|
-
flair_position: position,
|
80
|
-
flair_self_assign_enabled: self_assign,
|
81
|
-
link_flair_position: link_position,
|
82
|
-
link_flair_self_assign_enabled: link_assign,
|
72
|
+
options = {
|
73
|
+
flair_enabled: true,
|
74
|
+
flair_position: 'right',
|
75
|
+
flair_self_assign_enabled: false,
|
76
|
+
link_flair_position: 'right',
|
77
|
+
link_flair_self_assign_enabled: false,
|
83
78
|
uh: @modhash,
|
84
79
|
r: subreddit
|
85
|
-
|
80
|
+
}
|
81
|
+
options.merge! opts
|
82
|
+
|
83
|
+
post('/api/flairconfig', body: options)
|
86
84
|
end
|
87
85
|
|
88
86
|
# Post flair in a CSV file to reddit
|
@@ -116,29 +114,28 @@ module Snoo
|
|
116
114
|
|
117
115
|
# Create or edit a flair template.
|
118
116
|
#
|
119
|
-
# @param css_class [String] The list of css classes applied to this style, space separated
|
120
|
-
# @param type [USER_FLAIR, LINK_FLAIR] The type of flair template.
|
121
|
-
# @param text [String] The flair template's text.
|
122
|
-
# @param user_editable [true, false] If the templ
|
123
117
|
# @param subreddit [String] The subreddit targeted.ate allows users to specify their own text
|
124
|
-
# @param
|
118
|
+
# @param opts [Hash] An options hash
|
119
|
+
# @option opts [String] css_class The list of css classes applied to this style, space separated
|
120
|
+
# @option opts [USER_FLAIR, LINK_FLAIR] flair_type ('USER_FLAIR') The type of flair template.
|
121
|
+
# @option opts [String] text The flair template's text.
|
122
|
+
# @option opts [true, false] text_editable (false) If the user is allowed to edit their flair text
|
123
|
+
# @option opts [String] template_id The flair template ID, for editing.
|
125
124
|
# @return (see #clear_sessions)
|
126
|
-
def flair_template
|
125
|
+
def flair_template subreddit, opts = {}
|
127
126
|
logged_in?
|
128
|
-
test = ['USER_FLAIR', 'LINK_FLAIR']
|
129
|
-
raise ArgumentError, 'type is either USER_FLAIR or LINK_FLAIR' unless test.include?(type)
|
130
|
-
test = [true, false]
|
131
|
-
raise ArgumentError, 'user_editable needs to be true or false' unless test.include?(user_editable)
|
132
|
-
|
133
127
|
params = {
|
134
|
-
|
135
|
-
|
136
|
-
text: text,
|
137
|
-
text_editable: user_editable,
|
128
|
+
flair_type: 'USER_FLAIR',
|
129
|
+
text_editable: false,
|
138
130
|
uh: @modhash,
|
139
131
|
r: subreddit
|
140
132
|
}
|
141
|
-
params
|
133
|
+
params.merge! opts
|
134
|
+
test = ['USER_FLAIR', 'LINK_FLAIR']
|
135
|
+
raise ArgumentError, 'type is either USER_FLAIR or LINK_FLAIR' unless test.include?(params[:flair_type])
|
136
|
+
test = [true, false]
|
137
|
+
raise ArgumentError, 'user_editable needs to be true or false' unless test.include?(params[:text_editable])
|
138
|
+
|
142
139
|
post('/api/flairtemplate', body: params)
|
143
140
|
end
|
144
141
|
|
data/lib/snoo/links_comments.rb
CHANGED
@@ -123,6 +123,7 @@ module Snoo
|
|
123
123
|
logged_in?
|
124
124
|
post('/api/unmarknsfw', body: {id: id, uh: @modhash})
|
125
125
|
end
|
126
|
+
alias_method :mark_sfw, :unmark_nsfw
|
126
127
|
|
127
128
|
# Vote on a comment or link
|
128
129
|
#
|
@@ -138,14 +139,23 @@ module Snoo
|
|
138
139
|
# Upvote
|
139
140
|
# An alias for `vote 1, id`
|
140
141
|
#
|
142
|
+
def upvote id
|
143
|
+
vote 1, id
|
144
|
+
end
|
141
145
|
|
142
146
|
# Downvote
|
143
147
|
# An alias for `vote -1, id`
|
144
148
|
#
|
149
|
+
def downvote id
|
150
|
+
vote -1, id
|
151
|
+
end
|
145
152
|
|
146
153
|
# Sidevote (clear your vote)
|
147
154
|
# An alias for `vote 0, id`
|
148
155
|
#
|
156
|
+
def sidevote id
|
157
|
+
vote 0, id
|
158
|
+
end
|
149
159
|
|
150
160
|
end
|
151
161
|
end
|
data/lib/snoo/listings.rb
CHANGED
@@ -8,18 +8,20 @@ module Snoo
|
|
8
8
|
#
|
9
9
|
# @param link_id [String] The link id of the comment thread. Must always be present
|
10
10
|
# @param (see LinksComments#info)
|
11
|
+
# @option opts [String] :subreddit The subreddit to fetch the comments of
|
12
|
+
# @option opts [String] :link_id The link to get the comments of
|
11
13
|
# @option opts [String] :comment_id The parent comment of a thread.
|
12
14
|
# @option opts [Fixnum] :context The context of the thread, that is, how far above the `comment_id` to return
|
13
15
|
# @option opts [Fixnum] :limit (100) The total number of comments to return. If you have gold this can include the whole thread, but is buggy. Recommend no more than 1000
|
14
16
|
# @option opts [Fixnum] :depth How deep to render a comment thread.
|
15
17
|
# @option opts [old, new, hot, top, controversial, best] :sort The sort used.
|
16
18
|
# @return (see #clear_sessions)
|
17
|
-
def get_comments
|
19
|
+
def get_comments opts = {}
|
18
20
|
sorts = %w{old new hot top controversial best}
|
19
21
|
raise ArgumentError, "sort cannot be #{sort}" unless sorts.include?(opts[:sort]) or opts[:sort].nil?
|
20
22
|
query = { limit: 100 }
|
21
23
|
query.merge! opts
|
22
|
-
url = "/comments/%s%s.json" % [link_id, ('/' + opts[:comment_id] if opts[:comment_id])]
|
24
|
+
url = "%s/comments/%s%s.json" % [('/r/' + opts[:subreddit] if opts[:subreddit]), opts[:link_id], ('/' + opts[:comment_id] if opts[:comment_id])]
|
23
25
|
get(url, query: query)
|
24
26
|
end
|
25
27
|
|
@@ -27,7 +29,7 @@ module Snoo
|
|
27
29
|
#
|
28
30
|
# @param (see LinksComments#info)
|
29
31
|
# @option opts [String] :subreddit The subreddit targeted. Can be psuedo-subreddits like `all` or `mod`. If blank, the front page
|
30
|
-
# @option opts [new, controversial, top] :page The page to view.
|
32
|
+
# @option opts [new, controversial, top, saved] :page The page to view.
|
31
33
|
# @option opts [new, rising] :sort The sorting method. Only relevant on the `new` page
|
32
34
|
# @option opts [hour, day, week, month, year] :t The timeframe. Only relevant on some pages, such as `top`. Leave empty for all time
|
33
35
|
# @option opts [1..100] :limit The number of things to return.
|
@@ -35,7 +37,7 @@ module Snoo
|
|
35
37
|
# @option opts [String] :before Get things *before* this thing id
|
36
38
|
# @return (see #clear_sessions)
|
37
39
|
def get_listing opts = {}
|
38
|
-
pages = %w{new controversial top}
|
40
|
+
pages = %w{new controversial top saved}
|
39
41
|
sorts = %w{new rising}
|
40
42
|
times = %w{hour day week month year}
|
41
43
|
# Invalid Page
|
data/lib/snoo/moderation.rb
CHANGED
@@ -16,12 +16,12 @@ module Snoo
|
|
16
16
|
# Distinguish a thing
|
17
17
|
#
|
18
18
|
# @param (see #approve)
|
19
|
-
# @param how [yes, no, admin, special] Determines how to distinguish something. Only works for the permissions you have.
|
19
|
+
# @param how [yes, no, admin, special] (yes) Determines how to distinguish something. Only works for the permissions you have.
|
20
20
|
# @return (see #clear_sessions)
|
21
|
-
def distinguish id, how
|
21
|
+
def distinguish id, how = "yes"
|
22
22
|
logged_in?
|
23
23
|
hows = %w{yes no admin special}
|
24
|
-
raise ArgumentError, "how should be one of #{hows * ', '}, is #{how}"
|
24
|
+
raise ArgumentError, "how should be one of #{hows * ', '}, is #{how}" unless hows.include?(how)
|
25
25
|
post('/api/distinguish', body: {id: id, how: how, uh: @modhash})
|
26
26
|
end
|
27
27
|
|
@@ -50,7 +50,7 @@ module Snoo
|
|
50
50
|
# @param (see #approve)
|
51
51
|
# @param spam [true, false] Mark this removal as a spam removal (and train the spamfilter)
|
52
52
|
# @return (see #clear_sessions)
|
53
|
-
def remove id, spam
|
53
|
+
def remove id, spam = false
|
54
54
|
logged_in?
|
55
55
|
spams = [true, false]
|
56
56
|
raise ArgumentError, "spam should be boolean, is #{spam}" unless spams.include?(spam)
|
data/lib/snoo/pms.rb
CHANGED
@@ -54,10 +54,6 @@ module Snoo
|
|
54
54
|
# @return (see #clear_sessions)
|
55
55
|
def get_messages where = "inbox", opts = {},
|
56
56
|
bools = [true, false]
|
57
|
-
wheres = %w{inbox unread sent}
|
58
|
-
raise ArgumentError, "where must be #{wheres * ', '}, is #{where}" unless wheres.include?(where)
|
59
|
-
raise ArgumentError, "mark must be boolean, is #{opts[:mark]}" unless bools.include?(opts[:mark]) or opts[:mark].nil?
|
60
|
-
raise ArgumentError, "limit must be 1..100, is #{opts[:limit]}" unless (1..100).include?(opts[:limit]) or opts[:limit].nil?
|
61
57
|
|
62
58
|
query = {
|
63
59
|
mark: false
|
data/lib/snoo/subreddits.rb
CHANGED
@@ -238,5 +238,13 @@ module Snoo
|
|
238
238
|
logged_in?
|
239
239
|
get("/r/#{subreddit}/about/banned.json")
|
240
240
|
end
|
241
|
+
|
242
|
+
# Accept a moderatorship
|
243
|
+
#
|
244
|
+
# @param subreddit [String] The subreddit to accept in. You must have been invited
|
245
|
+
def accept_moderator subreddit
|
246
|
+
logged_in?
|
247
|
+
post('/api/accept_moderator_invite', body: {r: subreddit, uh: @modhash})
|
248
|
+
end
|
241
249
|
end
|
242
250
|
end
|
data/lib/snoo/users.rb
CHANGED
@@ -47,9 +47,6 @@ module Snoo
|
|
47
47
|
# @option opts [1..100] :limit Number of results to return
|
48
48
|
# @return (see #clear_sessions)
|
49
49
|
def get_user_listing username, opts = {}
|
50
|
-
raise ArgumentError, "type is invalid" unless %w{overview submitted commented liked disliked hidden saved}.include?(opts[:type]) or opts[:type].nil?
|
51
|
-
raise ArgumentError, "sort is invalid" unless %w{new hot top controversial}.include?(opts[:sort]) or opts[:type].nil?
|
52
|
-
raise ArgumentError, "limit must be within 1..100; is #{opts[:limit]}" unless (1..100).include?(opts[:limit]) or opts[:limit].nil?
|
53
50
|
opts[:type] = 'overview' if opts[:type].nil?
|
54
51
|
url = "/user/%s%s.json" % [username, ('/' + opts[:type] if opts[:type] != 'overview')]
|
55
52
|
opts.delete :type
|
data/lib/snoo/version.rb
CHANGED
metadata
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: snoo
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.1.0.pre.1
|
5
|
+
prerelease: 6
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Jeff Sandberg
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-10-
|
12
|
+
date: 2012-10-17 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: httparty
|
@@ -112,9 +112,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
112
112
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
113
113
|
none: false
|
114
114
|
requirements:
|
115
|
-
- - ! '
|
115
|
+
- - ! '>'
|
116
116
|
- !ruby/object:Gem::Version
|
117
|
-
version:
|
117
|
+
version: 1.3.1
|
118
118
|
requirements: []
|
119
119
|
rubyforge_project:
|
120
120
|
rubygems_version: 1.8.24
|