snoo 0.1.0.pre.1 → 0.1.0.pre.2

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/snoo/flair.rb CHANGED
@@ -12,8 +12,6 @@ module Snoo
12
12
  # @return (see #clear_sessions)
13
13
  def clear_flair_templates type, subreddit
14
14
  logged_in?
15
- tests = ['USER_FLAIR', 'LINK_FLAIR']
16
- raise ArgumentError, 'type needs to be either USER_FLAIR or LINK_FLAIR' unless tests.include?(type)
17
15
  post('/api/clearflairtemplates', body: { flair_type: type, r: subreddit, uh: @modhash})
18
16
  end
19
17
 
@@ -47,7 +45,6 @@ module Snoo
47
45
  # @return (see #clear_sessions)
48
46
  def flair subreddit, opts = {}
49
47
  logged_in?
50
- raise ArgumentError, "link or name, not both" if opts[:link] && opts[:name]
51
48
  params = {
52
49
  r: subreddit,
53
50
  uh: @modhash,
@@ -103,7 +100,6 @@ module Snoo
103
100
  # @return (see #clear_sessions)
104
101
  def get_flair_list subreddit, opts = {}
105
102
  logged_in?
106
- raise ArgumentError, 'limit is too high/low' unless (1..1000).include?(opts[:limit]) or opts[:limit].nil?
107
103
  query = {
108
104
  limit: 1000,
109
105
  uh: @modhash
@@ -131,10 +127,6 @@ module Snoo
131
127
  r: subreddit
132
128
  }
133
129
  params.merge! opts
134
- test = ['USER_FLAIR', 'LINK_FLAIR']
135
- raise ArgumentError, 'type is either USER_FLAIR or LINK_FLAIR' unless test.include?(params[:flair_type])
136
- test = [true, false]
137
- raise ArgumentError, 'user_editable needs to be true or false' unless test.include?(params[:text_editable])
138
130
 
139
131
  post('/api/flairtemplate', body: params)
140
132
  end
@@ -150,7 +142,6 @@ module Snoo
150
142
  # @return (see #clear_sessions)
151
143
  def select_flair_template template_id, subreddit, opts = {}
152
144
  logged_in?
153
- raise ArgumentError, 'link or user, not both' if opts[:link] && opts[:user]
154
145
  params = {
155
146
  flair_template_id: template_id,
156
147
  uh: @modhash,
@@ -167,8 +158,6 @@ module Snoo
167
158
  # @return (see #clear_sessions)
168
159
  def flair_toggle enabled, subreddit
169
160
  logged_in?
170
- test = [true, false]
171
- raise ArgumentError, 'enabled must be boolean' unless test.include?(enabled)
172
161
  post('/api/setflairenabled', body: {flair_enabled: enabled, uh: @modhash, r: subreddit})
173
162
  end
174
163
 
@@ -52,7 +52,6 @@ module Snoo
52
52
  # @option opts [Fixnum] :limit The number of things to return. Go too high and the API will ignore you
53
53
  # @return (see #clear_sessions)
54
54
  def info opts = {}
55
- raise ArgumentError, 'url or id, not both' if opts[:id] && opts[:url]
56
55
  query = { limit: 100 }
57
56
  query.merge! opts
58
57
  get('/api/info.json', query: query)
@@ -95,7 +94,6 @@ module Snoo
95
94
  # @return (see #clear_sessions)
96
95
  def submit title, subreddit, opts = {}
97
96
  logged_in?
98
- raise ArgumentError, 'url or text, not both' if opts[:url] && opts[:text]
99
97
  post = {
100
98
  title: title,
101
99
  sr: subreddit,
@@ -132,7 +130,6 @@ module Snoo
132
130
  # @return (see #clear_sessions)
133
131
  def vote direction, id
134
132
  logged_in?
135
- raise ArgumentError, "direction needs to be one of -1, 0, or 1 (was #{direction}" unless (-1..1).include?(direction)
136
133
  post('/api/vote', body: {id: id, dir: direction, uh: @modhash})
137
134
  end
138
135
 
data/lib/snoo/listings.rb CHANGED
@@ -17,8 +17,6 @@ module Snoo
17
17
  # @option opts [old, new, hot, top, controversial, best] :sort The sort used.
18
18
  # @return (see #clear_sessions)
19
19
  def get_comments opts = {}
20
- sorts = %w{old new hot top controversial best}
21
- raise ArgumentError, "sort cannot be #{sort}" unless sorts.include?(opts[:sort]) or opts[:sort].nil?
22
20
  query = { limit: 100 }
23
21
  query.merge! opts
24
22
  url = "%s/comments/%s%s.json" % [('/r/' + opts[:subreddit] if opts[:subreddit]), opts[:link_id], ('/' + opts[:comment_id] if opts[:comment_id])]
@@ -37,20 +35,6 @@ module Snoo
37
35
  # @option opts [String] :before Get things *before* this thing id
38
36
  # @return (see #clear_sessions)
39
37
  def get_listing opts = {}
40
- pages = %w{new controversial top saved}
41
- sorts = %w{new rising}
42
- times = %w{hour day week month year}
43
- # Invalid Page
44
- raise ArgumentError, "page must be #{pages * ', '}, is #{opts[:page]}" unless pages.include?(opts[:page]) or opts[:page].nil?
45
- # Invalid Sort
46
- raise ArgumentError, "sort must be one of #{sorts * ', '}, is #{opts[:sort]}" unless sorts.include?(opts[:sort]) or opts[:sort].nil?
47
- # Sort on useless page
48
- raise ArgumentError, "sort can only be used on page = 'new'" if opts[:page] != 'new' && opts[:sort]
49
- # Invalid time
50
- raise ArgumentError, "time can only be one of #{times * ', '}, is #{opts[:time]}" unless times.include?(opts[:time]) or opts[:time].nil?
51
- # Invalid limit
52
- raise ArgumentError, "limit cannot be outside 1..100, is #{opts[:limit]}" unless (1..100).include?(opts[:limit]) or opts[:limit].nil?
53
-
54
38
  # Build the basic url
55
39
  url = "%s/%s.json" % [('/r/' + opts[:subreddit] if opts[:subreddit] ), (opts[:page] if opts[:page])]
56
40
  # Delete subreddit and page from the hash, they dont belong in the query
@@ -21,7 +21,6 @@ module Snoo
21
21
  def distinguish id, how = "yes"
22
22
  logged_in?
23
23
  hows = %w{yes no admin special}
24
- raise ArgumentError, "how should be one of #{hows * ', '}, is #{how}" unless hows.include?(how)
25
24
  post('/api/distinguish', body: {id: id, how: how, uh: @modhash})
26
25
  end
27
26
 
@@ -52,8 +51,6 @@ module Snoo
52
51
  # @return (see #clear_sessions)
53
52
  def remove id, spam = false
54
53
  logged_in?
55
- spams = [true, false]
56
- raise ArgumentError, "spam should be boolean, is #{spam}" unless spams.include?(spam)
57
54
  post('/api/remove', body: {id: id, spam: spam, uh: @modhash})
58
55
  end
59
56
 
@@ -23,6 +23,14 @@ module Snoo
23
23
  post('/api/delete_sr_image', body: {r: subreddit, img_name: image_name, uh: @modhash})
24
24
  end
25
25
 
26
+ # Gets a hash of the subreddit settings
27
+ # Returns a webserver error (404) if you don't have moderator permissions on said subreddit
28
+ #
29
+ # @param subreddit [String] the subreddit to fetch data from
30
+ def get_subreddit_settings subreddit
31
+ logged_in?
32
+ get("/r/#{subreddit}/about/edit/.json")
33
+ end
26
34
  # @todo test if every param is actually required
27
35
  # Sets subreddit settings.
28
36
  #
@@ -41,12 +49,6 @@ module Snoo
41
49
  # @return (see #clear_sessions)
42
50
  def subreddit_settings subreddit, opts = {}
43
51
  logged_in?
44
- bool = [true, false]
45
- raise ArgumentError, "type must be one of public, private, restricted, is #{opts[:type]}" unless %w{public private restricted}.include?(opts[:type]) or opts[:type].nil?
46
- raise ArgumentError, "post_type must be one of any, link, self; is #{opts[:link_type]}" unless %w{any link self}.include?(opts[:link_type]) or opts[:link_type].nil?
47
- raise ArgumentError, "allow_frontpage must be boolean" unless bool.include?(opts[:allow_top]) or opts[:allow_top].nil?
48
- raise ArgumentError, "show_media must be boolean" unless bool.include?(opts[:show_media]) or opts[:show_media].nil?
49
- raise ArgumentError, "adult must be boolean" unless bool.include?(opts[:over_18]) or opts[:over_18].nil?
50
52
  params = {
51
53
  type: 'public',
52
54
  link_type: 'any',
@@ -68,7 +70,7 @@ module Snoo
68
70
  # @return (see #clear_sessions)
69
71
  def set_stylesheet stylesheet, subreddit
70
72
  logged_in?
71
- post('/api/subreddit_stylesheet', body: {op: "save", stylesheet_contents: stylesheet, uh: @modhash})
73
+ post('/api/subreddit_stylesheet', body: {op: 'save', r: subreddit, stylesheet_contents: stylesheet, uh: @modhash})
72
74
  end
73
75
 
74
76
  # Subscribe to a subreddit
@@ -78,7 +80,6 @@ module Snoo
78
80
  # @return (see #clear_sessions)
79
81
  def subscribe subreddit, action = "sub"
80
82
  logged_in?
81
- raise ArgumentError, "action must be one of sub, unsub; is #{action}" unless %w{sub unsub}.include?(action)
82
83
  post('/api/subscribe', body: {action: action, sr: subreddit, uh: @modhash})
83
84
  end
84
85
 
@@ -119,8 +120,6 @@ module Snoo
119
120
  # @return (see #clear_sessions)
120
121
  def my_reddits opts = {}
121
122
  logged_in?
122
- raise ArgumentError, "condition must be one of subscriber, contributor, moderator; is #{opts[:condition]}" unless %w{subscriber contributor moderator}.include?(opts[:condition]) or opts[:condition].nil?
123
- raise ArgumentError, "limit must be within 1..100; is #{opts[:limit]}" unless (1..100).include?(opts[:limit]) or opts[:limit].nil?
124
123
  url = "/reddits/mine/%s.json" % (opts[:condition] if opts[:condition])
125
124
  opts.delete :condition
126
125
  query = opts
@@ -136,9 +135,6 @@ module Snoo
136
135
  # @option opts [String] :before Return subreddits *before* this id.
137
136
  # @return (see #clear_sessions)
138
137
  def get_reddits opts = {}
139
- raise ArgumentError, "condition must be one of popular, new, banned; is #{opts[:condition]}" unless %w{popular new banned}.include?(opts[:condition]) or opts[:condition].nil?
140
- raise ArgumentError, "limit must be within 1..100; is #{opts[:limit]}" unless (1..100).include?(opts[:limit]) or opts[:limit].nil?
141
-
142
138
  url = "/reddits/%s.json" % (opts[:condition] if opts[:condition])
143
139
  opts.delete :condition
144
140
  query = opts
@@ -155,8 +151,6 @@ module Snoo
155
151
  # @option opts [String] :before Return subreddits *before* this id.
156
152
  # @return (see #clear_sessions)
157
153
  def search_reddits q, opts = {}
158
- raise ArgumentError, "limit must be within 1..100; is #{opts[:limit]}" unless (1..100).include?(opts[:limit]) or opts[:limit].nil?
159
-
160
154
  query = {q: q}
161
155
  query.merge! opts
162
156
  get('/reddits/search.json', query: query)
data/lib/snoo/version.rb CHANGED
@@ -1,4 +1,4 @@
1
1
  module Snoo
2
2
  # The version string (duh)
3
- VERSION = "0.1.0.pre.1"
3
+ VERSION = "0.1.0.pre.2"
4
4
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: snoo
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0.pre.1
4
+ version: 0.1.0.pre.2
5
5
  prerelease: 6
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-10-17 00:00:00.000000000 Z
12
+ date: 2012-10-25 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: httparty