changeset 18:ba8ce62bfab0

tmp (wokkel): removed delay as it is nearly identical to original one, and the additional exception should be catched elsewhere
author Goffi <goffi@goffi.org>
date Sun, 03 Jan 2016 18:36:39 +0100
parents fd6957dfa8c6
children 80f9a1a3d002
files wokkel/delay.py
diffstat 1 files changed, 0 insertions(+), 166 deletions(-) [+]
line wrap: on
line diff
--- a/wokkel/delay.py	Wed Nov 25 15:35:21 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,166 +0,0 @@
-# -*- coding: utf-8 -*-
-# -*- test-case-name: wokkel.test.test_delay -*-
-#
-# SàT adaptation for wokkel.delay
-# Copyright (C) 2015 Adien Cossa (souliane@mailoo.org)
-# Copyright (c) 2003-2012 Ralph Meijer.
-
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Affero General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU Affero General Public License for more details.
-
-# You should have received a copy of the GNU Affero General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
-# --
-
-# This program is based on wokkel (https://wokkel.ik.nu/),
-# originaly written by Ralph Meijer
-# It is sublicensed under AGPL v3 (or any later version) as allowed by the original
-# license.
-
-# --
-
-# Here is a copy of the original license:
-
-# Copyright (c) 2003-2012 Ralph Meijer.
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be
-# included in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-# Copyright (c) Ralph Meijer.
-# See LICENSE for details.
-
-"""
-Delayed Delivery.
-
-Support for comunicating Delayed Delivery information as specified by
-U{XEP-0203<http://xmpp.org/extensions/xep-0203.html>} and its predecessor
-U{XEP-0091<http://xmpp.org/extensions/xep-0091.html>}.
-"""
-
-from dateutil.parser import parse
-from dateutil.tz import tzutc
-
-from twisted.words.protocols.jabber.jid import InvalidFormat, JID
-from twisted.words.xish import domish
-
-NS_DELAY = 'urn:xmpp:delay'
-NS_JABBER_DELAY = 'jabber:x:delay'
-
-class Delay(object):
-    """
-    Delayed Delivery information.
-
-    Instances of this class represent delayed delivery information that can be
-    parsed from and rendered into both XEP-0203 and legacy XEP-0091 formats.
-
-    @ivar stamp: The timestamp the stanza was originally sent.
-    @type stamp: L{datetime.datetime}
-    @ivar sender: The optional entity that originally sent the stanza or
-        delayed its delivery.
-    @type sender: L{JID}
-    """
-
-    def __init__(self, stamp, sender=None):
-        self.stamp = stamp
-        self.sender = sender
-
-
-    def toElement(self, legacy=False):
-        """
-        Render this instance into a domish Element.
-
-        @param legacy: If C{True}, use the legacy XEP-0091 format.
-        @type legacy: C{bool}
-        """
-        if not self.stamp:
-            raise ValueError("stamp is required")
-        if self.stamp.tzinfo is None:
-            raise ValueError("stamp is not offset-aware")
-
-        if legacy:
-            element = domish.Element((NS_JABBER_DELAY, 'x'))
-            stampFormat = '%Y%m%dT%H:%M:%S'
-        else:
-            element = domish.Element((NS_DELAY, 'delay'))
-            stampFormat = '%Y-%m-%dT%H:%M:%SZ'
-
-        stamp = self.stamp.astimezone(tzutc())
-        element['stamp'] = stamp.strftime(stampFormat)
-
-        if self.sender:
-            element['from'] = self.sender.full()
-
-        return element
-
-
-    @staticmethod
-    def fromElement(element):
-        """
-        Create an instance from a domish Element.
-        """
-        try:
-            stamp = parse(element[u'stamp'])
-
-            # Assume UTC if no timezone was given
-            if stamp.tzinfo is None:
-                stamp = stamp.replace(tzinfo=tzutc())
-        except (KeyError, ValueError, TypeError):
-            stamp = None
-
-        try:
-            sender = JID(element[u'from'])
-        except (KeyError, InvalidFormat):
-            sender = None
-
-        delay = Delay(stamp, sender)
-        return delay
-
-
-
-class DelayMixin(object):
-    """
-    Mixin for parsing delayed delivery information from stanzas.
-
-    This can be used as a mixin for subclasses of L{wokkel.generic.Stanza}
-    for parsing delayed delivery information. If both XEP-0203 and XEP-0091
-    formats are present, the former takes precedence.
-    """
-
-    delay = None
-
-    childParsers = {
-            (NS_DELAY, 'delay'): '_childParser_delay',
-            (NS_JABBER_DELAY, 'x'): '_childParser_legacyDelay',
-            }
-
-
-    def _childParser_delay(self, element):
-        self.delay = Delay.fromElement(element)
-
-
-    def _childParser_legacyDelay(self, element):
-        if not self.delay:
-            self.delay = Delay.fromElement(element)