summaryrefslogtreecommitdiff
path: root/sleekxmpp/plugins/xep_0082.py
diff options
context:
space:
mode:
Diffstat (limited to 'sleekxmpp/plugins/xep_0082.py')
-rw-r--r--sleekxmpp/plugins/xep_0082.py228
1 files changed, 0 insertions, 228 deletions
diff --git a/sleekxmpp/plugins/xep_0082.py b/sleekxmpp/plugins/xep_0082.py
deleted file mode 100644
index 26eb68fa..00000000
--- a/sleekxmpp/plugins/xep_0082.py
+++ /dev/null
@@ -1,228 +0,0 @@
-"""
- SleekXMPP: The Sleek XMPP Library
- Copyright (C) 2011 Nathanael C. Fritz, Lance J.T. Stout
- This file is part of SleekXMPP.
-
- See the file LICENSE for copying permission.
-"""
-
-import datetime as dt
-
-from sleekxmpp.plugins import BasePlugin, register_plugin
-from sleekxmpp.thirdparty import tzutc, tzoffset, parse_iso
-
-
-# =====================================================================
-# To make it easier for stanzas without direct access to plugin objects
-# to use the XEP-0082 utility methods, we will define them as top-level
-# functions and then just reference them in the plugin itself.
-
-def parse(time_str):
- """
- Convert a string timestamp into a datetime object.
-
- Arguments:
- time_str -- A formatted timestamp string.
- """
- return parse_iso(time_str)
-
-
-def format_date(time_obj):
- """
- Return a formatted string version of a date object.
-
- Format:
- YYYY-MM-DD
-
- Arguments:
- time_obj -- A date or datetime object.
- """
- if isinstance(time_obj, dt.datetime):
- time_obj = time_obj.date()
- return time_obj.isoformat()
-
-
-def format_time(time_obj):
- """
- Return a formatted string version of a time object.
-
- format:
- hh:mm:ss[.sss][TZD]
-
- arguments:
- time_obj -- A time or datetime object.
- """
- if isinstance(time_obj, dt.datetime):
- time_obj = time_obj.timetz()
- timestamp = time_obj.isoformat()
- if time_obj.tzinfo == tzutc():
- timestamp = timestamp[:-6]
- return '%sZ' % timestamp
- return timestamp
-
-
-def format_datetime(time_obj):
- """
- Return a formatted string version of a datetime object.
-
- Format:
- YYYY-MM-DDThh:mm:ss[.sss]TZD
-
- arguments:
- time_obj -- A datetime object.
- """
- timestamp = time_obj.isoformat('T')
- if time_obj.tzinfo == tzutc():
- timestamp = timestamp[:-6]
- return '%sZ' % timestamp
- return timestamp
-
-
-def date(year=None, month=None, day=None, obj=False):
- """
- Create a date only timestamp for the given instant.
-
- Unspecified components default to their current counterparts.
-
- Arguments:
- year -- Integer value of the year (4 digits)
- month -- Integer value of the month
- day -- Integer value of the day of the month.
- obj -- If True, return the date object instead
- of a formatted string. Defaults to False.
- """
- today = dt.datetime.utcnow()
- if year is None:
- year = today.year
- if month is None:
- month = today.month
- if day is None:
- day = today.day
- value = dt.date(year, month, day)
- if obj:
- return value
- return format_date(value)
-
-
-def time(hour=None, min=None, sec=None, micro=None, offset=None, obj=False):
- """
- Create a time only timestamp for the given instant.
-
- Unspecified components default to their current counterparts.
-
- Arguments:
- hour -- Integer value of the hour.
- min -- Integer value of the number of minutes.
- sec -- Integer value of the number of seconds.
- micro -- Integer value of the number of microseconds.
- offset -- Either a positive or negative number of seconds
- to offset from UTC to match a desired timezone,
- or a tzinfo object.
- obj -- If True, return the time object instead
- of a formatted string. Defaults to False.
- """
- now = dt.datetime.utcnow()
- if hour is None:
- hour = now.hour
- if min is None:
- min = now.minute
- if sec is None:
- sec = now.second
- if micro is None:
- micro = now.microsecond
- if offset is None:
- offset = tzutc()
- elif not isinstance(offset, dt.tzinfo):
- offset = tzoffset(None, offset)
- value = dt.time(hour, min, sec, micro, offset)
- if obj:
- return value
- return format_time(value)
-
-
-def datetime(year=None, month=None, day=None, hour=None,
- min=None, sec=None, micro=None, offset=None,
- separators=True, obj=False):
- """
- Create a datetime timestamp for the given instant.
-
- Unspecified components default to their current counterparts.
-
- Arguments:
- year -- Integer value of the year (4 digits)
- month -- Integer value of the month
- day -- Integer value of the day of the month.
- hour -- Integer value of the hour.
- min -- Integer value of the number of minutes.
- sec -- Integer value of the number of seconds.
- micro -- Integer value of the number of microseconds.
- offset -- Either a positive or negative number of seconds
- to offset from UTC to match a desired timezone,
- or a tzinfo object.
- obj -- If True, return the datetime object instead
- of a formatted string. Defaults to False.
- """
- now = dt.datetime.utcnow()
- if year is None:
- year = now.year
- if month is None:
- month = now.month
- if day is None:
- day = now.day
- if hour is None:
- hour = now.hour
- if min is None:
- min = now.minute
- if sec is None:
- sec = now.second
- if micro is None:
- micro = now.microsecond
- if offset is None:
- offset = tzutc()
- elif not isinstance(offset, dt.tzinfo):
- offset = tzoffset(None, offset)
-
- value = dt.datetime(year, month, day, hour,
- min, sec, micro, offset)
- if obj:
- return value
- return format_datetime(value)
-
-
-class XEP_0082(BasePlugin):
-
- """
- XEP-0082: XMPP Date and Time Profiles
-
- XMPP uses a subset of the formats allowed by ISO 8601 as a matter of
- pragmatism based on the relatively few formats historically used by
- the XMPP.
-
- Also see <http://www.xmpp.org/extensions/xep-0082.html>.
-
- Methods:
- date -- Create a time stamp using the Date profile.
- datetime -- Create a time stamp using the DateTime profile.
- time -- Create a time stamp using the Time profile.
- format_date -- Format an existing date object.
- format_datetime -- Format an existing datetime object.
- format_time -- Format an existing time object.
- parse -- Convert a time string into a Python datetime object.
- """
-
- name = 'xep_0082'
- description = 'XEP-0082: XMPP Date and Time Profiles'
- dependencies = set()
-
- def plugin_init(self):
- """Start the XEP-0082 plugin."""
- self.date = date
- self.datetime = datetime
- self.time = time
- self.format_date = format_date
- self.format_datetime = format_datetime
- self.format_time = format_time
- self.parse = parse
-
-
-register_plugin(XEP_0082)