""" Contributors can be viewed at: http://svn.secondlife.com/svn/linden/projects/2008/pyogp/lib/base/trunk/CONTRIBUTORS.txt $LicenseInfo:firstyear=2008&license=apachev2$ Copyright 2009, Linden Research, Inc. Licensed under the Apache License, Version 2.0. You may obtain a copy of the License at: http://www.apache.org/licenses/LICENSE-2.0 or in http://svn.secondlife.com/svn/linden/projects/2008/pyogp/lib/base/LICENSE.txt $/LicenseInfo$ """ """ Exceptions for the pyogp library """ class Error(Exception): """base exception for all pyogp related exceptions""" class AgentError(Error): """ general Agent exception """ class LoginError(Error): """ raised if there is an error in login """ def __init__(self, error): self.error = error def __str__(self): return "Agent login error: %s" % (self.error) class ParseStartLocError(LoginError): """ raised when the is an error in parsing the user specified start location """ def __init__(self, error): self.error = error def __str__(self): return "Invalid start location specified, using defaults in settings" #### Network errors class NetworkError(Error): """general network exception""" class HTTPError(NetworkError): """an HTTP error""" def __init__(self, code, msg, fp, details=""): """initialize this exception""" self.code = code self.msg = msg self.details = details self.fp = fp def __str__(self): """return a string representation""" return "%s %s" %(self.code, self.msg) class ResourceNotFound(NetworkError): """raised if a resource couldn't be found the URL to that resource is stored inside a ``url`` attribute. """ def __init__(self, url = ''): self.url = url def __str__(self): return self.url class ResourceError(NetworkError): """raised if any other error occurred (usually a 500) contains ``url`` to the resource and ``code`` and ``message`` and ``body`` """ def __init__(self, url='', code='', message='', body='', method='GET'): self.url = url self.code = code self.message = message self.body = body self.method = method def __str__(self): """return a printable version""" return "Error using '%s' on resource '%s': %s (%s)" %(self.method, self.url, self.message, self.code) ### Serialization errors class SerializationError(Error): """serialization related exceptions""" ### Deserialization errors class DeserializationError(Error): """deserialization related exception""" class DeserializerNotFound(DeserializationError): """raised if a deserializer for a certain content type couldn't be found stores the content type inside a ``content_type`` attribute. """ def __init__(self, content_type=''): self.content_type = content_type def __str__(self): return "deserialization for '%s' not supported" % (self.content_type) class CredentialDeserializerNotFound(DeserializationError): """raised if a deserializer for a certain content type couldn't be found stores the content type inside a ``content_type`` attribute. """ def __init__(self, payload=''): self.payload = payload def __str__(self): return "deserialization for payload '%s' not supported" % (self.payload) class DeserializationFailed(DeserializationError): """raised if a deserializer couldn't deserialize a payload stores the payload inside a ``payload`` attribute and the error message inside a ``reason`` attribute. """ def __init__(self, payload='', reason=''): self.payload = payload self.reason = reason def __str__(self): return "deserialization failed for '%s', reason: '%s'" %(self.payload, self.reason) ### Message System related errors class MessageSystemError(Error): """message system related exception""" class MessageTemplateNotFound(MessageSystemError): """ message template file not found stores the context in a ``context`` attribute """ def __init__(self, context='',template=''): self.context = context self.template = template def __str__(self): return "No message template found, context: '%s'" % (self.context) class MessageTemplateParsingError(MessageSystemError): """ message template parsing error stores the context in a ``context`` attribute """ def __init__(self, context='',template=''): self.context = context self.template = template def __str__(self): return "Error parsing message template, context: '%s'" % (self.context) class CircuitNotFound(MessageSystemError): """ circuit to host could not be found stores the host missing a circuit in a ``host`` attribute """ def __init__(self, host='', reason=''): self.host = host self.reason = reason def __str__(self): return "No circuit to '%s' found, reason: '%s'" % (self.host, self.reason) class MessageBuildingError(MessageSystemError): """ problem serializing packet data stores the label and reason in ``label`` and ``reason`` attributes """ def __init__(self, label='', reason=''): self.label = label self.reason = reason def __str__(self): return "Error serializing '%s' due to reason: '%s'" % (self.label, self.reason) class MessageSerializationError(MessageSystemError): """ problem serializing packet data stores the label and reason in ``label`` and ``reason`` attributes """ def __init__(self, label='', reason=''): self.label = label self.reason = reason def __str__(self): return "Error serializing '%s' due to reason: '%s'" % (self.label, self.reason) class MessageDeserializationError(MessageSystemError): """ problem deserializing packet data stores the label and reason in ``label`` and ``reason`` attributes """ def __init__(self, label='', reason=''): self.label = label self.reason = reason def __str__(self): return "Error deserializing '%s' due to reason: '%s'" % (self.label, self.reason) class DataUnpackingError(MessageSystemError): """ problem deserializing packet data stores the label and reason in ``label`` and ``reason`` attributes """ def __init__(self, data='', reason=''): self.data = data self.reason = reason def __str__(self): return "Error serializing '%s' due to reason: '%s'" % (self.data, self.reason) ########################## ### high level exceptions ########################## ### Agent Domain related errors class AgentDomainError(Error): """base exception for all errors which can occur on an agent domain""" class UserNotFound(AgentDomainError): """user couldn't be found This exception stores the credentials used inside a ``credentials`` attribute """ def __init__(self, credentials = None): """initialize this exception""" self.credentials = credentials class UserNotAuthorized(AgentDomainError): """an error raised in case a user couldn't be authorized stores the credentials used inside a ``credentials`` attribute """ def __init__(self, credentials = None): """initialize this exception""" self.credentials = credentials class UserRezFailed(AgentDomainError): """an error raised in case a user couldn't rez on a sim stores the region used inside a ``region`` attribute """ def __init__(self, region = None): """initialize this exception""" self.region = region ### Region Domain related errors class RegionDomainError(Error): """base exception for all errors which can occur on an region domain""" class RegionSeedCapNotAvailable(RegionDomainError): """an error raised in case a user couldn't be authorized stores the cap used inside a ``cap`` attribute """ def __init__(self, reason = None): """initialize this exception""" self.reason = reason def __str__(self): return "Region seed capability not found when %s'" % (self.reason) class RegionCapNotAvailable(RegionDomainError): """an error raised in case a user couldn't be authorized stores the cap used inside a ``cap`` attribute """ def __init__(self, cap = None): """initialize this exception""" self.cap = cap class RegionMessageError(RegionDomainError): """ an error raised when a region does not have a connection over which it can send UDP messages accepts a region object as an attribute """ def __init__(self, region = None): """initialize this exception""" self.region = region def __str__(self): return "Agent has no udp connection enabled for: %s'" % (self.region) ### General errors class DataParsingError(Error): """ an error raised data parsing fails """ def __init__(self, error = None): """initialize this exception""" self.error = error def __str__(self): return "Data parsing error: %s'" % (self.error) class NotImplemented(Error): """ an error raised when method is not implemented """ def __init__(self, error = None): """ initialize this exception """ self.error = error def __str__(self): return "This method has to be implemented here: %s" % (self.error) class Deprecated(Error): """ an error raised when method is not implemented """ def __init__(self, thing = None): """ initialize this exception """ self.thing = thing def __str__(self): return "This thing is deprecated: %s" % (self.thing)