Rubbit 0.0.9 → 0.0.10
Sign up to get free protection for your applications and to get access to all the features.
- 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
|