<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -58,8 +58,17 @@ Post a URL encoded form
 
      require 'resourceful'
      http = Resourceful::HttpAccessor.new
-     resp = http.resource('http://mysite.example/service').
-              post('hostname=test&amp;level=super', :content_type =&gt; 'application/x-www-form-urlencoded')
+     resp = http.resource('http://mysite.example/service'). 
+              post(Resourceful::UrlencodedFormData.new(:hostname =&gt; 'test', :level =&gt; 'super'))
+
+Post a Mulitpart form with a file
+-----------------------
+
+     require 'resourceful'
+     http = Resourceful::HttpAccessor.new
+     form_data = Resourceful::MultipartFormData.new(:username =&gt; 'me')
+     form_data.add_file('avatar', '/tmp/my_avatar.png', 'image/png')
+     resp = http.resource('http://mysite.example/service').post(form_data)
 
 Put an XML document
 -------------------</diff>
      <filename>README.markdown</filename>
    </modified>
    <modified>
      <diff>@@ -1,12 +1,15 @@
 module Resourceful
-  module FormData
-    def initialize()
+  class AbstractFormData
+    def initialize(contents = {})
       @form_data = []
-      super
+      
+      contents.each do |k,v|
+        add(k, v)
+      end
     end
 
     def add(name, value)
-      form_data &lt;&lt; [name, value]
+      form_data &lt;&lt; [name.to_s, value]
     end
 
     protected</diff>
      <filename>lib/resourceful/abstract_form_data.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,8 +1,7 @@
-require 'resourceful/form_data'
+require 'resourceful/abstract_form_data'
 
 module Resourceful
-  class MultipartFormData
-    include FormData
+  class MultipartFormData &lt; AbstractFormData
     FileParamValue = Struct.new(:content, :file_name, :content_type)
 
     def add_file(name, file_name, content_type=&quot;application/octet-stream&quot;)</diff>
      <filename>lib/resourceful/multipart_form_data.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,9 +1,8 @@
-require 'resourceful/form_data'
+require 'resourceful/abstract_form_data'
 require 'cgi'
 
 module Resourceful
-  class UrlencodedFormData
-    include FormData
+  class UrlencodedFormData &lt; AbstractFormData
 
     def content_type
       &quot;application/x-www-form-urlencoded&quot;</diff>
      <filename>lib/resourceful/urlencoded_form_data.rb</filename>
    </modified>
    <modified>
      <diff>@@ -12,6 +12,12 @@ describe Resourceful::UrlencodedFormData do
     @form_data.content_type.should match(/^application\/x-www-form-urlencoded$/i)
   end
 
+  describe &quot;instantiation&quot; do 
+    it &quot;should be creatable with hash&quot; do 
+      Resourceful::UrlencodedFormData.new(:foo =&gt; 'testing').read.should eql(&quot;foo=testing&quot;)
+    end
+  end
+
   describe &quot;with simple parameters&quot; do 
     it &quot;should all simple parameters to be added&quot; do 
       @form_data.add(:foo, &quot;testing&quot;)
@@ -34,6 +40,5 @@ describe Resourceful::UrlencodedFormData do
       @form_data.add('foo=bar', 'this')      
       @form_data.read.should eql(&quot;foo%3Dbar=this&quot;)
     end
-
   end
 end</diff>
      <filename>spec/resourceful/urlencoded_form_data_spec.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>8d1819d2094e6ebe9b652f2e4f9204da2129cc7e</id>
    </parent>
  </parents>
  <author>
    <name>Peter Williams</name>
    <email>pezra@youthful-indiscretion.local</email>
  </author>
  <url>http://github.com/paul/resourceful/commit/925b83113036dcd8bbd4322ab2e96a79c2e6895a</url>
  <id>925b83113036dcd8bbd4322ab2e96a79c2e6895a</id>
  <committed-date>2009-08-14T08:07:30-07:00</committed-date>
  <authored-date>2009-08-14T08:07:30-07:00</authored-date>
  <message>Further improvments to form data handling</message>
  <tree>88a5ce6ce058b9c15f658513b7687dd2e49efb4a</tree>
  <committer>
    <name>Peter Williams</name>
    <email>pezra@youthful-indiscretion.local</email>
  </committer>
</commit>
