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 CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- ZDE4NjRhMDAxNGRjMjJlNjNhMmM0ZmVmMzE5YWE3YTM1NzE1ZDdkOA==
4
+ ZjUyYjZhMTBkMjVkNzU3ZWZkYzk1N2Y5MDFjYzNlNmQxMjRmNTVjYw==
5
5
  data.tar.gz: !binary |-
6
- YWYxZjg4NGU2ZGIxNWJlMjJkZTgwNmMyNDVmY2RhYTUyZWNkZGYwMg==
6
+ YmQyYmZlMzM0ZTA2NmE5NDFmNzJmODNhYzUwMDIxMTRjZjFhYmUxZA==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- ZWE3YjNjYjA3MTQwZThmOGQ0ZTI4OTIwMjQ4ZWEyZjQ2MzY2ZjllMTYwOWY0
10
- NGNjM2MwNGZiMGNmOWVmMmM0YTZiMmUzN2Q3OTMwOGVjZDJmMDNjOWIyNGI2
11
- NjRmZDIzNTg0NWNjYzY2NWJjNTVmNGY1MGY3OWRjOTI2NDNhMGM=
9
+ MjEwNjFjYzRhYzE5ODRiNzY5ZWMzZTQwZTdlZmVjOWUwZjJmNTAyNDkyMWYz
10
+ MWIyYTJkYjQ3NzhmODUyMTVmNTg1ZWQxY2RkYWI1ZDM3ZjdjYTkwMDk4MGJi
11
+ YmI5YTYyYjkzNGQzYzA5YjU1MzM3YjU0ZDk3Yzc4N2NkNWVjNjU=
12
12
  data.tar.gz: !binary |-
13
- MTkxNWY1MWZiNGJlMjgxYTgxNDRmYzViNTIyNzEzODJjYTA0Yjc5YzhhZjBh
14
- MmRjMmQ0ZDQ1OTE4MzU2MGUzZGIyOWFkNjdkN2QyMWMzMDIwYWNlYjIxMDNh
15
- ODI2ODUzODFmMmVkMDFjNjZhMWQ4MjhkOGJiOGQ4MzRhZjYwYzA=
13
+ NzMwMjFkOTI0MzE1NDZkN2I2MThjNDBlOTI0YTMyNDkyYjkzZTAwOTlhYmVl
14
+ YTcyODk0MWRiNDY4MGQyMWViOTBhZjI1Yzg0YTVjNGU1MWFhNzcyYWQ2MzU1
15
+ MTg4YjAwYTViNTQ3MTM5NjRlMjQwOGUyNjYzN2I5MmQ0MTZkNjk=
@@ -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(@remaining==0)
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 = 30
50
- @reset = 60
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
- response = Reddit_Net_Wrapper.instance.make_request('get',link.to_s+".json",{})
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
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: Rubbit
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.9
4
+ version: 0.0.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - /u/The1RGood