def friend(self): """Friend the user. :returns: The json response from the server. """ _request.evict([self.reddit_session.config['friends']]) return _modify_relationship('friend')(self.reddit_session.user, self)
def approve(self): """Give approval to object.""" url = self.reddit_session.config['approve'] params = {'id': self.content_id} response = self.reddit_session.request_json(url, params) urls = [self.reddit_session.config[x] for x in ['modqueue', 'spam']] _request.evict(urls) # pylint: disable-msg=E1101 return response
def remove(self, spam=False): """Remove approval from object.""" url = self.reddit_session.config['remove'] params = {'id': self.content_id, 'spam': 'True' if spam else 'False'} response = self.reddit_session.request_json(url, params) urls = [self.reddit_session.config[x] for x in ['modqueue', 'spam']] _request.evict(urls) # pylint: disable-msg=E1101 return response
def delete(self): """Delete this object.""" url = self.reddit_session.config['del'] params = {'id': self.content_id} response = self.reddit_session.request_json(url, params) # pylint: disable-msg=E1101 _request.evict([self.reddit_session.config['user']]) return response
def report(self): """Report this object to the moderators.""" url = self.reddit_session.config['report'] params = {'id': self.content_id} response = self.reddit_session.request_json(url, params) # pylint: disable-msg=E1101 _request.evict([self.reddit_session.config['user']]) return response
def unfriend(self): """Unfriend the user. :returns: The json response from the server. """ _request.evict([self.reddit_session.config["friends"]]) return _modify_relationship("friend", unlink=True)(self.reddit_session.user, self)
def save(self, unsave=False): """Save the object.""" url = self.reddit_session.config['unsave' if unsave else 'save'] params = {'id': self.content_id, 'executed': 'unsaved' if unsave else 'saved'} response = self.reddit_session.request_json(url, params) # pylint: disable-msg=E1101 _request.evict([self.reddit_session.config['saved']]) return response
def edit(self, text): """Edit the object to `text`""" url = self.reddit_session.config['edit'] params = {'thing_id': self.content_id, 'text': text} response = self.reddit_session.request_json(url, params) # pylint: disable-msg=E1101 _request.evict([self.reddit_session.config['user']]) # REDDIT: reddit's end should only ever return a single comment return response['data']['things'][0]
def hide(self, unhide=False): """Hide object in the context of the logged in user.""" url = self.reddit_session.config['unhide' if unhide else 'hide'] params = {'id': self.content_id, 'executed': 'unhide' if unhide else 'hide'} response = self.reddit_session.request_json(url, params) # pylint: disable-msg=W0212 urls = [urljoin(self.reddit_session.user._url, 'hidden')] _request.evict(urls) return response
def add_comment(self, text): """Comment on the submission using the specified text. :returns: A Comment object for the newly created comment. """ # pylint: disable-msg=E1101, W0212 response = self.reddit_session._add_comment(self.fullname, text) _request.evict([self.permalink]) return response
def report(self): """Report this object to the moderators.""" url = self.reddit_session.config['report'] params = {'id': self.content_id} response = self.reddit_session.request_json(url, params) # Reported objects are automatically hidden as well # pylint: disable-msg=E1101 _request.evict([self.reddit_session.config['user'], urljoin(self.reddit_session.user._url, 'hidden')]) return response
def vote(self, direction=0): """Vote for the given item in the direction specified.""" url = self.reddit_session.config['vote'] params = {'id': self.content_id, 'dir': six.text_type(direction)} # pylint: disable-msg=W0212 urls = [urljoin(self.reddit_session.user._url, 'disliked'), urljoin(self.reddit_session.user._url, 'liked')] _request.evict(urls) return self.reddit_session.request_json(url, params)
def reply(self, text): """Reply to object with the specified text.""" # pylint: disable-msg=E1101,W0212 response = self.reddit_session._add_comment(self.content_id, text) if isinstance(self, Comment): _request.evict([self.reddit_session.config['inbox'], self.submission.permalink]) elif isinstance(self, Message): _request.evict([self.reddit_session.config['inbox'], self.reddit_session.config['sent']]) return response
def save(self, unsave=False): """Save the object.""" url = self.reddit_session.config['unsave' if unsave else 'save'] params = { 'id': self.content_id, 'executed': 'unsaved' if unsave else 'saved' } response = self.reddit_session.request_json(url, params) # pylint: disable-msg=E1101 _request.evict([self.reddit_session.config['saved']]) return response
def delete(self): """Delete this object. :returns: The json response from the server. """ url = self.reddit_session.config['del'] data = {'id': self.fullname} response = self.reddit_session.request_json(url, data=data) # pylint: disable-msg=E1101 _request.evict([self.reddit_session.config['user']]) return response
def save(self, unsave=False): """Save the object. :returns: The json response from the server. """ url = self.reddit_session.config["unsave" if unsave else "save"] data = {"id": self.fullname, "executed": "unsaved" if unsave else "saved"} response = self.reddit_session.request_json(url, data=data) # pylint: disable-msg=E1101 _request.evict([self.reddit_session.config["saved"]]) return response
def edit(self, text): """Replace the body of the object with `text`. :returns: The updated object. """ url = self.reddit_session.config["edit"] data = {"thing_id": self.fullname, "text": text} response = self.reddit_session.request_json(url, data=data) # pylint: disable-msg=E1101 _request.evict([self.reddit_session.config["user"]]) # REDDIT: reddit's end should only ever return a single comment return response["data"]["things"][0]
def vote(self, direction=0): """Vote for the given item in the direction specified. :returns: The json response from the server. """ url = self.reddit_session.config["vote"] data = {"id": self.fullname, "dir": six.text_type(direction)} if self.reddit_session.user: # pylint: disable-msg=W0212 urls = [urljoin(self.reddit_session.user._url, "disliked"), urljoin(self.reddit_session.user._url, "liked")] _request.evict(urls) return self.reddit_session.request_json(url, data=data)
def hide(self, unhide=False): """Hide object in the context of the logged in user. :returns: The json response from the server. """ url = self.reddit_session.config["unhide" if unhide else "hide"] data = {"id": self.fullname, "executed": "unhide" if unhide else "hide"} response = self.reddit_session.request_json(url, data=data) # pylint: disable-msg=W0212 urls = [urljoin(self.reddit_session.user._url, "hidden")] _request.evict(urls) return response
def reply(self, text): """Reply to object with the specified text. :returns: A Comment object for the newly created comment (reply). """ # pylint: disable-msg=E1101,W0212 response = self.reddit_session._add_comment(self.fullname, text) if isinstance(self, Comment): _request.evict([self.reddit_session.config["inbox"], self.submission.permalink]) elif isinstance(self, Message): _request.evict([self.reddit_session.config["inbox"], self.reddit_session.config["sent"]]) return response
def report(self): """Report this object to the moderators. :returns: The json response from the server. """ url = self.reddit_session.config["report"] data = {"id": self.fullname} response = self.reddit_session.request_json(url, data=data) # Reported objects are automatically hidden as well # pylint: disable-msg=E1101,W0212 _request.evict([self.reddit_session.config["user"], urljoin(self.reddit_session.user._url, "hidden")]) return response
def save(self, unsave=False): """Save the object. :returns: The json response from the server. """ url = self.reddit_session.config['unsave' if unsave else 'save'] data = {'id': self.fullname, 'executed': 'unsaved' if unsave else 'saved'} response = self.reddit_session.request_json(url, data=data) # pylint: disable-msg=E1101 _request.evict([self.reddit_session.config['saved']]) return response
def reply(self, text): """Reply to object with the specified text.""" # pylint: disable-msg=E1101,W0212 response = self.reddit_session._add_comment(self.content_id, text) if isinstance(self, Comment): _request.evict([ self.reddit_session.config['inbox'], self.submission.permalink ]) elif isinstance(self, Message): _request.evict([ self.reddit_session.config['inbox'], self.reddit_session.config['sent'] ]) return response
def edit(self, text): """Replace the body of the object with `text`. :returns: The updated object. """ url = self.reddit_session.config['edit'] data = {'thing_id': self.fullname, 'text': text} response = self.reddit_session.request_json(url, data=data) # pylint: disable-msg=E1101 _request.evict([self.reddit_session.config['user']]) # REDDIT: reddit's end should only ever return a single comment return response['data']['things'][0]
def hide(self, unhide=False): """Hide object in the context of the logged in user. :returns: The json response from the server. """ url = self.reddit_session.config['unhide' if unhide else 'hide'] data = {'id': self.fullname, 'executed': 'unhide' if unhide else 'hide'} response = self.reddit_session.request_json(url, data=data) # pylint: disable-msg=W0212 urls = [urljoin(self.reddit_session.user._url, 'hidden')] _request.evict(urls) return response
def approve(self): """Approve object. This reverts a removal, resets the report counter, marks it with a green checkmark (only visible to other moderators) on the webend and sets the approved_by attribute to the logged in user. :returns: The json response from the server. """ url = self.reddit_session.config['approve'] data = {'id': self.fullname} response = self.reddit_session.request_json(url, data=data) urls = [self.reddit_session.config[x] for x in ['modqueue', 'spam']] if isinstance(self, Submission): urls += self.subreddit._listing_urls # pylint: disable-msg=W0212 _request.evict(urls) # pylint: disable-msg=E1101 return response
def remove(self, spam=False): """Remove object. This is the moderator version of delete. The object is removed from the subreddit listings and placed into the spam listing. If spam is set to True, then the automatic spam filter will try to remove objects with similair attributes in the future. :returns: The json response from the server. """ url = self.reddit_session.config["remove"] data = {"id": self.fullname, "spam": "True" if spam else "False"} response = self.reddit_session.request_json(url, data=data) urls = [self.reddit_session.config[x] for x in ["modqueue", "spam"]] if isinstance(self, Submission) and hasattr(self, "subreddit"): urls += self.subreddit._listing_urls # pylint: disable-msg=W0212 _request.evict(urls) # pylint: disable-msg=E1101 return response
def add_comment(self, text): """If logged in, comment on the submission using the specified text.""" # pylint: disable-msg=E1101, W0212 response = self.reddit_session._add_comment(self.content_id, text) _request.evict([self.permalink]) return response