From 5fc0435cc1227bf445d06a3931343020faaecd10 Mon Sep 17 00:00:00 2001 From: fiaxh Date: Thu, 9 Mar 2017 15:34:32 +0100 Subject: Save unsent messages (acc offline etc) and send later; don't send pgp messages if pgp error --- .../src/module/xep/0082_date_time_profiles.vala | 41 ++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 vala-xmpp/src/module/xep/0082_date_time_profiles.vala (limited to 'vala-xmpp/src/module/xep/0082_date_time_profiles.vala') diff --git a/vala-xmpp/src/module/xep/0082_date_time_profiles.vala b/vala-xmpp/src/module/xep/0082_date_time_profiles.vala new file mode 100644 index 00000000..b2ce1077 --- /dev/null +++ b/vala-xmpp/src/module/xep/0082_date_time_profiles.vala @@ -0,0 +1,41 @@ +namespace Xmpp.Xep.DateTimeProfiles { + + public class Module { + public Regex DATETIME_REGEX; + + public Module() { + DATETIME_REGEX = new Regex("""^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})(\.(\d{3}))?(Z|((\+|\-)(\d{2}):(\d{2})))$"""); + } + + public DateTime? parse_string(string time_string) { + MatchInfo match_info; + if (DATETIME_REGEX.match(time_string, RegexMatchFlags.ANCHORED, out match_info)) { + int year = int.parse(match_info.fetch(1)); + int month = int.parse(match_info.fetch(2)); + int day = int.parse(match_info.fetch(3)); + int hour = int.parse(match_info.fetch(4)); + int minute = int.parse(match_info.fetch(5)); + int second = int.parse(match_info.fetch(6)); + DateTime datetime = new DateTime.utc(year, month, day, hour, minute, second); + if (match_info.fetch(9) != "Z") { + char plusminus = match_info.fetch(11)[0]; + int tz_hour = int.parse(match_info.fetch(12)); + int tz_minute = int.parse(match_info.fetch(13)); + if (plusminus == '-') { + tz_hour *= -1; + tz_minute *= -1; + } + datetime.add_hours(tz_hour); + datetime.add_minutes(tz_minute); + } + return datetime; + } + return null; + } + + public string to_datetime(DateTime time) { + return time.format("%Y-%m-%dT%H:%M:%SZ"); + } +} + +} \ No newline at end of file -- cgit v1.2.3-54-g00ecf