<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -1,22 +1,35 @@
+== 0.2.4 / 2009-02-17
+
+Enhancements:
+  * Added date/time sanitization to SlimTimer::Record
+  * You can now pass a custom timeout (in seconds) to the SlimTimer object to 
+    bypass the default of 60 seconds (for most platforms).
+  * Thanks to Chris DeRose for these changes (http://www.derosetechnologies.com)
+
 == 0.2.3 / 2009-02-10
 
-* Switched to slimtimer.com instead of www.slimtimer.com due to a 301 Moved Permanently error
+Bug Fixes:
+  * Switched to slimtimer.com instead of www.slimtimer.com due to a 301 Moved Permanently error
 
 == 0.2.2 / 2008-01-15
 
-* Fix the list_entries method to properly set the beginning time to midnight if a Date is passed in.
+Bug Fixes:
+  * Fix the list_entries method to properly set the beginning time to midnight if a Date is passed in.
 
 == 0.2.1 / 2008-01-10
 
-* RDoc enhancements
+Bug Fixes:
 * Update list_timeentries method to automatically append a Time of 23:59:59 to the ending range if a Date object was passed in.
 
+Enhancements:
+* RDoc enhancements
+
 == 0.2.0 / 2008-01-09
 
-* 1 major enhancement
+Enhancements:
   * Not-so-ugly code thanks to borrowing from the 37 Signals / Basecamp sample Ruby wrappers
 
 == 0.1.0 / Sometime back in 2006...
 
-* Lots of UGLY code
+  * Initial release - Lots of UGLY code
 </diff>
      <filename>History.txt</filename>
    </modified>
    <modified>
      <diff>@@ -2,7 +2,7 @@ require 'yaml'
 require 'net/http'
 
 class SlimTimer
-  VERSION = '0.2.3'
+  VERSION = '0.2.4'
 
   #
   # The Record class is used to encapsulate the data returned from the SlimTimer API. This allows access 
@@ -55,25 +55,38 @@ class SlimTimer
       to_s
     end
 
+    def updated_at
+      sanitize_time(super)
+    end
+    
+    def created_at
+      sanitize_time(super)
+    end
+    
     private
 
     def dashify(name)
       name.to_s.tr(&quot;_&quot;,&quot;-&quot;)
     end
+    
+    def sanitize_time
+      Time.local(time.year, time.month, time.day, time.hour, time.min, time.sec) unless time.nil?
+    end
+    
   end
 
   attr_accessor :email, :password, :api_key, :user_id, :access_token, :request
 
-  # Creates a new SlimTimer object and obtains the +access_token+ and +user_id+ from the SlimTimer API by sending your +email+, +password+, and +api_key+. Raises a _RuntimeError_ if it can't authenticate.
+  # Creates a new SlimTimer object and obtains the +access_token+ and +user_id+ from the SlimTimer API by sending your +email+, +password+, and +api_key+. Raises a _RuntimeError_ if it can't authenticate. You can also optionally supply a +connection_timeout+ for the SlimTimer servers (the default is 60 seconds).
   # 
   #   slim_timer = SlimTimer.new(&quot;person@example.com&quot;, &quot;password&quot;, &quot;12345&quot;)
   #     =&gt; #&lt;SlimTimer:0x68bca8 @password=&quot;password&quot;...&gt;
   # 
   #   slim_timer = SlimTimer.new(&quot;bademail@example.com&quot;, &quot;badpassword&quot;, &quot;12345&quot;)
   #     =&gt; RuntimeError: Error occurred (500)
-  def initialize(email, password, api_key)
+  def initialize(email, password, api_key, connection_timeout=60)
     @email, @password, @api_key = email, password, api_key
-    connect
+    connect(connection_timeout)
     get_token
   end
 
@@ -189,8 +202,9 @@ class SlimTimer
     @user_id = values.user_id
   end
 
-  def connect
+  def connect(connection_timeout)
     @connection = Net::HTTP.new(&quot;slimtimer.com&quot;, 80)
+    @connection.read_timeout = connection_timeout
   end
 
   def request(method, path, parameters = {}, type=&quot;Result&quot;)</diff>
      <filename>lib/slimtimer4r.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>463109b24b2bfce5bd7166c2df4d51a97a1513ad</id>
    </parent>
  </parents>
  <author>
    <name>Dylan Markow</name>
    <email>dm@petefowler.com</email>
  </author>
  <url>http://github.com/dmarkow/slimtimer4r/commit/f37f7f3afa0b0caecfb6dd9fe9c7d2ef5eaa8042</url>
  <id>f37f7f3afa0b0caecfb6dd9fe9c7d2ef5eaa8042</id>
  <committed-date>2009-02-17T10:40:43-08:00</committed-date>
  <authored-date>2009-02-17T10:40:43-08:00</authored-date>
  <message>Time Sanitization and read_timeout options</message>
  <tree>29fd4c9bff997ee1d580421086c86b85abc0067b</tree>
  <committer>
    <name>Dylan Markow</name>
    <email>dm@petefowler.com</email>
  </committer>
</commit>
