NeonRAW 0.1.6 → 0.1.7
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/CHANGELOG.md +22 -0
- data/NeonRAW.gemspec +5 -4
- data/lib/NeonRAW/clients/base.rb +9 -7
- data/lib/NeonRAW/clients/base/objectbuilder.rb +8 -5
- data/lib/NeonRAW/clients/base/utilities.rb +36 -3
- data/lib/NeonRAW/clients/installed.rb +2 -0
- data/lib/NeonRAW/clients/script.rb +2 -0
- data/lib/NeonRAW/clients/web.rb +2 -0
- data/lib/NeonRAW/errors.rb +49 -58
- data/lib/NeonRAW/objects/all.rb +20 -2
- data/lib/NeonRAW/objects/comment.rb +19 -5
- data/lib/NeonRAW/objects/inboxcomment.rb +4 -1
- data/lib/NeonRAW/objects/me.rb +17 -28
- data/lib/NeonRAW/objects/modlogaction.rb +3 -0
- data/lib/NeonRAW/objects/modloguser.rb +3 -0
- data/lib/NeonRAW/objects/morecomments.rb +15 -12
- data/lib/NeonRAW/objects/multireddit.rb +4 -1
- data/lib/NeonRAW/objects/popular.rb +57 -0
- data/lib/NeonRAW/objects/privatemessage.rb +6 -3
- data/lib/NeonRAW/objects/rule.rb +3 -0
- data/lib/NeonRAW/objects/submission.rb +44 -5
- data/lib/NeonRAW/objects/subreddit.rb +9 -10
- data/lib/NeonRAW/objects/subreddit/flair.rb +7 -4
- data/lib/NeonRAW/objects/subreddit/moderation.rb +8 -8
- data/lib/NeonRAW/objects/subreddit/utilities.rb +44 -27
- data/lib/NeonRAW/objects/thing/inboxable.rb +1 -1
- data/lib/NeonRAW/objects/thing/moderateable.rb +7 -4
- data/lib/NeonRAW/objects/thing/refreshable.rb +1 -3
- data/lib/NeonRAW/objects/thing/votable.rb +1 -1
- data/lib/NeonRAW/objects/user.rb +51 -19
- data/lib/NeonRAW/objects/wikipage.rb +5 -2
- data/lib/NeonRAW/objects/wikipagerevision.rb +4 -1
- data/lib/NeonRAW/version.rb +1 -1
- metadata +25 -10
@@ -33,8 +33,8 @@ module NeonRAW
|
|
33
33
|
# @note This attribute only exists if the comment is fetched from outside
|
34
34
|
# the thread it was posted in (so like user pages,
|
35
35
|
# /r/subreddit/comments, that type of stuff).
|
36
|
-
# @!attribute [r]
|
37
|
-
# @return [String] Returns the
|
36
|
+
# @!attribute [r] link_name
|
37
|
+
# @return [String] Returns the name of the link that this comment is in.
|
38
38
|
# @!attribute [r] link_title
|
39
39
|
# @return [String] Returns the title of the parent link.
|
40
40
|
# @note This attribute only exists if the comment is fetched from outside
|
@@ -48,8 +48,8 @@ module NeonRAW
|
|
48
48
|
# @!attribute [r] num_reports
|
49
49
|
# @return [Integer, nil] Returns the number of times the comment has been
|
50
50
|
# reported or nil if it hasn't or you aren't a moderator.
|
51
|
-
# @!attribute [r]
|
52
|
-
# @return [String] Returns the
|
51
|
+
# @!attribute [r] parent_name
|
52
|
+
# @return [String] Returns the name of either the link or the comment that
|
53
53
|
# this comment is a reply to.
|
54
54
|
# @!attribute [r] saved?
|
55
55
|
# @return [Boolean] Returns whether or not you saved the comment.
|
@@ -81,9 +81,12 @@ module NeonRAW
|
|
81
81
|
def initialize(client, data)
|
82
82
|
@client = client
|
83
83
|
data.each do |key, value|
|
84
|
+
# for consistency, empty strings/arrays/hashes are set to nil
|
85
|
+
# because most of the keys returned by Reddit are nil when they
|
86
|
+
# don't have a value, besides a few
|
84
87
|
value = nil if ['', [], {}].include?(value)
|
85
88
|
instance_variable_set(:"@#{key}", value)
|
86
|
-
next if
|
89
|
+
next if %i[created created_utc replies].include?(key)
|
87
90
|
self.class.send(:attr_reader, key)
|
88
91
|
end
|
89
92
|
class << self
|
@@ -92,6 +95,8 @@ module NeonRAW
|
|
92
95
|
alias_method :saved?, :saved
|
93
96
|
alias_method :score_hidden?, :score_hidden
|
94
97
|
alias_method :archived?, :archived
|
98
|
+
alias_method :link_name, :link_id
|
99
|
+
alias_method :parent_name, :parent_id
|
95
100
|
end
|
96
101
|
end
|
97
102
|
|
@@ -144,6 +149,15 @@ module NeonRAW
|
|
144
149
|
end
|
145
150
|
comments
|
146
151
|
end
|
152
|
+
|
153
|
+
# Creates the comment's permalink.
|
154
|
+
# @!method permalink
|
155
|
+
# @return [String] Returns the comment's permalink.
|
156
|
+
def permalink
|
157
|
+
submission_id = link_id[3..-1] # trims the t3_ from the fullname
|
158
|
+
# the // is intentional
|
159
|
+
"https://www.reddit.com/r/#{subreddit}/comments/#{submission_id}//#{id}"
|
160
|
+
end
|
147
161
|
end
|
148
162
|
end
|
149
163
|
end
|
@@ -40,9 +40,12 @@ module NeonRAW
|
|
40
40
|
def initialize(client, data)
|
41
41
|
@client = client
|
42
42
|
data.each do |key, value|
|
43
|
+
# for consistency, empty strings/arrays/hashes are set to nil
|
44
|
+
# because most of the keys returned by Reddit are nil when they
|
45
|
+
# don't have a value, besides a few
|
43
46
|
value = nil if ['', [], {}].include?(value)
|
44
47
|
instance_variable_set(:"@#{key}", value)
|
45
|
-
next if
|
48
|
+
next if %i[created created_utc].include?(key)
|
46
49
|
self.class.send(:attr_reader, key)
|
47
50
|
end
|
48
51
|
class << self
|
data/lib/NeonRAW/objects/me.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
require_relative 'user'
|
2
2
|
require_relative 'trophy'
|
3
3
|
require_relative 'multireddit'
|
4
|
-
# rubocop:disable Metrics/AbcSize, Metrics/
|
4
|
+
# rubocop:disable Metrics/AbcSize, Metrics/MethodLength
|
5
5
|
# rubocop:disable Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
|
6
6
|
|
7
7
|
module NeonRAW
|
@@ -34,10 +34,15 @@ module NeonRAW
|
|
34
34
|
# @param data [Hash] The object data.
|
35
35
|
def initialize(client, data)
|
36
36
|
@client = client
|
37
|
+
data[:username] = data.delete(:name) # this is for consistency
|
38
|
+
data[:name] = 't2_' + data[:id]
|
37
39
|
data.each do |key, value|
|
40
|
+
# for consistency, empty strings/arrays/hashes are set to nil
|
41
|
+
# because most of the keys returned by Reddit are nil when they
|
42
|
+
# don't have a value, besides a few
|
38
43
|
value = nil if ['', [], {}].include?(value)
|
39
44
|
instance_variable_set(:"@#{key}", value)
|
40
|
-
next if
|
45
|
+
next if %i[created created_utc].include?(key)
|
41
46
|
self.class.send(:attr_reader, key)
|
42
47
|
end
|
43
48
|
class << self
|
@@ -70,7 +75,7 @@ module NeonRAW
|
|
70
75
|
# @option params :limit [1..1000] The number of listing items to fetch.
|
71
76
|
# @option params :show [String] Literally the string 'all'.
|
72
77
|
# @return [NeonRAW::Objects::Listing] Returns a listing with all your PMs.
|
73
|
-
%w
|
78
|
+
%w[messages inbox unread sent].each do |type|
|
74
79
|
define_method :"#{type}" do |params = { limit: 25 }|
|
75
80
|
@client.send(:build_listing, "/message/#{type}", params)
|
76
81
|
end
|
@@ -88,7 +93,7 @@ module NeonRAW
|
|
88
93
|
# @return [NeonRAW::Objects::Listing] Returns a listing with all your
|
89
94
|
# modmails.
|
90
95
|
def modmail(params = { limit: 25 })
|
91
|
-
@client.send(:build_listing, '/message/moderator
|
96
|
+
@client.send(:build_listing, '/message/moderator', params)
|
92
97
|
end
|
93
98
|
|
94
99
|
# Fetches your subreddits.
|
@@ -104,7 +109,7 @@ module NeonRAW
|
|
104
109
|
# @option params :show [String] Literally the string 'all'.
|
105
110
|
# @return [NeonRAW::Objects::Listing] Returns a listing with all your
|
106
111
|
# subreddits.
|
107
|
-
%w
|
112
|
+
%w[subscribed contributed moderated].each do |type|
|
108
113
|
define_method :"#{type}" do |params = { limit: 25 }|
|
109
114
|
type = 'subscriber' if type == 'subscribed'
|
110
115
|
type = 'contributor' if type == 'contributed'
|
@@ -144,12 +149,8 @@ module NeonRAW
|
|
144
149
|
# @!method trophies
|
145
150
|
# @return [Array<NeonRAW::Objects::Trophy>] Returns a list of trophies.
|
146
151
|
def trophies
|
147
|
-
data_arr = []
|
148
152
|
data = @client.request_data('/api/v1/me/trophies', :get)[:data]
|
149
|
-
data[:trophies].
|
150
|
-
data_arr << Trophy.new(trophy[:data])
|
151
|
-
end
|
152
|
-
data_arr
|
153
|
+
data[:trophies].map { |trophy| Trophy.new(trophy[:data]) }
|
153
154
|
end
|
154
155
|
|
155
156
|
# Fetches your friends.
|
@@ -163,12 +164,8 @@ module NeonRAW
|
|
163
164
|
# @return [Array<Hash<Float, String, String>>] Returns the list of your
|
164
165
|
# friends.
|
165
166
|
def friends(params = { limit: 25 })
|
166
|
-
data_arr = []
|
167
167
|
data = @client.request_data('/prefs/friends', :get, params)
|
168
|
-
data[0][:data][:children].
|
169
|
-
data_arr << friend
|
170
|
-
end
|
171
|
-
data_arr
|
168
|
+
data[0][:data][:children].map { |friend| friend }
|
172
169
|
end
|
173
170
|
|
174
171
|
# Fetches your blocked users.
|
@@ -182,12 +179,8 @@ module NeonRAW
|
|
182
179
|
# @return [Array<Hash<Float, String, String>>] Returns the list of your
|
183
180
|
# blocked users.
|
184
181
|
def blocked(params = { limit: 25 })
|
185
|
-
data_arr = []
|
186
182
|
data = @client.request_data('/prefs/blocked', :get, params)
|
187
|
-
data[:data][:children].
|
188
|
-
data_arr << blocked
|
189
|
-
end
|
190
|
-
data_arr
|
183
|
+
data[:data][:children].map { |blocked| blocked }
|
191
184
|
end
|
192
185
|
|
193
186
|
# Mark all your messages as "read."
|
@@ -201,19 +194,15 @@ module NeonRAW
|
|
201
194
|
# @return [Array<NeonRAW::Objects::MultiReddit>] Returns a list of
|
202
195
|
# multireddits.
|
203
196
|
def multireddits
|
204
|
-
data_arr = []
|
205
197
|
params = { expand_srs: false }
|
206
198
|
data = @client.request_data('/api/multi/mine', :get, params)
|
207
|
-
data.
|
208
|
-
data_arr << MultiReddit.new(@client, multireddit[:data])
|
209
|
-
end
|
210
|
-
data_arr
|
199
|
+
data.map { |multireddit| MultiReddit.new(@client, multireddit[:data]) }
|
211
200
|
end
|
212
201
|
|
213
202
|
# Goes through and edits then deletes your post history. Defaults to
|
214
203
|
# 2 weeks.
|
215
204
|
# @!method purge(queue, params = {})
|
216
|
-
# @param queue [
|
205
|
+
# @param queue [Symbol] The queue you want to get your posts from
|
217
206
|
# [overview, submitted, comments, upvoted, downvoted, hidden, saved,
|
218
207
|
# giled]
|
219
208
|
# @param params [Hash] The additional parameters.
|
@@ -240,9 +229,9 @@ module NeonRAW
|
|
240
229
|
next if item.created < params[:age]
|
241
230
|
next unless whitelist.include?(item.subreddit) || whitelist[0] == '*'
|
242
231
|
if item.is_a?(Submission)
|
243
|
-
item.edit! params[:edit] if item.selfpost?
|
232
|
+
item.edit! params[:edit] if item.selfpost?
|
244
233
|
else
|
245
|
-
item.edit! params[:edit]
|
234
|
+
item.edit! params[:edit]
|
246
235
|
end
|
247
236
|
item.delete!
|
248
237
|
end
|
@@ -41,6 +41,9 @@ module NeonRAW
|
|
41
41
|
def initialize(client, data)
|
42
42
|
@client = client
|
43
43
|
data.each do |key, value|
|
44
|
+
# for consistency, empty strings/arrays/hashes are set to nil
|
45
|
+
# because most of the keys returned by Reddit are nil when they
|
46
|
+
# don't have a value, besides a few
|
44
47
|
value = nil if ['', [], {}].include?(value)
|
45
48
|
instance_variable_set(:"@#{key}", value)
|
46
49
|
next if key == :created_utc
|
@@ -17,6 +17,9 @@ module NeonRAW
|
|
17
17
|
def initialize(client, data)
|
18
18
|
@client = client
|
19
19
|
data.each do |key, value|
|
20
|
+
# for consistency, empty strings/arrays/hashes are set to nil
|
21
|
+
# because most of the keys returned by Reddit are nil when they
|
22
|
+
# don't have a value, besides a few
|
20
23
|
value = nil if ['', [], {}].include?(value)
|
21
24
|
instance_variable_set(:"@#{key}", value)
|
22
25
|
next if key == :date
|
@@ -7,6 +7,9 @@ module NeonRAW
|
|
7
7
|
def initialize(client, data)
|
8
8
|
@client = client
|
9
9
|
data.each do |key, value|
|
10
|
+
# for consistency, empty strings/arrays/hashes are set to nil
|
11
|
+
# because most of the keys returned by Reddit are nil when they
|
12
|
+
# don't have a value, besides a few
|
10
13
|
value = nil if ['', [], {}].include?(value)
|
11
14
|
instance_variable_set(:"@#{key}", value)
|
12
15
|
self.class.send(:attr_reader, key)
|
@@ -20,21 +23,21 @@ module NeonRAW
|
|
20
23
|
true
|
21
24
|
end
|
22
25
|
|
26
|
+
# Returns whether or not the object is a Comment object.
|
27
|
+
# @!method comment?
|
28
|
+
# @return [Boolean] Returns false.
|
29
|
+
def comment?
|
30
|
+
false
|
31
|
+
end
|
32
|
+
|
23
33
|
# Expands the MoreComments object.
|
24
|
-
# @!method expand
|
25
|
-
# @
|
26
|
-
#
|
27
|
-
|
28
|
-
def expand(subreddit)
|
29
|
-
comments = []
|
34
|
+
# @!method expand
|
35
|
+
# @return [NeonRAW::Objects::Listing] Returns a listing with all of the
|
36
|
+
# comments that were expanded.
|
37
|
+
def expand
|
30
38
|
return [] if children.nil?
|
31
|
-
params = { id: children.map { |the_id| 't1_' + the_id }.join(',') }
|
32
39
|
# /api/morechildren is buggy shit. This is better.
|
33
|
-
|
34
|
-
data[:data][:children].each do |comment|
|
35
|
-
comments << Comment.new(@client, comment[:data])
|
36
|
-
end
|
37
|
-
comments
|
40
|
+
@client.info(name: children.map { |the_id| 't1_' + the_id }.join(','))
|
38
41
|
end
|
39
42
|
end
|
40
43
|
end
|
@@ -46,9 +46,12 @@ module NeonRAW
|
|
46
46
|
def initialize(client, data)
|
47
47
|
@client = client
|
48
48
|
data.each do |key, value|
|
49
|
+
# for consistency, empty strings/arrays/hashes are set to nil
|
50
|
+
# because most of the keys returned by Reddit are nil when they
|
51
|
+
# don't have a value, besides a few
|
49
52
|
value = nil if ['', [], {}].include?(value)
|
50
53
|
instance_variable_set(:"@#{key}", value)
|
51
|
-
next if
|
54
|
+
next if %i[created created_utc subreddits].include?(key)
|
52
55
|
self.class.send(:attr_reader, key)
|
53
56
|
end
|
54
57
|
class << self
|
@@ -0,0 +1,57 @@
|
|
1
|
+
module NeonRAW
|
2
|
+
module Objects
|
3
|
+
# The object for /r/popular.
|
4
|
+
class Popular
|
5
|
+
# @!method initialize(client)
|
6
|
+
# @param client [NeonRAW::Clients::Web/Installed/Script] The client
|
7
|
+
# object.
|
8
|
+
def initialize(client)
|
9
|
+
@client = client
|
10
|
+
end
|
11
|
+
|
12
|
+
# @!group Listings
|
13
|
+
# Fetches a listing from /r/popular.
|
14
|
+
# @!method hot(params = { limit: 25 })
|
15
|
+
# @!method rising(params = { limit: 25 })
|
16
|
+
# @!method top(params = { limit: 25 })
|
17
|
+
# @!method old(params = { limit: 25 })
|
18
|
+
# @!method new(params = { limit: 25 })
|
19
|
+
# @!method controversial(params = { limit: 25 })
|
20
|
+
# @!method comments(param = { limit: 25 })
|
21
|
+
# @param params [Hash] The parameters for the request.
|
22
|
+
# @option params :t [String] Time for relevant sorting [hour, day, week,
|
23
|
+
# month, year, all]
|
24
|
+
# @option params :after [String] The name of the next data block.
|
25
|
+
# @option params :before [String] The name of the previous data block.
|
26
|
+
# @option params :count [Integer] The number of items already in the
|
27
|
+
# listing.
|
28
|
+
# @option params :limit [1..1000] The number of items to fetch.
|
29
|
+
# @option params :show [String] Literally the string 'all'.
|
30
|
+
# @return [NeonRAW::Objects::Listing] Returns the listing object.
|
31
|
+
%w[hot rising top old new controversial comments].each do |type|
|
32
|
+
define_method :"#{type}" do |params = { limit: 25 }|
|
33
|
+
path = "/r/popular/#{type}"
|
34
|
+
@client.send(:build_listing, path, params)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
# Streams content from /r/popular.
|
39
|
+
# @!method stream(queue, params = { limit: 25 })
|
40
|
+
# @param queue [Symbol] The queue to get data from [hot, top, new,
|
41
|
+
# controversial, gilded, comments]
|
42
|
+
# @param params [Hash] The parameters for the request.
|
43
|
+
# @option params :t [String] Time for relevant sorting [hour, day, week,
|
44
|
+
# month, year, all]
|
45
|
+
# @option params :after [String] The name of the next data block.
|
46
|
+
# @option params :before [String] The name of the previous data block.
|
47
|
+
# @option params :count [Integer] The number of items already in the
|
48
|
+
# listing.
|
49
|
+
# @option params :limit [1..1000] The number of items to fetch.
|
50
|
+
# @option params :show [String] Literally the string 'all'.
|
51
|
+
# @return [Enumerator] Returns an enumerator for the streamed data.
|
52
|
+
def stream(queue, params = { limit: 25 })
|
53
|
+
@client.send(:stream, "/r/popular/#{queue}", params)
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
@@ -36,9 +36,12 @@ module NeonRAW
|
|
36
36
|
def initialize(client, data)
|
37
37
|
@client = client
|
38
38
|
data.each do |key, value|
|
39
|
+
# for consistency, empty strings/arrays/hashes are set to nil
|
40
|
+
# because most of the keys returned by Reddit are nil when they
|
41
|
+
# don't have a value, besides a few
|
39
42
|
value = nil if ['', [], {}].include?(value)
|
40
43
|
instance_variable_set(:"@#{key}", value)
|
41
|
-
next if
|
44
|
+
next if %i[created created_utc replies].include?(key)
|
42
45
|
self.class.send(:attr_reader, key)
|
43
46
|
end
|
44
47
|
class << self
|
@@ -69,7 +72,7 @@ module NeonRAW
|
|
69
72
|
# Toggle the read status of a message.
|
70
73
|
# @!method mark_as_read!
|
71
74
|
# @!method mark_as_unread!
|
72
|
-
%w
|
75
|
+
%w[read unread].each do |type|
|
73
76
|
define_method :"mark_as_#{type}!" do
|
74
77
|
params = { id: name }
|
75
78
|
@client.request_data("/api/#{type}_message", :post, params)
|
@@ -79,7 +82,7 @@ module NeonRAW
|
|
79
82
|
# Set whether to mute a user in modmail or not.
|
80
83
|
# @!method mute!
|
81
84
|
# @!method unmute!
|
82
|
-
%w
|
85
|
+
%w[mute unmute].each do |type|
|
83
86
|
define_method :"#{type}!" do
|
84
87
|
params = { id: name }
|
85
88
|
@client.request_data("/api/#{type}_message_author", :post, params)
|
data/lib/NeonRAW/objects/rule.rb
CHANGED
@@ -23,6 +23,9 @@ module NeonRAW
|
|
23
23
|
def initialize(client, data)
|
24
24
|
@client = client
|
25
25
|
data.each do |key, value|
|
26
|
+
# for consistency, empty strings/arrays/hashes are set to nil
|
27
|
+
# because most of the keys returned by Reddit are nil when they
|
28
|
+
# don't have a value, besides a few
|
26
29
|
value = nil if ['', [], {}].include?(value)
|
27
30
|
instance_variable_set(:"@#{key}", value)
|
28
31
|
next if key == :created_utc
|
@@ -1,6 +1,10 @@
|
|
1
1
|
require_relative 'thing'
|
2
2
|
require_relative 'comment'
|
3
3
|
require_relative 'morecomments'
|
4
|
+
require_relative 'listing'
|
5
|
+
require_relative 'submission'
|
6
|
+
|
7
|
+
# rubocop:disable Metrics/MethodLength, Metrics/ClassLength
|
4
8
|
|
5
9
|
module NeonRAW
|
6
10
|
module Objects
|
@@ -84,9 +88,16 @@ module NeonRAW
|
|
84
88
|
def initialize(client, data)
|
85
89
|
@client = client
|
86
90
|
data.each do |key, value|
|
91
|
+
# for consistency, empty strings/arrays/hashes are set to nil
|
92
|
+
# because most of the keys returned by Reddit are nil when they
|
93
|
+
# don't have a value, besides a few
|
87
94
|
value = nil if ['', [], {}].include?(value)
|
88
|
-
|
89
|
-
|
95
|
+
if key == :permalink
|
96
|
+
instance_variable_set(:"@#{key}", 'https://www.reddit.com' + value)
|
97
|
+
else
|
98
|
+
instance_variable_set(:"@#{key}", value)
|
99
|
+
end
|
100
|
+
next if %i[created created_utc].include?(key)
|
90
101
|
self.class.send(:attr_reader, key)
|
91
102
|
end
|
92
103
|
class << self
|
@@ -134,7 +145,7 @@ module NeonRAW
|
|
134
145
|
# @return [Array] Returns an array full of Comments and MoreComments
|
135
146
|
# objects.
|
136
147
|
def comments
|
137
|
-
data = @client.request_data("/comments/#{id}
|
148
|
+
data = @client.request_data("/comments/#{id}", :get)
|
138
149
|
data_arr = []
|
139
150
|
data[1][:data][:children].each do |comment|
|
140
151
|
if comment[:kind] == 't1'
|
@@ -146,6 +157,34 @@ module NeonRAW
|
|
146
157
|
data_arr
|
147
158
|
end
|
148
159
|
|
160
|
+
# Fetches duplicates for the submission.
|
161
|
+
# @!method duplicates(params = { limit: 25 })
|
162
|
+
# @param params [Hash] Optional parameters.
|
163
|
+
# @option :after [String] The fullname of the next data block.
|
164
|
+
# @option :before [String] The fullname of the previous data block.
|
165
|
+
# @option :count [Integer] The number of posts already in the listing.
|
166
|
+
# @option :limit [1..1000] The number of listing items to fetch.
|
167
|
+
# @option :show [String] Literally the string 'all'.
|
168
|
+
# @return [NeonRAW::Objects::Listing] Returns the listing with all the
|
169
|
+
# duplicate submissions.
|
170
|
+
def duplicates(params = { limit: 25 })
|
171
|
+
params[:sr_detail] = false
|
172
|
+
data_arr = []
|
173
|
+
until data_arr.length == params[:limit]
|
174
|
+
data = @client.request_data("/duplicates/#{id}", :get, params)
|
175
|
+
params[:after] = data[1][:data][:after]
|
176
|
+
params[:before] = data[1][:data][:before]
|
177
|
+
data[1][:data][:children].each do |submission|
|
178
|
+
data_arr << Submission.new(@client, submission[:data])
|
179
|
+
break if data_arr.length == params[:limit]
|
180
|
+
end
|
181
|
+
break if params[:after].nil?
|
182
|
+
end
|
183
|
+
listing = Listing.new(params[:after], params[:before])
|
184
|
+
data_arr.each { |submission| listing << submission }
|
185
|
+
listing
|
186
|
+
end
|
187
|
+
|
149
188
|
# Set submission visibility.
|
150
189
|
# @!method hide
|
151
190
|
# @!method unhide
|
@@ -154,7 +193,7 @@ module NeonRAW
|
|
154
193
|
# Set whether or not users can comment on the submission.
|
155
194
|
# @!method lock
|
156
195
|
# @!method unlock
|
157
|
-
%w
|
196
|
+
%w[hide unhide lock unlock].each do |type|
|
158
197
|
define_method :"#{type}" do
|
159
198
|
params = { id: name }
|
160
199
|
@client.request_data("/api/#{type}", :post, params)
|
@@ -164,7 +203,7 @@ module NeonRAW
|
|
164
203
|
# Set the submission's NSFW status.'
|
165
204
|
# @!method mark_nsfw
|
166
205
|
# @!method unmark_nsfw
|
167
|
-
%w
|
206
|
+
%w[mark unmark].each do |type|
|
168
207
|
define_method :"#{type}_nsfw" do
|
169
208
|
params = { id: name }
|
170
209
|
@client.request_data("/api/#{type}nsfw", :post, params)
|