+ self.check_parameters(parameters)
+ account = unicode(parameters['account'])
+ encodedAccount = parameters['account'].encode('utf-8')
+ encodedPassword = parameters['password'].encode('utf-8')
+ encodedCallback = misc_utils.normalize_number(parameters['forward'].encode('utf-8'))
+ if encodedCallback and not misc_utils.is_valid_number(encodedCallback):
+ raise telepathy.errors.InvalidArgument("Invalid forwarding number")
+
+ # Connection init must come first
+ self.__options = TheOneRingOptions(parameters)
+ self.__session = gvoice.session.Session(
+ cookiePath = None,
+ defaults = {
+ "contacts": (self.__options.contactsPollPeriodInHours, "hours"),
+ "voicemail": (self.__options.voicemailPollPeriodInMinutes, "minutes"),
+ "texts": (self.__options.textsPollPeriodInMinutes, "minutes"),
+ },
+ )
+ tp.Connection.__init__(
+ self,
+ constants._telepathy_protocol_name_,
+ account,
+ constants._telepathy_implementation_name_
+ )
+ requests.RequestsMixin.__init__(self)
+ contacts.ContactsMixin.__init__(self)
+ aliasing.AliasingMixin.__init__(self)
+ simple_presence.SimplePresenceMixin.__init__(self)
+ presence.PresenceMixin.__init__(self)
+ capabilities.CapabilitiesMixin.__init__(self)
+
+ self.__manager = weakref.proxy(manager)
+ self.__credentials = (
+ encodedAccount,
+ encodedPassword,
+ )
+ self.__callbackNumberParameter = encodedCallback
+ self.__channelManager = channel_manager.ChannelManager(self)
+
+ self.__cachePath = os.sep.join((constants._data_path_, "cache", self.username))