def get_rate_limits(self): '''Actualizando llamdas restantes a la api''' try: rtn = self.http.request('%s/account/rate_limit_status' % self.apiurl) return Response(self.__create_rate(rtn), 'rate') except TurpialException, exc: return Response(None, 'error', exc.msg)
def get_favorites(self): '''Actualizando favoritos''' self.log.debug('Descargando favoritos') try: rtn = self.http.request('%s/favorites' % self.apiurl) self.favorites = self.response_to_statuses(rtn) return Response(self.favorites, 'status') except TurpialException, exc: return Response(None, 'error', exc.msg)
def filter_term(self, args): arg = args['arg'] print "protocols.py: ", arg, type(arg).__name__ if type(arg).__name__ == 'list': self._filter_by_list(arg) else: self._filter_by_term(arg) return (Response(self.get_muted_timeline(self.timeline), 'status'), Response(self.get_muted_timeline(self.replies), 'status'), Response(self.get_muted_timeline(self.favorites), 'status'))
def start_oauth(self, args): auth = args['auth'] if auth['oauth-key'] != '' and auth['oauth-secret'] != '' and \ auth['oauth-verifier'] != '': token = self.http.build_token(auth) return Response(token, 'auth-done') else: try: url = self.http.request_token() return Response(url, 'auth-token') except TurpialException, exc: return Response(None, 'error', exc.msg)
def get_timeline(self, args): '''Actualizando linea de tiempo''' self.log.debug('Descargando timeline') count = args['count'] try: rtn = self.http.request('%s/statuses/home_timeline' % self.apiurl, {'count': count}) self.timeline = self.response_to_statuses(rtn) return Response(self.get_muted_timeline(self.timeline), 'status') except TurpialException, exc: return Response(None, 'error', exc.msg)
def destroy_direct(self, args): '''Destruyendo tweet directo''' id = args['id'] self.log.debug('Destruyendo directo: %s' % id) try: rtn = self.http.request('%s/direct_messages/destroy' % self.apiurl, {'id': id}) self._destroy_direct(rtn['id']) return Response(self.directs, 'status') except TurpialException, exc: return Response(None, 'error', exc.msg)
def get_replies(self, args): '''Actualizando menciones''' self.log.debug('Descargando menciones') count = args['count'] try: rtn = self.http.request('%s/statuses/mentions' % self.apiurl, {'count': count}) self.replies = self.response_to_statuses(rtn) return Response(self.replies, 'status') except TurpialException, exc: return Response(None, 'error', exc.msg)
def get_directs(self, args): '''Actualizando mensajes directos''' self.log.debug('Descargando directos') count = args['count'] try: rtn = self.http.request('%s/direct_messages' % self.apiurl, {'count': count}) self.directs = self.response_to_statuses(rtn, type=UPDATE_TYPE_DM) return Response(self.directs, 'status') except TurpialException, exc: return Response(None, 'error', exc.msg)
def search(self, args): ''' Buscando en Twitter ''' query = args['query'] count = args['count'] self.log.debug('Buscando tweets: %s' % query) try: rtn = self.http.request('%s/search' % self.apiurl2, {'q': query, 'rpp': count}) return Response(self.response_to_statuses(rtn['results']), 'status') except TurpialException, exc: return Response(None, 'error', exc.msg)
def get_sent(self, args): '''Actualizando mensajes enviados''' self.log.debug('Descargando mis dents') count = args['count'] try: rtn = self.http.request('%s/statuses/user_timeline' % self.apiurl, {'count': count}) self.directs = self.response_to_statuses(rtn) return Response(self.directs, 'status') except TurpialException, exc: return Response(None, 'error', exc.msg)
def follow(self, args): '''Siguiendo a un amigo''' user = args['user'] self.log.debug('Siguiendo a: %s' % user) try: rtn = self.http.request('%s/friendships/create' % self.apiurl, {'screen_name': user}) user = self.__create_profile(rtn) self._add_friend(user) return Response([self.profile, user, True], 'mixed') except TurpialException, exc: return Response([None, user, True], 'error', exc.msg)
def unfollow(self, args): '''Dejando de seguir a un amigo''' user = args['user'] self.log.debug('Dejando de seguir a: %s' % user) try: rtn = self.http.request('%s/friendships/destroy' % self.apiurl, {'screen_name': user}) user = self.__create_profile(rtn) self._del_friend(user) return Response([self.profile, user, False], 'mixed') except TurpialException, exc: return Response(False, 'error', exc.msg)
def destroy_status(self, args): '''Destruyendo tweet''' id = args['id'] self.log.debug('Destruyendo tweet: %s' % id) try: rtn = self.http.request('%s/statuses/destroy' % self.apiurl, {'id': id}) self._destroy_status(str(rtn['id'])) return (Response(self.get_muted_timeline(self.timeline), 'status'), Response(self.favorites, 'status')) except TurpialException, exc: return (Response(None, 'error', exc.msg), Response(None, 'error', exc.msg))
def repeat(self, args): '''Haciendo retweet''' id = args['id'] self.log.debug('Retweet: %s' % id) try: rtn = self.http.request('%s/statuses/retweet' % self.apiurl, args) #users = self.__get_retweet_users(id) status = self.__create_status(rtn) #status.retweet_by = users # FIXME: Modificar también los replies y favoritos self._add_status(self.timeline, status) return Response(self.get_muted_timeline(self.timeline), 'status') except TurpialException, exc: return Response(None, 'error', exc.msg)
def get_list_statuses(self, args): '''Actualizando estados de una lista''' id = args['id'] user = args['user'] count = args['count'] self.log.debug('Descargando lista %s' % id) try: rtn = self.http.request( '%s/%s/lists/%s/statuses' % (self.apiurl, user, id), {'per_page': count}) statuses = self.response_to_statuses(rtn) return Response(self.get_muted_timeline(statuses), 'status') except TurpialException, exc: return Response(None, 'error', exc.msg)
def auth(self, args): ''' Inicio de autenticacion segura ''' self.log.debug('Iniciando autenticacion segura') username = args['username'] password = args['password'] try: self.http.auth(username, password, None) rtn = self.http.request('%s/account/verify_credentials' % self.apiurl) self.profile = self.__create_profile(rtn) self.profile.password = password return Response(self.profile, 'profile') except TurpialException, exc: return Response(None, 'error', exc.msg)
def update_profile(self, args): '''Actualizando perfil''' self.log.debug('Actualizando perfil') name = args['name'] url = args['url'] bio = args['bio'] location = args['location'] try: rtn = self.http.request('%s/account/update_profile' % self.apiurl, {'name': name, 'url': url, 'location': location, 'description': bio}) return Response(self.__create_profile(rtn), 'profile') except TurpialException, exc: return Response(None, 'error', exc.msg)
def get_friends_list(self): '''Descargando lista de amigos''' tries = 0 count = 0 cursor = -1 friends = [] self.log.debug('Descargando Lista de Amigos') while 1: try: rtn = self.http.request('%s/statuses/friends' % self.apiurl, {'cursor': cursor}) except TurpialException, exc: tries += 1 if tries < 3: continue else: return Response(None, 'error', exc.msg) for user in rtn['users']: friends.append(self.__create_profile(user)) count += 1 if rtn['next_cursor'] > 0: cursor = rtn['next_cursor'] continue else: break
def get_lists(self): ''' Obteniendo las listas del usuario ''' tries = 0 count = 0 cursor = -1 lists = [] self.log.debug('Descargando Listas del usuario') # Descargando listas propias while 1: try: rtn = self.http.request( '%s/%s/lists' % (self.apiurl, self.profile.username), {'cursor': cursor}) except TurpialException, exc: tries += 1 if tries < 3: continue else: return Response(None, 'error', exc.msg) for ls in rtn['lists']: lists.append(self.__create_list(ls)) count += 1 if rtn['next_cursor'] > 0: cursor = rtn['next_cursor'] continue else: break
def update_status(self, args): '''Actualizando estado''' in_reply_id = args['in_reply_id'] text = args['text'] if in_reply_id: args['in_reply_to_status_id'] = in_reply_id args['status'] = text args['source'] = 'Turpial' self.log.debug(u'Nuevo tweet: %s' % text) try: rtn = self.http.request('%s/statuses/update' % self.apiurl, args) status = self.__create_status(rtn) self._add_status(self.timeline, status) return Response(self.get_muted_timeline(self.timeline), 'status') except TurpialException, exc: return Response(None, 'error', exc.msg)
def update_status(self, args): '''Actualizando estado''' in_reply_id = args['in_reply_id'] text = args['text'] if in_reply_id: args = {'status': text, 'in_reply_to_status_id': in_reply_id} else: args = {'status': text} self.log.debug(u'Nuevo tweet: %s' % text) try: rtn = self.http.request('%s/statuses/update' % self.apiurl, args) # Evita que se duplique el último estado del usuario if rtn['id'] != self.profile.last_update_id: status = self.__create_status(rtn) self._add_status(self.timeline, status) self.profile.last_update = rtn['text'] self.profile.last_update_id = rtn['id'] return Response(self.get_muted_timeline(self.timeline), 'status') except TurpialException, exc: return Response(None, 'error', exc.msg)
def get_conversation(self, args): '''Obteniendo conversacion''' id = args['id'] conversation = [] self.log.debug(u'Obteniendo conversación:') while 1: try: rtn = self.http.request('%s/statuses/show' % self.apiurl, {'id': id}) except TurpialException, exc: return Response(None, 'error', exc.msg) self.log.debug('--Descargado Tweet: %s' % id) conversation.append(rtn) if rtn['in_reply_to_status_id']: id = str(rtn['in_reply_to_status_id']) else: break
def unmark_favorite(self, args): '''Desmarcando tweet como favorito''' id = args['id'] self.log.debug('Desmarcando tweet como favorito: %s' % id) try: rtn = self.http.request('%s/favorites/destroy' % self.apiurl, {'id': id}) status = self.__create_status(rtn) self._unset_status_favorite(status) return (Response(self.get_muted_timeline(self.timeline), 'status'), Response(self.replies, 'status'), Response(self.favorites, 'status')) except TurpialException, exc: return (Response(None, 'error', exc.msg), Response(None, 'error', exc.msg), Response(None, 'error', exc.msg))
self.log.debug('Iniciando autenticacion segura') username = args['username'] password = args['password'] try: self.http.auth(username, password, None) rtn = self.http.request('%s/account/verify_credentials' % self.apiurl) self.profile = self.__create_profile(rtn) self.profile.password = password return Response(self.profile, 'profile') except TurpialException, exc: return Response(None, 'error', exc.msg) except Exception, exc: self.log.debug('Authentication Error: %s' % exc) return Response(None, 'error', _('Authentication Error')) def start_oauth(self, args): auth = args['auth'] token = self.http.build_token(auth) return Response(token, 'auth-done') def get_timeline(self, args): '''Actualizando linea de tiempo''' self.log.debug('Descargando timeline') count = args['count'] try: rtn = self.http.request('%s/statuses/home_timeline' % self.apiurl, {'count': count}) self.timeline = self.response_to_statuses(rtn)
def start_oauth(self, args): auth = args['auth'] token = self.http.build_token(auth) return Response(token, 'auth-done')