NeonRAW 0.1.6 → 0.1.7
Sign up to get free protection for your applications and to get access to all the features.
- 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)
|