Skip to content

Commit

Permalink
Add search functionality.
Browse files Browse the repository at this point in the history
  • Loading branch information
bboe committed Mar 3, 2012
1 parent 930f45a commit a38a7d9
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 1 deletion.
16 changes: 15 additions & 1 deletion reddit/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ class Config(object): # pylint: disable-msg=R0903
'compose': 'api/compose/',
'contributors': 'r/%s/about/contributors',
'del': 'api/del/',
'distinguish': '/api/distinguish/yes/',
'distinguish': 'api/distinguish/yes/',
'feedback': 'api/feedback/',
'flair': 'api/flair/',
'flaircsv': 'api/flaircsv/',
Expand All @@ -69,6 +69,7 @@ class Config(object): # pylint: disable-msg=R0903
'reports': 'r/%s/about/reports/',
'save': 'api/save/',
'saved': 'saved/',
'search': 'r/%s/search/',
'search_reddit_names': 'api/search_reddit_names/',
'sent': 'message/sent/',
'site_admin': 'api/site_admin/',
Expand Down Expand Up @@ -623,6 +624,19 @@ def send_feedback(self, name, email, message, reason='feedback',
params.update(captcha)
return self.request_json(self.config['feedback'], params)

def search(self, query, subreddit=None, sort=None, limit=0, *args,
**kwargs):
url_data = {'q': query}
if sort:
url_data['sort'] = sort
if subreddit:
url_data['restrict_sr'] = 'on'
url = self.config['search'] % subreddit
else:
url = self.config['search'] % 'all'
return self.get_content(url, url_data=url_data, limit=limit, *args,
**kwargs)

def search_reddit_names(self, query):
"""Search the subreddits for a reddit whose name matches the query."""
params = {'query': query,
Expand Down
4 changes: 4 additions & 0 deletions reddit/objects.py
Original file line number Diff line number Diff line change
Expand Up @@ -703,6 +703,10 @@ def flair_list(self, *args, **kwargs):
"""Return a list of flair for this subreddit."""
return self.reddit_session.flair_list(self, *args, **kwargs)

def search(self, query, *args, **kwargs):
"""Search this subreddit."""
return self.reddit_session.search(query, self, *args, **kwargs)

def set_flair(self, *args, **kwargs):
"""Set flair for a particular user."""
return self.reddit_session.set_flair(self, *args, **kwargs)
Expand Down
6 changes: 6 additions & 0 deletions reddit/reddit_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -125,6 +125,9 @@ def test_require_user_agent(self):
self.assertRaises(TypeError, Reddit, user_agent='')
self.assertRaises(TypeError, Reddit, user_agent=1)

def test_search(self):
self.assertTrue(len(list(self.r.search('test'))) > 0)

def test_search_reddit_names(self):
self.assertTrue(len(self.r.search_reddit_names('reddit')) > 0)

Expand Down Expand Up @@ -669,6 +672,9 @@ def test_my_reddits(self):
# pylint: disable-msg=W0212
self.assertTrue(subreddit.display_name in subreddit._info_url)

def test_search(self):
self.assertTrue(len(list(self.subreddit.search('test'))) > 0)

def test_subscribe_and_verify(self):
self.subreddit.subscribe()
for subreddit in self.r.user.my_reddits():
Expand Down

0 comments on commit a38a7d9

Please sign in to comment.