pass
+class StreamError(DiaspyError):
+ """Exception raised when something related to streams goes wrong.
+ """
+ pass
+
+
def react(r, message='', accepted=[200, 201, 202, 203, 204, 205, 206], exception=DiaspyError):
"""This method tries to decides how to react
to a response code passed to it. If it's an
def _fetch(self):
"""This function retrieves data of the post.
"""
- request = self._connection.get('posts/{0}.json'.format(self.post_id))
+ request = self._connection.get('posts/{0}.json'.format(self.id))
if request.status_code != 200:
raise errors.PostError('wrong status code: {0}'.format(request.status_code))
else:
self.data = request.json()
+ def update(self):
+ """Updates post data.
+ """
+ self._fetch()
+
def like(self):
"""This function likes a post.
It abstracts the 'Like' functionality.
"""
data = {'authenticity_token': repr(self._connection)}
- request = self._connection.post('posts/{0}/likes'.format(self.post_id),
+ request = self._connection.post('posts/{0}/likes'.format(self.id),
data=data,
headers={'accept': 'application/json'})
data = {'authenticity_token': self._connection.get_token()}
request = self._connection.delete('posts/{0}/likes/{1}'
- .format(self.post_id,
+ .format(self.id,
self.data['interactions']
['likes'][0]['id']),
data=data)
if max_time: params['max_time'] = max_time
request = self._connection.get(self._location, params=params)
if request.status_code != 200:
- raise Exception('wrong status code: {0}'.format(request.status_code))
- return [Post(str(post['id']), self._connection) for post in request.json()]
+ raise error.StreamError('wrong status code: {0}'.format(request.status_code))
+ return [Post(self._connection, post['id']) for post in request.json()]
def _expand(self, new_stream):
"""Appends older posts to stream.
def _update(self, new_stream):
"""Updates stream with new posts.
"""
- ids = [post.post_id for post in self._stream]
+ ids = [post.id for post in self._stream]
stream = self._stream
for i in range(len(new_stream)):
- if new_stream[-i].post_id not in ids:
+ if new_stream[-i].id not in ids:
stream = [new_stream[-i]] + stream
ids.append(new_stream[-i].post_id)
self._stream = stream
for post in self._stream:
deleted = False
try:
- post.get_data()
+ post.update()
stream.append(post)
except Exception:
deleted = True
"""
request = self._connection.get(self._location)
if request.status_code != 200:
- raise Exception('wrong status code: {0}'.format(request.status_code))
- return [Post(str(post['id']), self._connection) for post in request.json()]
+ raise error.StreamError('wrong status code: {0}'.format(request.status_code))
+ return [Post(self._connection, post['id']) for post in request.json()]
class Stream(Generic):
data=json.dumps(data),
headers={'content-type': 'application/json',
'accept': 'application/json',
- 'x-csrf-token': self._connection.get_token()})
+ 'x-csrf-token': repr(self._connection)})
if request.status_code != 201:
raise Exception('{0}: Post could not be posted.'.format(request.status_code))
- post = Post(str(request.json()['id']), self._connection)
+ post = Post(self._connection, request.json()['id'])
return post
def _photoupload(self, filename):
params['photo[aspect_ids][{0}]'.format(i)] = aspect['id']
headers = {'content-type': 'application/octet-stream',
- 'x-csrf-token': self._connection.get_token(),
+ 'x-csrf-token': repr(self._connection),
'x-file-name': filename}
request = self._connection.post('photos', data=image, params=params, headers=headers)