from exceptions import Exception
from twitter.twitter_globals import POST_ACTIONS
-from twitter.auth import UserPassAuth
+from twitter.auth import UserPassAuth, NoAuth
def _py26OrGreater():
import sys
class TwitterError(Exception):
"""
- Exception thrown by the Twitter object when there is an
- error interacting with twitter.com.
+ Base Exception thrown by the Twitter object when there is a
+ general error interacting with the API.
"""
pass
+class TwitterHTTPError(TwitterError):
+ """
+ Exception thrown by the Twitter object when there is an
+ HTTP error interacting with twitter.com.
+ """
+ def __init__(self, e, uri, format, encoded_args):
+ self.e = e
+ self.uri = uri
+ self.format = format
+ self.encoded_args = encoded_args
+
+ def __str__(self):
+ return "Twitter sent status %i for URL: %s.%s using parameters: (%s)\ndetails: %s" %(
+ self.e.code, self.uri, self.format, self.encoded_args, self.e.fp.read())
+
class TwitterCall(object):
def __init__(
self, auth, format, domain, uri="", agent=None,
secure_str = ''
if self.secure:
secure_str = 's'
- uriBase = "http%s://%s/%s.%s" %(
- secure_str, self.domain, uri, self.format)
+ dot = ""
+ if self.format != '':
+ dot = "."
+ uriBase = "http%s://%s/%s%s%s" %(
+ secure_str, self.domain, uri, dot, self.format)
if (not self.encoded_args):
if kwargs.has_key('id'):
if (e.code == 304):
return []
else:
- raise TwitterError(
- "Twitter sent status %i for URL: %s.%s using parameters: (%s)\ndetails: %s" %(
- e.code, uri, self.format, self.encoded_args, e.fp.read()))
+ raise TwitterHTTPError(e, uri, self.format, self.encoded_args)
class Twitter(TwitterCall):
"""
raise ValueError, "can't specify 'email' or 'password' and 'auth' params"
auth = UserPassAuth(email, password)
- if (format not in ("json", "xml")):
+ if not auth:
+ auth = NoAuth()
+
+ if (format not in ("json", "xml", "")):
raise TwitterError("Unknown data format '%s'" %(format))
TwitterCall.__init__(
self, auth, format, domain, "", agent,
secure=secure)
-__all__ = ["Twitter", "TwitterError"]
+__all__ = ["Twitter", "TwitterError", "TwitterHTTPError"]