From: Baŝto Date: Fri, 1 Mar 2013 21:11:50 +0000 (+0100) Subject: Create new Conversations, answer to old ones or delete them X-Git-Url: https://vcs.fsf.org/?a=commitdiff_plain;h=70227e79e1cd6bac97e35a1d701996e401fea7f2;p=diaspy.git Create new Conversations, answer to old ones or delete them --- diff --git a/diaspy/conversations.py b/diaspy/conversations.py new file mode 100644 index 0000000..3a844ad --- /dev/null +++ b/diaspy/conversations.py @@ -0,0 +1,81 @@ +import requests + +class Conversation: + """This class represents a conversation. + + .. note:: + Remember that you need to have access to the conversation. + + """ + + def __init__(self, conv_id, client): + """ + :param conversation_id: id of the post and not the guid! + :type conversation_id: str + :param client: client object used to authenticate + :type client: client.Client + + .. note:: + The login function of the client should be called, + before calling any of the post functions. + + """ + self._client = client + self.conv_id = conv_id + + def get_data(self): + """ returns the plain json data + """ + r = self._client.session.get(self._client.pod + + '/conversations/' + + self.conv_id + + '.json') + if r.status_code == 200: + return r.json()['conversation'] + else: + raise Exception('wrong status code: ' + str(r.status_code)) + + def answer(self, text): + """ answer that conversation + + :param text: text to answer. + :type text: str + + """ + + data = {'message[text]': text, + 'utf8': '✓', + 'authenticity_token': self._client.get_token()} + + r = self._client.session.post(self._client.pod + + '/conversations/' + + self.conv_id + + '/messages', + data=data, + headers={'accept': 'application/json'}) + if r.status_code != 200: + raise Exception(str(r.status_code) + + ': Answer could not be posted.') + + return r.json() + + def delete(self): + """ delete this conversation + has to be implemented + """ + data = {'authenticity_token': self._client.get_token()} + + r = self._client.session.delete(self._client.pod + '/conversations/' + + self.conv_id + + '/visibility/', + data=data, + headers={'accept': 'application/json'}) + + if r.status_code != 404: + raise Exception(str(r.status_code) + + ': Conversation could not be deleted.') + + def get_subject(self): + """ return the subject of this conversation + """ + return self.get_data()['subject']