Rubbit 0.2.3 → 0.2.5
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.
- data/lib/Rubbit.rb +8 -0
- data/lib/Rubbit/Rubbit_Construction_Layer.rb +72 -14
- data/lib/Rubbit/Rubbit_Objects.rb +64 -8
- metadata +8 -6
- checksums.yaml +0 -15
data/lib/Rubbit.rb
CHANGED
@@ -138,6 +138,14 @@ class Rubbit
|
|
138
138
|
return @object_builder.build_user(@me.name)
|
139
139
|
end
|
140
140
|
|
141
|
+
def create_live(title,description='',nsfw=false)
|
142
|
+
return @rubbit_poster.create_live(title,description,nsfw)
|
143
|
+
end
|
144
|
+
|
145
|
+
def create_subreddit(name,other_params)
|
146
|
+
return @rubbit_poster.create_subreddit(name,other_params)
|
147
|
+
end
|
148
|
+
|
141
149
|
def update(curpass=nil,email=nil,newpass=nil,verify=nil,verpass=nil)
|
142
150
|
if(@me==nil)
|
143
151
|
print('Not logged in. Cannot update password or email')
|
@@ -85,6 +85,18 @@ class Rubbit_Poster
|
|
85
85
|
Reddit_Net_Wrapper.instance(net_name)
|
86
86
|
@logged_in_user = nil
|
87
87
|
end
|
88
|
+
|
89
|
+
def set_subreddit_sticky(post_id,state)
|
90
|
+
params = {}
|
91
|
+
params['api_type']='json'
|
92
|
+
params['id']=post_id
|
93
|
+
params['state']=state
|
94
|
+
params['uh']=get_modhash
|
95
|
+
|
96
|
+
response = Reddit_Net_Wrapper.instance.make_request('post','http://www.reddit.com/api/set_subreddit_sticky/',params)
|
97
|
+
|
98
|
+
return JSON.parse(response.body)
|
99
|
+
end
|
88
100
|
|
89
101
|
def self.instance(name=nil)
|
90
102
|
if(@@instance==nil)
|
@@ -123,7 +135,7 @@ class Rubbit_Poster
|
|
123
135
|
|
124
136
|
response = Reddit_Net_Wrapper.instance.make_request('post','http://www.reddit.com/api/clear_sessions/',params)
|
125
137
|
|
126
|
-
return response.body
|
138
|
+
return JSON.parse(response.body)
|
127
139
|
end
|
128
140
|
|
129
141
|
def delete_user(user,passwd,message)
|
@@ -135,7 +147,7 @@ class Rubbit_Poster
|
|
135
147
|
params['uh']=get_modhash
|
136
148
|
|
137
149
|
response = Reddit_Net_Wrapper.instance.make_request('post','http://www.reddit.com/api/delete_user/',params)
|
138
|
-
return response.body
|
150
|
+
return JSON.parse(response.body)
|
139
151
|
end
|
140
152
|
|
141
153
|
def update(email,newpass,curpass,verify,verpass)
|
@@ -149,7 +161,7 @@ class Rubbit_Poster
|
|
149
161
|
params['uh']=get_modhash
|
150
162
|
|
151
163
|
response = Reddit_Net_Wrapper.instance.make_request('post','http://www.reddit.com/api/update/',params)
|
152
|
-
return response.body
|
164
|
+
return JSON.parse(response.body)
|
153
165
|
end
|
154
166
|
|
155
167
|
def submit(sr,title,url=nil,text=nil,kind='self',resubmit=nil,save=false,sendreplies=true)
|
@@ -174,14 +186,14 @@ class Rubbit_Poster
|
|
174
186
|
|
175
187
|
def comment(parent,text)
|
176
188
|
params = {}
|
177
|
-
params['
|
189
|
+
params['api_type']='json'
|
178
190
|
params['thing_id']=parent
|
191
|
+
params['text']=text
|
179
192
|
params['uh']=get_modhash
|
180
|
-
params['renderstylel']='html'
|
181
193
|
|
182
194
|
response = Reddit_Net_Wrapper.instance.make_request('post','http://www.reddit.com/api/comment',params)
|
183
195
|
|
184
|
-
return response.body
|
196
|
+
return JSON.parse(response.body)
|
185
197
|
end
|
186
198
|
|
187
199
|
def hide(id)
|
@@ -191,7 +203,7 @@ class Rubbit_Poster
|
|
191
203
|
|
192
204
|
response = Reddit_Net_Wrapper.instance.make_request('post','http://www.reddit.com/api/hide',params)
|
193
205
|
|
194
|
-
return response.body
|
206
|
+
return JSON.parse(response.body)
|
195
207
|
end
|
196
208
|
|
197
209
|
def delete(id)
|
@@ -201,7 +213,7 @@ class Rubbit_Poster
|
|
201
213
|
|
202
214
|
response = Reddit_Net_Wrapper.instance.make_request('post','http://www.reddit.com/api/del',params)
|
203
215
|
|
204
|
-
return response.body
|
216
|
+
return JSON.parse(response.body)
|
205
217
|
end
|
206
218
|
|
207
219
|
def edit(id,text)
|
@@ -213,7 +225,7 @@ class Rubbit_Poster
|
|
213
225
|
|
214
226
|
response = Reddit_Net_Wrapper.instance.make_request('post','http://www.reddit.com/api/editusertext',params)
|
215
227
|
|
216
|
-
return response.body
|
228
|
+
return JSON.parse(response.body)
|
217
229
|
end
|
218
230
|
|
219
231
|
def mark_nsfw(id)
|
@@ -223,7 +235,33 @@ class Rubbit_Poster
|
|
223
235
|
|
224
236
|
response = Reddit_Net_Wrapper.instance.make_request('post','http://www.reddit.com/api/marknsfw',params)
|
225
237
|
|
226
|
-
return response.body
|
238
|
+
return JSON.parse(response.body)
|
239
|
+
end
|
240
|
+
|
241
|
+
def create_live(title,description='',nsfw=false)
|
242
|
+
params = {}
|
243
|
+
|
244
|
+
params['api_type']='json'
|
245
|
+
params['title']=title
|
246
|
+
params['description']=description
|
247
|
+
params['nsfw']=nsfw
|
248
|
+
params['uh']=get_modhash
|
249
|
+
|
250
|
+
response = Reddit_Net_Wrapper.instance.make_request('post','http://www.reddit.com/api/live/create',params)
|
251
|
+
|
252
|
+
return Live_Thread.new(JSON.parse(response.body)['json']['data']['id'])
|
253
|
+
end
|
254
|
+
|
255
|
+
def update_live(id,body)
|
256
|
+
params = {}
|
257
|
+
|
258
|
+
params['api_type']='json'
|
259
|
+
params['body']=body
|
260
|
+
params['uh']=get_modhash
|
261
|
+
|
262
|
+
response = Reddit_Net_Wrapper.instance.make_request('post','http://www.reddit.com/api/live/'+id+'/update',params)
|
263
|
+
|
264
|
+
return JSON.parse(response.body)
|
227
265
|
end
|
228
266
|
|
229
267
|
def friend(type,user,container,info=nil,duration=nil)
|
@@ -231,7 +269,7 @@ class Rubbit_Poster
|
|
231
269
|
params['api_type']='json'
|
232
270
|
params['type']=type
|
233
271
|
params['name']=user
|
234
|
-
params['
|
272
|
+
params['uh']=get_modhash
|
235
273
|
case type
|
236
274
|
when 'friend'
|
237
275
|
params['note']=info
|
@@ -244,6 +282,7 @@ class Rubbit_Poster
|
|
244
282
|
params['permissions']=info
|
245
283
|
when 'contributor'
|
246
284
|
params['container']=container
|
285
|
+
params['r']=info
|
247
286
|
when 'banned'
|
248
287
|
params['container']=container
|
249
288
|
params['note']=info
|
@@ -255,10 +294,10 @@ class Rubbit_Poster
|
|
255
294
|
when 'wikicontributor'
|
256
295
|
params['container']=container
|
257
296
|
end
|
258
|
-
|
297
|
+
|
259
298
|
response = Reddit_Net_Wrapper.instance.make_request('post','http://www.reddit.com/api/friend',params)
|
260
299
|
|
261
|
-
return response.body
|
300
|
+
return JSON.parse(response.body)
|
262
301
|
end
|
263
302
|
|
264
303
|
def unfriend(type,user,container)
|
@@ -266,15 +305,34 @@ class Rubbit_Poster
|
|
266
305
|
params['api_type']='json'
|
267
306
|
params['type']=type
|
268
307
|
params['name']=user
|
269
|
-
params['
|
308
|
+
params['uh']=get_modhash
|
270
309
|
params['container']=container
|
271
310
|
|
272
311
|
response = Reddit_Net_Wrapper.instance.make_request('post','http://www.reddit.com/api/unfriend',params)
|
273
312
|
|
274
313
|
return response.body
|
275
314
|
end
|
315
|
+
|
316
|
+
def create_subreddit(name,other_params)
|
317
|
+
params = {}
|
318
|
+
params['link_type']='any'
|
319
|
+
params['wikimode']='disabled'
|
320
|
+
params['type'] = 'public'
|
321
|
+
params['name'] = name
|
322
|
+
other_params.keys.each do |k|
|
323
|
+
params[k] = other_params[k]
|
324
|
+
end
|
325
|
+
params['uh']=get_modhash
|
326
|
+
|
327
|
+
response = Reddit_Net_Wrapper.instance.make_request('post','http://www.reddit.com/api/site_admin',params)
|
328
|
+
|
329
|
+
return response.body
|
330
|
+
end
|
276
331
|
|
277
332
|
def get_modhash
|
333
|
+
if(@logged_in_user==nil)
|
334
|
+
raise LoginException, 'Not logged in.'
|
335
|
+
end
|
278
336
|
response = Reddit_Net_Wrapper.instance.make_request('get','http://www.reddit.com/user/'+@logged_in_user+'/about.json',{})
|
279
337
|
data = JSON.parse(response.body)
|
280
338
|
return data['data']['modhash']
|
@@ -175,7 +175,16 @@ class Subreddit
|
|
175
175
|
def get_moderators
|
176
176
|
return ContentGenerator.new('http://www.reddit.com/r/'+@display_name.to_s+'/about/moderators.json',nil)
|
177
177
|
end
|
178
|
+
|
179
|
+
def get_modmail(limit=100)
|
180
|
+
return ContentGenerator.new("http://www.reddit.com/r/#{@display_name.to_s}/about/message/inbox/.json",limit)
|
181
|
+
end
|
178
182
|
|
183
|
+
def is_contributor?(name)
|
184
|
+
contrib_check = ContentGenerator.new("http://www.reddit.com/r/#{@display_name.to_s}/about/contributors/.json?user=#{name}")
|
185
|
+
user = contrib_check.next
|
186
|
+
return user != nil
|
187
|
+
end
|
179
188
|
|
180
189
|
# ==== Description
|
181
190
|
#
|
@@ -198,7 +207,7 @@ class Subreddit
|
|
198
207
|
# * +name+ - name of user to add as a contributor
|
199
208
|
#
|
200
209
|
def add_contributor(name)
|
201
|
-
return Rubbit_Poster.instance.friend('contributor',name,@display_name)
|
210
|
+
return Rubbit_Poster.instance.friend('contributor',name,@name,@display_name)
|
202
211
|
end
|
203
212
|
|
204
213
|
# ==== Description
|
@@ -403,7 +412,6 @@ class ContentGenerator
|
|
403
412
|
end
|
404
413
|
else
|
405
414
|
listing = Rubbit_Object_Builder.instance.build_listing(@source+@limit_param+100.to_s+"&after="+@after+"&count="+@count.to_s)
|
406
|
-
puts(@source+@limit_param+100.to_s+"&after="+@after+"&count="+@count.to_s)
|
407
415
|
@after = listing.after
|
408
416
|
@data += listing.children
|
409
417
|
@count += listing.children.length
|
@@ -432,14 +440,13 @@ class ContentGenerator
|
|
432
440
|
if(@index>=@data.length)
|
433
441
|
if(@limit!=nil)
|
434
442
|
if(@limit-@count>0)
|
435
|
-
listing = Rubbit_Object_Builder.instance.build_listing(@source+
|
443
|
+
listing = Rubbit_Object_Builder.instance.build_listing(@source+@limit_param+[@limit-@count,100].min.to_s+"&after="+@after+"&count="+@count.to_s)
|
436
444
|
@after = listing.after
|
437
445
|
@data += listing.children
|
438
446
|
@count += listing.children.length
|
439
447
|
end
|
440
448
|
else
|
441
|
-
listing = Rubbit_Object_Builder.instance.build_listing(@source+
|
442
|
-
puts(@source+"?limit="+100.to_s+"&after="+@after+"&count="+@count.to_s)
|
449
|
+
listing = Rubbit_Object_Builder.instance.build_listing(@source+@limit_param+100.to_s+"&after="+@after+"&count="+@count.to_s)
|
443
450
|
@after = listing.after
|
444
451
|
@data += listing.children
|
445
452
|
@count += listing.children.length
|
@@ -582,14 +589,18 @@ class Post
|
|
582
589
|
def reply(text)
|
583
590
|
return Rubbit_Poster.instance.comment(@name,text)
|
584
591
|
end
|
592
|
+
|
593
|
+
def set_as_sticky(state)
|
594
|
+
return Rubbit_Poster.instance.set_subreddit_sticky(@name,state)
|
595
|
+
end
|
585
596
|
|
586
597
|
# ==== Description
|
587
598
|
#
|
588
599
|
# Retrieves the comments of a post in a list tree.
|
589
600
|
#
|
590
|
-
def replies
|
601
|
+
def replies(limit=100)
|
591
602
|
if(@comments==nil)
|
592
|
-
@comments = Rubbit_Object_Builder.instance.get_comments(
|
603
|
+
@comments = Rubbit_Object_Builder.instance.get_comments("http://www.reddit.com#{permalink}.json",limit)
|
593
604
|
end
|
594
605
|
return @comments
|
595
606
|
end
|
@@ -655,7 +666,50 @@ class Message
|
|
655
666
|
# * +text+ - The new message body.
|
656
667
|
#
|
657
668
|
def reply(text)
|
658
|
-
Rubbit_Poster.instance.comment(text
|
669
|
+
return Rubbit_Poster.instance.comment(@name,text)
|
670
|
+
end
|
671
|
+
end
|
672
|
+
|
673
|
+
# == Rubbit Object
|
674
|
+
#
|
675
|
+
# Object that represents a Live Thread
|
676
|
+
#
|
677
|
+
class Live_Thread
|
678
|
+
@id = nil
|
679
|
+
def initialize(id)
|
680
|
+
@id = id
|
681
|
+
end
|
682
|
+
|
683
|
+
def get_updates
|
684
|
+
return ContentGenerator.new('http://www.reddit.com/live/'+@id+'.json',limit)
|
685
|
+
end
|
686
|
+
|
687
|
+
def make_update(body)
|
688
|
+
return Rubbit_Poster.instance.update_live(@id,body)
|
689
|
+
end
|
690
|
+
end
|
691
|
+
|
692
|
+
# == Rubbit Object
|
693
|
+
#
|
694
|
+
# Object that represents an Update in a Live Thread
|
695
|
+
#
|
696
|
+
class Live_Update
|
697
|
+
def initialize(json)
|
698
|
+
if(json['kind']=='LiveUpdate')
|
699
|
+
data = json['data']
|
700
|
+
data.each_key do |k|
|
701
|
+
self.class.module_eval {attr_accessor(k)}
|
702
|
+
self.send("#{k}=",data[k])
|
703
|
+
end
|
704
|
+
end
|
705
|
+
end
|
706
|
+
|
707
|
+
def strike
|
708
|
+
|
709
|
+
end
|
710
|
+
|
711
|
+
def delete
|
712
|
+
|
659
713
|
end
|
660
714
|
end
|
661
715
|
|
@@ -686,6 +740,8 @@ class Listing
|
|
686
740
|
children_objects += [Subreddit.new(c)]
|
687
741
|
elsif(c['kind'] == 'Listing')
|
688
742
|
children_objects += [Listing.new(c)]
|
743
|
+
elsif(c['kind'] == 'LiveUpdate')
|
744
|
+
children_objects += [Live_Update.new(c)]
|
689
745
|
end
|
690
746
|
end
|
691
747
|
@children = children_objects
|
metadata
CHANGED
@@ -1,14 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: Rubbit
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.5
|
5
|
+
prerelease:
|
5
6
|
platform: ruby
|
6
7
|
authors:
|
7
8
|
- /u/The1RGood
|
8
9
|
autorequire:
|
9
10
|
bindir: bin
|
10
11
|
cert_chain: []
|
11
|
-
date:
|
12
|
+
date: 2015-02-07 00:00:00.000000000 Z
|
12
13
|
dependencies: []
|
13
14
|
description: A simple Ruby-based Reddit API Wrapper
|
14
15
|
email: randy@kindofabigdeal.org
|
@@ -18,31 +19,32 @@ extra_rdoc_files: []
|
|
18
19
|
files:
|
19
20
|
- lib/Rubbit.rb
|
20
21
|
- lib/Rubbit/Reddit_Net_Wrapper.rb
|
22
|
+
- lib/Rubbit/Rubbit_Objects.rb
|
21
23
|
- lib/Rubbit/Rubbit_Construction_Layer.rb
|
22
24
|
- lib/Rubbit/Rubbit_Exceptions.rb
|
23
|
-
- lib/Rubbit/Rubbit_Objects.rb
|
24
25
|
homepage: http://rubygems.org/gems/rubbit
|
25
26
|
licenses:
|
26
27
|
- GPL v3
|
27
|
-
metadata: {}
|
28
28
|
post_install_message:
|
29
29
|
rdoc_options: []
|
30
30
|
require_paths:
|
31
31
|
- lib
|
32
32
|
required_ruby_version: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
33
34
|
requirements:
|
34
35
|
- - ! '>='
|
35
36
|
- !ruby/object:Gem::Version
|
36
37
|
version: '0'
|
37
38
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
38
40
|
requirements:
|
39
41
|
- - ! '>='
|
40
42
|
- !ruby/object:Gem::Version
|
41
43
|
version: '0'
|
42
44
|
requirements: []
|
43
45
|
rubyforge_project:
|
44
|
-
rubygems_version:
|
46
|
+
rubygems_version: 1.8.23
|
45
47
|
signing_key:
|
46
|
-
specification_version:
|
48
|
+
specification_version: 3
|
47
49
|
summary: Ruby API Wrapper for Reddit
|
48
50
|
test_files: []
|
checksums.yaml
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
---
|
2
|
-
!binary "U0hBMQ==":
|
3
|
-
metadata.gz: !binary |-
|
4
|
-
NjljN2VjOTY3MGYwMjg4YzY5YWU3MTExNTc4MDE5NzEyYTI1OGY5OQ==
|
5
|
-
data.tar.gz: !binary |-
|
6
|
-
ZWQ3MTc4YTY5MjQyYzcxMDk3YjViZjE1NTA3NDU3NDk0NDg0MDkwMQ==
|
7
|
-
SHA512:
|
8
|
-
metadata.gz: !binary |-
|
9
|
-
N2JmNmRkMmJjOGIxZDc0MDY2NmU2OWVhZTE1YjlhZTEwYzA2NTE1ZTY5ZDVm
|
10
|
-
OGViM2ZkMjdiMzk5ZDk2M2I0MWVlNzc3ZWVhMzNhZWY3ZjI4M2VmMDgwOTVl
|
11
|
-
NTA1OTE5NmIzY2VlYTliMzI0ZjkxY2M5MWJlNzZkMzhjZjExYjk=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
NmM3ZGIyYWZlZGYwYjBkZWY4YmFmYmNmMWFjYWQ5ZDkzNDI4ZjcxM2VhY2Fl
|
14
|
-
MWE1MDYwMTBmMjJjYzk5MWJjMzRkYzNjNzcwYzExZDc4YmUwMjgzYTM3Mjg4
|
15
|
-
ZDk1MTI4MGFhMzBlMzJlOGU5NGIzMDk3NGFkNzZhMTFmNWE0NTk=
|