diff --git a/signalwire/rest/__init__.py b/signalwire/rest/__init__.py index ab2416f..b488c13 100644 --- a/signalwire/rest/__init__.py +++ b/signalwire/rest/__init__.py @@ -19,6 +19,9 @@ from twilio.rest.fax import Fax as TwilioFax from twilio.rest.fax.v1 import V1 as TwilioV1 +from twilio.rest.fax.v1.fax import FaxList + +from signalwire.rest.fax import SWFaxContext import sys from six import u @@ -311,6 +314,9 @@ def patched_fax_init(self, twilio): # Versions self._v1 = None +def patched_faxlist_call(self, sid): + return SWFaxContext(self._version, sid) + def patched_fax_v1_init(self, domain): """ Initialize the V1 version of Fax @@ -319,7 +325,8 @@ def patched_fax_v1_init(self, domain): """ super(TwilioV1, self).__init__(domain) self.version = "2010-04-01/Accounts/" + domain.account_sid - self._faxes = None + FaxList.__call__ = patched_faxlist_call + self._faxes = FaxList(self) class Client(TwilioClient): diff --git a/signalwire/rest/fax.py b/signalwire/rest/fax.py new file mode 100644 index 0000000..ff965bd --- /dev/null +++ b/signalwire/rest/fax.py @@ -0,0 +1,73 @@ +from twilio.base import values, deserialize +from twilio.rest.fax.v1.fax import FaxContext, FaxInstance + +class SWFaxContext(FaxContext): + def fetch(self): + """ + Fetch the SWFaxInstance + + :returns: The fetched SWFaxInstance + :rtype: signalwire.rest.fax.SWFaxInstance + """ + payload = self._version.fetch(method='GET', uri=self._uri, ) + + return SWFaxInstance(self._version, payload, sid=self._solution['sid'], ) + + def update(self, status=values.unset): + """ + Update the SWFaxInstance + + :param FaxInstance.UpdateStatus status: The new status of the resource + + :returns: The updated SWFaxInstance + :rtype: signalwire.rest.fax.SWFaxInstance + """ + data = values.of({'Status': status, }) + + payload = self._version.update(method='POST', uri=self._uri, data=data, ) + + return SWFaxInstance(self._version, payload, sid=self._solution['sid'], ) + + def __repr__(self): + """ + Provide a friendly representation + + :returns: Machine friendly representation + :rtype: str + """ + context = ' '.join('{}={}'.format(k, v) for k, v in self._solution.items()) + return ''.format(context) + + +class SWFaxInstance(FaxInstance): + def __init__(self, version, payload, sid=None): + super().__init__(version, payload, sid) + self._properties.update({ + "error_code": deserialize.integer(payload.get("error_code")), + "error_message": payload.get("error_message"), + }) + + @property + def error_code(self): + """ + :returns: Returns the error code of the fax + :rtype: int + """ + return self._properties['error_code'] + + @property + def error_message(self): + """ + The error message of the fax + """ + return self._properties['error_message'] + + def __repr__(self): + """ + Provide a friendly representation + + :returns: Machine friendly representation + :rtype: str + """ + context = ' '.join('{}={}'.format(k, v) for k, v in self._solution.items()) + return ''.format(context)