Started to work for implementation of twython using requests
This commit is contained in:
parent
eefbc3ea56
commit
d3c364601b
1 changed files with 168 additions and 0 deletions
168
twython/twythonrequests.py
Normal file
168
twython/twythonrequests.py
Normal file
|
|
@ -0,0 +1,168 @@
|
|||
#! /usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
Twython is a library for Python that wraps the Twitter API.
|
||||
It aims to abstract away all the API endpoints, so that additions to the
|
||||
library and/or the Twitter API won't cause any overall problems.
|
||||
|
||||
twythonrequests is twython implementation using requests.
|
||||
|
||||
Questions, comments? ryan@venodesigns.net, me@kracekumar.com
|
||||
"""
|
||||
|
||||
__author__ = "kracekumar"
|
||||
__version__ = "0.1"
|
||||
|
||||
"""
|
||||
Importing requests and requests-oauth.
|
||||
requests supports 2.5 and above and no support for 3.x.
|
||||
|
||||
"""
|
||||
import mimetypes
|
||||
import mimetools
|
||||
import re
|
||||
import inspect
|
||||
from urlparse import parse_qs
|
||||
|
||||
try:
|
||||
#Python 2.6 and up
|
||||
import requests
|
||||
import oauth_hook
|
||||
except ImportError:
|
||||
raise Exception("twythonrequests requires requests - \
|
||||
http://pypi.python.org/pypi/requests and \
|
||||
requests-oauth -http://pypi.python.org/pypi/requests-oauth\
|
||||
")
|
||||
|
||||
#since requests support 2.5 and above, check for json and if fails check for\
|
||||
#simplejson if that fails, requests installation must be broken.
|
||||
|
||||
try:
|
||||
import json
|
||||
except ImportError:
|
||||
try:
|
||||
import simplejson as json
|
||||
except ImportError:
|
||||
# This must be dead code still worth
|
||||
raise Exception("twythonrequests")
|
||||
|
||||
#imports required for Error Handling. Now I am importing from twython file in
|
||||
# future, it will be include in the same file, Hope ryan agrees :)
|
||||
from twython import TwythonError, APILimit, RateLimitError, AuthError
|
||||
|
||||
class Twython(object):
|
||||
def __init__(self, twitter_token = None, twitter_secret = None, \
|
||||
oauth_token = None, oauth_token_secret = None, headers = None,\
|
||||
callback_url = None):
|
||||
|
||||
""" setup(self, oauth_token = None, headers = None)
|
||||
|
||||
Instantiates an instance of Twython.
|
||||
Takes optional parameters for authentication and such (see below).
|
||||
|
||||
Parameters:
|
||||
twitter_token - Given to you when you register your application
|
||||
with Twitter.
|
||||
|
||||
twitter_secret - Given to you when you register your application
|
||||
with Twitter.
|
||||
|
||||
oauth_token - If you've gone through the authentication process
|
||||
and have a token for this user, pass it in and it'll
|
||||
be used for all requests going forward.
|
||||
|
||||
oauth_token_secret - see oauth_token; it's the other half.
|
||||
|
||||
headers - User agent header, dictionary style aka
|
||||
{'User-Agent': 'Bert'}
|
||||
"""
|
||||
# API for accessing twitter data
|
||||
self.request_token_url = "http://twitter.com/oauth/request_token"
|
||||
self.access_token_url = "http://twitter.com/oauth/access_token"
|
||||
self.authorize_url = "http://twitter.com/oauth/authorize"
|
||||
self.authenticate_url = "http://twitter.com/oauth/authenticate"
|
||||
self.twitter_token = twitter_token
|
||||
self.twitter_secret = twitter_secret
|
||||
self.oauth_token = oauth_token
|
||||
self.oauth_secret = oauth_token_secret
|
||||
self.callback_url = callback_url or 'oob'
|
||||
self.oauth_hook = None
|
||||
self.client = None
|
||||
|
||||
#In case headers are present lets add
|
||||
if headers is None:
|
||||
self.headers = {'User-agent': 'Twython python library v1.3 via \
|
||||
python-requests'}
|
||||
else:
|
||||
self.headers = headers
|
||||
|
||||
#next is oauth, here we use requests-oauth
|
||||
if self.twitter_token:
|
||||
OAuthHook.consumer_key = self.twitter_token
|
||||
|
||||
if self.twitter_secret:
|
||||
OAuthHook.consumer_secret = self.twitter_secret
|
||||
|
||||
#if users pass oauth token and secret we initialize with oauth_hook
|
||||
if self.oauth_token and self.oauth_secret:
|
||||
#Creating OAuthHooks
|
||||
self.oauth_hook = oauth_hook.OAuthHook(self.oauth_auth_token,\
|
||||
self.ouath_secret)
|
||||
|
||||
#real magic of requests start here
|
||||
self.client = requests.session(hooks={ 'pre_request': \
|
||||
self.oauth_hook })
|
||||
else:
|
||||
if self.twitter_token and self.twitter_secret:
|
||||
self.oauth_hook = oauth_hook.OAuthhook(\
|
||||
consumer_key=self.twitter_token,\
|
||||
consumer_secret=self.twitter_secret)
|
||||
self.client = requests.session(hooks={'pre_request':\
|
||||
self.oauth_hook})
|
||||
|
||||
def __getattr__(self, api_call):
|
||||
pass
|
||||
|
||||
def get(self, **kwargs):
|
||||
pass
|
||||
|
||||
def get_authorized_tokens(self):
|
||||
|
||||
def get_authentication_tokens(self, internal = None):
|
||||
"""
|
||||
get_auth_url(self)
|
||||
|
||||
Returns an authorization URL for a user to hit.
|
||||
"""
|
||||
if internal:
|
||||
self.response = self.client.post(self.request_token_url,\
|
||||
{'oauth_callback': self.callback_url})
|
||||
else:
|
||||
self.response = self.client.get(self.request_token_url)
|
||||
|
||||
if self.response.code == 200:
|
||||
self.response = parse_qs(self.response.content)
|
||||
try:
|
||||
return {'oauth_token': self.response['oauth_token'],\
|
||||
'oauth_secret': self.response['oauth_token_secret'])}
|
||||
except AttributeError, e:
|
||||
raise TwythonError("Something went wrong, with parsing or call\
|
||||
\n get_authentication_token() failed with %s error code"% \
|
||||
`e.code`)
|
||||
else:
|
||||
raise AuthError("Something went wrong\nError code:%s\n\
|
||||
Error Message:%s"%(self.response.status_code,\
|
||||
self.response.error.msg))
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue