Rubbit 0.0.9 → 0.0.10
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 +8 -8
- data/lib/Rubbit.rb +16 -0
- data/lib/Rubbit/Reddit_Net_Wrapper.rb +20 -8
- data/lib/Rubbit/Rubbit_Construction_Layer.rb +54 -10
- data/lib/Rubbit/Rubbit_Objects.rb +28 -0
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
ZjUyYjZhMTBkMjVkNzU3ZWZkYzk1N2Y5MDFjYzNlNmQxMjRmNTVjYw==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
YmQyYmZlMzM0ZTA2NmE5NDFmNzJmODNhYzUwMDIxMTRjZjFhYmUxZA==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
MjEwNjFjYzRhYzE5ODRiNzY5ZWMzZTQwZTdlZmVjOWUwZjJmNTAyNDkyMWYz
|
10
|
+
MWIyYTJkYjQ3NzhmODUyMTVmNTg1ZWQxY2RkYWI1ZDM3ZjdjYTkwMDk4MGJi
|
11
|
+
YmI5YTYyYjkzNGQzYzA5YjU1MzM3YjU0ZDk3Yzc4N2NkNWVjNjU=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
NzMwMjFkOTI0MzE1NDZkN2I2MThjNDBlOTI0YTMyNDkyYjkzZTAwOTlhYmVl
|
14
|
+
YTcyODk0MWRiNDY4MGQyMWViOTBhZjI1Yzg0YTVjNGU1MWFhNzcyYWQ2MzU1
|
15
|
+
MTg4YjAwYTViNTQ3MTM5NjRlMjQwOGUyNjYzN2I5MmQ0MTZkNjk=
|
data/lib/Rubbit.rb
CHANGED
@@ -20,6 +20,10 @@ class Rubbit
|
|
20
20
|
return @object_builder.build_user(user)
|
21
21
|
end
|
22
22
|
|
23
|
+
def set_request_period(period)
|
24
|
+
@object_builder.set_request_period(period)
|
25
|
+
end
|
26
|
+
|
23
27
|
def login(user=nil,passwd=nil)
|
24
28
|
if(user==nil)
|
25
29
|
print('Enter username: ')
|
@@ -114,6 +118,10 @@ class Rubbit
|
|
114
118
|
return @object_builder.build_submission(link)
|
115
119
|
end
|
116
120
|
|
121
|
+
def get_comments(subreddit,limit)
|
122
|
+
return @object_builder.get_comments('http://www.reddit.com/r/'+subreddit+'/comments.json',limit)
|
123
|
+
end
|
124
|
+
|
117
125
|
def get_inbox(limit=100)
|
118
126
|
if(me!=nil)
|
119
127
|
return ContentGenerator.new('http://www.reddit.com/message/inbox.json',limit)
|
@@ -128,6 +136,14 @@ class Rubbit
|
|
128
136
|
return nil
|
129
137
|
end
|
130
138
|
|
139
|
+
def friend(user)
|
140
|
+
return @rubbit_poster.friend('friend',user,@me.name)
|
141
|
+
end
|
142
|
+
|
143
|
+
def unfriend(user)
|
144
|
+
return @rubbut_poster.unfriend('friend',user,@me.name)
|
145
|
+
end
|
146
|
+
|
131
147
|
def get_sent(limit=100)
|
132
148
|
if(me!=nil)
|
133
149
|
return ContentGenerator.new('http://www.reddit.com/message/sent.json',limit)
|
@@ -10,6 +10,8 @@ class Reddit_Net_Wrapper
|
|
10
10
|
@first_request = nil
|
11
11
|
@user_agent = nil
|
12
12
|
|
13
|
+
@reset_timer = nil
|
14
|
+
|
13
15
|
@cookie = nil
|
14
16
|
|
15
17
|
@@instance = nil
|
@@ -25,11 +27,22 @@ class Reddit_Net_Wrapper
|
|
25
27
|
return @@instance
|
26
28
|
end
|
27
29
|
|
30
|
+
def set_reset_period(period=60)
|
31
|
+
if(period%2!=0 or period>60 or period<2)
|
32
|
+
return false
|
33
|
+
else
|
34
|
+
@reset_timer = period
|
35
|
+
return true
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
39
|
+
|
28
40
|
def initialize(user)
|
29
41
|
@used = 0
|
30
42
|
@remaining = 30
|
31
43
|
@reset = 60
|
32
44
|
@first_request = 0
|
45
|
+
@reset_timer = 60
|
33
46
|
@user_agent = 'Rubbit/1.0 Ruby RAW by The1RGood USED BY: '
|
34
47
|
@user_agent+=user
|
35
48
|
|
@@ -39,19 +52,18 @@ class Reddit_Net_Wrapper
|
|
39
52
|
def make_request(request_type,url,params,redirect=false)
|
40
53
|
uri = URI(url)
|
41
54
|
|
42
|
-
if(@
|
43
|
-
while((Time.now-@first_request).to_i < 60)
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
|
-
if((Time.now - @first_request).to_i > 60)
|
55
|
+
if((Time.now - @first_request).to_i > @reset_timer)
|
48
56
|
@used = 0
|
49
|
-
@remaining =
|
50
|
-
@reset =
|
57
|
+
@remaining = @reset_timer/2
|
58
|
+
@reset = @reset_timer
|
51
59
|
@first_request = Time.now
|
52
60
|
end
|
53
61
|
|
54
62
|
if(redirect==false)
|
63
|
+
if(@remaining==0)
|
64
|
+
while((Time.now-@first_request).to_i < @reset_timer)
|
65
|
+
end
|
66
|
+
end
|
55
67
|
@used += 1
|
56
68
|
@remaining -= 1
|
57
69
|
@reset = (Time.now - @first_request).to_i
|
@@ -22,6 +22,10 @@ class Rubbit_Object_Builder
|
|
22
22
|
Reddit_Net_Wrapper.instance(net_name)
|
23
23
|
end
|
24
24
|
|
25
|
+
def set_request_period(period)
|
26
|
+
return Reddit_Net_Wrapper.instance.set_reset_period(period)
|
27
|
+
end
|
28
|
+
|
25
29
|
def build_subreddit(display_name)
|
26
30
|
response = Reddit_Net_Wrapper.instance.make_request('get','http://www.reddit.com/r/'+display_name.to_s+"/about.json",{})
|
27
31
|
puts response.code
|
@@ -67,16 +71,8 @@ class Rubbit_Object_Builder
|
|
67
71
|
end
|
68
72
|
end
|
69
73
|
|
70
|
-
def get_comments(link)
|
71
|
-
|
72
|
-
if(response.code=='200')
|
73
|
-
json = JSON.parse(response.body,:max_nesting=>100)
|
74
|
-
return Listing.new(json[1])
|
75
|
-
elsif(response.code=='403')
|
76
|
-
raise PrivateDataException
|
77
|
-
else
|
78
|
-
raise InvalidSubmissionException, "Could not get comment"
|
79
|
-
end
|
74
|
+
def get_comments(link,limit)
|
75
|
+
return ContentGenerator.new(link,limit)
|
80
76
|
end
|
81
77
|
|
82
78
|
private_class_method :new
|
@@ -231,6 +227,54 @@ class Rubbit_Poster
|
|
231
227
|
return response.body
|
232
228
|
end
|
233
229
|
|
230
|
+
def friend(type,user,container,info=nil,duration=nil)
|
231
|
+
params = {}
|
232
|
+
params['api_type']='json'
|
233
|
+
params['type']=type
|
234
|
+
params['name']=user
|
235
|
+
params['modhash']=get_modhash
|
236
|
+
case type
|
237
|
+
when 'friend'
|
238
|
+
params['note']=info
|
239
|
+
params['container']=container
|
240
|
+
when 'moderator'
|
241
|
+
params['container']=container
|
242
|
+
params['permissions']=info
|
243
|
+
when 'moderator_invite'
|
244
|
+
params['container']=container
|
245
|
+
params['permissions']=info
|
246
|
+
when 'contributor'
|
247
|
+
params['container']=container
|
248
|
+
when 'banned'
|
249
|
+
params['container']=container
|
250
|
+
params['note']=info
|
251
|
+
params['duration']=duration
|
252
|
+
when 'wikibanned'
|
253
|
+
params['container']=container
|
254
|
+
params['note']=info
|
255
|
+
params['duration']=duration
|
256
|
+
when 'wikicontributor'
|
257
|
+
params['container']=container
|
258
|
+
end
|
259
|
+
|
260
|
+
response = Reddit_Net_Wrapper.instance.make_request('post','http://www.reddit.com/api/friend',params)
|
261
|
+
|
262
|
+
return response.body
|
263
|
+
end
|
264
|
+
|
265
|
+
def unfriend(type,user,container)
|
266
|
+
params = {}
|
267
|
+
params['api_type']='json'
|
268
|
+
params['type']=type
|
269
|
+
params['name']=user
|
270
|
+
params['modhash']=get_modhash
|
271
|
+
params['container']=container
|
272
|
+
|
273
|
+
response = Reddit_Net_Wrapper.instance.make_request('post','http://www.reddit.com/api/unfriend',params)
|
274
|
+
|
275
|
+
return response.body
|
276
|
+
end
|
277
|
+
|
234
278
|
def get_modhash
|
235
279
|
response = Reddit_Net_Wrapper.instance.make_request('get','http://www.reddit.com/user/'+@logged_in_user+'/about.json',{})
|
236
280
|
data = JSON.parse(response.body)
|
@@ -55,6 +55,34 @@ class Subreddit
|
|
55
55
|
def get_banned(limit=100)
|
56
56
|
return ContentGenerator.new('http://www.reddit.com/r/'+@display_name.to_s+'/about/banned.json',limit)
|
57
57
|
end
|
58
|
+
|
59
|
+
def get_moderators(limit=100)
|
60
|
+
return ContentGenerator.new('http://www.reddit.com/r/'+@display_name.to_s+'/about/moderators.json',limit)
|
61
|
+
end
|
62
|
+
|
63
|
+
def add_moderator(name,permissions)
|
64
|
+
return Rubbit_Poster.instance.friend('moderator_invite',name,@display_name,permissions)
|
65
|
+
end
|
66
|
+
|
67
|
+
def add_contributor(name)
|
68
|
+
return Rubbit_Poster.instance.friend('contributor',name,@display_name)
|
69
|
+
end
|
70
|
+
|
71
|
+
def ban(name,note,duration)
|
72
|
+
return Rubbit_Poster.instance.friend('banned',name,@display_name,note,duration)
|
73
|
+
end
|
74
|
+
|
75
|
+
def remove_moderator(name)
|
76
|
+
return Rubbit_Poster.instance.unfriend('moderator',name,@display_name)
|
77
|
+
end
|
78
|
+
|
79
|
+
def remove_contributor(name)
|
80
|
+
return Rubbit_Poster.instance.unfriend('contributor',name,@display_name)
|
81
|
+
end
|
82
|
+
|
83
|
+
def unban(name)
|
84
|
+
return Rubbit_Poster.instance.unfriend('ban',name,@display_name)
|
85
|
+
end
|
58
86
|
end
|
59
87
|
|
60
88
|
class Redditor
|