WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-api

[Xen-API] [PATCH] Add function to Date module to assert ISO 8601 datetim

To: xen-api <xen-api@xxxxxxxxxxxxxxxxxxx>
Subject: [Xen-API] [PATCH] Add function to Date module to assert ISO 8601 datetime values are UTC
From: Rob Hoes <rob.hoes@xxxxxxxxxx>
Date: Wed, 1 Sep 2010 13:48:56 +0100
Delivery-date: Wed, 01 Sep 2010 05:49:08 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-api-request@lists.xensource.com?subject=help>
List-id: Discussion of API issues surrounding Xen <xen-api.lists.xensource.com>
List-post: <mailto:xen-api@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-api>, <mailto:xen-api-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-api>, <mailto:xen-api-request@lists.xensource.com?subject=unsubscribe>
Sender: xen-api-bounces@xxxxxxxxxxxxxxxxxxx
# HG changeset patch
# User Rob Hoes <rob.hoes@xxxxxxxxxx>
Add function to Date module to assert ISO 8601 datetime values are UTC

Adds ocamldoc for the whole Date module as well.

Signed-off-by: Rob Hoes <rob.hoes@xxxxxxxxxx>

diff -r 81dbe94e62c3 stdext/META.in
--- a/stdext/META.in
+++ b/stdext/META.in
@@ -1,5 +1,5 @@
 version = "@VERSION@"
 description = "Stdext - Common stdlib extensions"
-requires = "unix,uuid,bigarray,rpc-light.json"
+requires = "unix,str,uuid,bigarray,rpc-light.json"
 archive(byte) = "stdext.cma"
 archive(native) = "stdext.cmxa"
diff -r 81dbe94e62c3 stdext/date.ml
--- a/stdext/date.ml
+++ b/stdext/date.ml
@@ -15,7 +15,6 @@
 type iso8601 = string
 type rfc822 = string
 
-(* Convert calendar time, x, to tm in UTC *)
 let of_float x = 
   let time = Unix.gmtime x in
   Printf.sprintf "%04d%02d%02dT%02d:%02d:%02dZ"
@@ -65,4 +64,9 @@
 let to_string x = x
 let of_string x = x
 
+let assert_utc x =
+       let r = Str.regexp 
"^[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]T[0-9][0-9]:[0-9][0-9]:[0-9][0-9]Z$" 
in
+       if not (Str.string_match r x 0) then
+               invalid_arg x
+
 let never = of_float 0.0
diff -r 81dbe94e62c3 stdext/date.mli
--- a/stdext/date.mli
+++ b/stdext/date.mli
@@ -11,13 +11,39 @@
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  * GNU Lesser General Public License for more details.
  *)
+(** Additional types and functions for dates *)
+
+(** {2 ISO 8601 Dates} *)
+
+(** An ISO-8601 date/time type. *)
 type iso8601
+
+(** Convert calendar time [x] (as returned by e.g. Unix.time), to time in UTC. 
*)
 val of_float : float -> iso8601
+
+(** Convert date/time to a float value: the number of seconds since 00:00:00 
UTC, 1 Jan 1970. *)
 val to_float : iso8601 -> float
+
+(** Convert date/time to an ISO 8601 formatted string. *)
 val to_string : iso8601 -> string
+
+(** Convert ISO 8601 formatted string to a date/time value. *)
 val of_string : string -> iso8601
+
+(** Raises an Invalid_argument exception if the given date is not a UTC date.
+ *  A UTC date is an ISO 8601 strings that ends with the character 'Z'. *)
+val assert_utc : iso8601 -> unit
+
+(** Representation of the concept "never" (actually 00:00:00 UTC, 1 Jan 1970). 
*)
 val never: iso8601
 
+(** {2 RFC 822 Dates} *)
+
+(** An RFC 822 date/time type. *)
 type rfc822
+
+(** Convert calendar time [x] (as returned by e.g. Unix.time), to RFC 822. *)
 val rfc822_of_float : float -> rfc822
+
+(** Convert RFC 822 date/time to a formatted string. *)
 val rfc822_to_string : rfc822 -> string

Attachment: date-assert-utc
Description: Text document

_______________________________________________
xen-api mailing list
xen-api@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/mailman/listinfo/xen-api