<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -47,7 +47,7 @@ require File.join(File.dirname(__FILE__), 'campaign_monitor/campaign.rb')
 #   client.GetLists
 #   client.lists.build # to create a new unsaved list for a client
 #   client.campaigns # OR
-#   client.GetCampaigns 
+#   client.GetCampaigns
 #
 # == LIST
 #   list = List[list_id] # find an existing list
@@ -88,15 +88,15 @@ require File.join(File.dirname(__FILE__), 'campaign_monitor/campaign.rb')
 #
 class CampaignMonitor
   include CampaignMonitor::Helpers
-  
+
   class InvalidAPIKey &lt; StandardError
   end
 
   class ApiError &lt; StandardError
   end
-  
+
   attr_reader :api_key, :api_url
-  
+
   # Replace this API key with your own (http://www.campaignmonitor.com/api/)
   def initialize(api_key=CAMPAIGN_MONITOR_API_KEY)
     @api_key = api_key
@@ -124,11 +124,11 @@ class CampaignMonitor
   # Takes a CampaignMonitor API method name and set of parameters; returns the correct URL for the REST API.
   def request_url(method, params={})
     params.merge!('ApiKey' =&gt; api_key)
-    
+
     query = params.collect do |key, value|
       &quot;#{CGI.escape(key.to_s)}=#{CGI.escape(value.to_s)}&quot;
     end.sort * '&amp;'
-    
+
     &quot;#{api_url}/#{method}?#{query}&quot;
   end
 
@@ -161,11 +161,11 @@ class CampaignMonitor
       response[&quot;Client&quot;].collect{|c| Client.new({&quot;ClientID&quot; =&gt; c[&quot;ClientID&quot;], &quot;CompanyName&quot; =&gt; c[&quot;Name&quot;]})}
     end
   end
-  
+
   def new_client
     Client.new(nil)
   end
-  
+
   def system_date
     User_GetSystemDate()
   end
@@ -173,19 +173,19 @@ class CampaignMonitor
   def parsed_system_date
     DateTime.strptime(system_date, timestamp_format)
   end
-  
+
   def countries
     handle_response(User_GetCountries()) do | response |
       response[&quot;string&quot;]
     end
   end
-  
+
   def timezones
     handle_response(User_GetTimezones()) do | response |
       response[&quot;string&quot;]
     end
   end
-  
+
   # Returns an array of Campaign objects associated with the specified Client ID
   #
   # Example
@@ -228,13 +228,26 @@ class CampaignMonitor
   def add_subscriber(list_id, email, name)
     Result.new(Subscriber_Add(&quot;ListID&quot; =&gt; list_id, &quot;Email&quot; =&gt; email, &quot;Name&quot; =&gt; name))
   end
-  
+
+  # A quick method of removing a subscriber from a list. Returns a Result object
+  #
+  # Example
+  #  @cm = CampaignMonitor.new()
+  #  result = @cm.remove_subscriber(12345, &quot;ralph.wiggum@simpsons.net&quot;)
+  #
+  #  if result.succeeded?
+  #    puts &quot;Subscriber Added to List&quot;
+  #  end
+  def remove_subscriber(list_id, email)
+    Result.new(Subscriber_Add(&quot;ListID&quot; =&gt; list_id, &quot;Email&quot; =&gt; email))
+  end
+
   def using_soap
     driver = wsdl_driver_factory.create_rpc_driver
     driver.wiredump_dev = STDERR if $debug
     response = yield(driver)
     driver.reset_stream
-    
+
     response
   end
 
@@ -243,11 +256,11 @@ class CampaignMonitor
     def wsdl_driver_factory
       SOAP::WSDLDriverFactory.new(&quot;#{api_url}?WSDL&quot;)
     end
-  
+
 end
 
 # If libxml is installed, we use the FasterXmlSimple library, that provides most of the functionality of XmlSimple
-# except it uses the xml/libxml library for xml parsing (rather than REXML). 
+# except it uses the xml/libxml library for xml parsing (rather than REXML).
 # If libxml isn't installed, we just fall back on XmlSimple.
 
 PARSER =
@@ -257,7 +270,7 @@ PARSER =
     # have to use a version greater than '0.3.8.2'.
     raise LoadError unless XML::Parser::VERSION &gt; '0.3.8.2'
     $:.push(File.join(File.dirname(__FILE__), '..', 'support', 'faster-xml-simple', 'lib'))
-    require 'faster_xml_simple' 
+    require 'faster_xml_simple'
     FasterXmlSimple
   rescue LoadError
     begin</diff>
      <filename>lib/campaign_monitor.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>c2a6998b6e650369f0b3db5077b7bd61201879e3</id>
    </parent>
  </parents>
  <author>
    <name>jonathan</name>
    <email>jonathan@jonathan-clarke.(none)</email>
  </author>
  <url>http://github.com/jordanbrock/campaign-monitor-ruby/commit/2f7296d23f271998fd93a5e8ad669767f2184934</url>
  <id>2f7296d23f271998fd93a5e8ad669767f2184934</id>
  <committed-date>2009-09-29T20:05:29-07:00</committed-date>
  <authored-date>2009-09-29T20:05:29-07:00</authored-date>
  <message>Allowing user to unsubscribe from a list</message>
  <tree>eece84ec398531c70f4c1018febc36faa4b16b18</tree>
  <committer>
    <name>jonathan</name>
    <email>jonathan@jonathan-clarke.(none)</email>
  </committer>
</commit>
