<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>.gitignore</filename>
    </added>
    <added>
      <filename>documentation/ViaPostCustomer API v1.1.pdf</filename>
    </added>
    <added>
      <filename>lib/viapost/letter.rb</filename>
    </added>
    <added>
      <filename>spec/viapost/interface_spec.rb</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -4,6 +4,7 @@ $:.unshift(File.dirname(__FILE__)) unless
 gem 'soap4r'
 require 'soap/wsdlDriver'
 require 'viapost/interface'
+require 'viapost/letter'
 
 module Viapost
   VERSION = '0.0.1'</diff>
      <filename>lib/viapost.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,5 @@
+require 'base64'
+
 module Viapost
   
   class Interface
@@ -8,18 +10,46 @@ module Viapost
     class UnknownEnvironment &lt; Exception; end
     class InvalidUserOrPass &lt; Exception; end
     
+    attr_reader :driver, :login_token
+    
     def initialize(user, pass, environment = :live)
       @driver = SOAP::WSDLDriverFactory.new(wsdl(environment)).create_rpc_driver
       @user = user
       @pass = pass
     end
     
-    def get_balance
+    def balance
       response = @driver.GetBalance(:sLoginToken =&gt; login_token)
       response.dBalance.to_f
     end
     
-    private
+    def letters(query = '')
+      response = @driver.GetLetters(:sLoginToken =&gt; login_token, :sSearchDocumentName =&gt; query)
+      soap_letters = response.returnLetters.anyType
+      
+      # for some reason their API returns just the letter instead of an array if it only returns one letter
+      if soap_letters.is_a?(Array)
+        soap_letters.map { |l| Letter.build_from_soap_object(l) }
+      else
+        [Letter.build_from_soap_object(soap_letters)]
+      end
+    end
+    
+    def upload_letter(file, title, colour = false, double_sided = false)
+      file = File.open(file, 'r') if file.is_a?(String) # allow path instead of file
+      
+      response = @driver.UploadDocument(:sLoginToken =&gt; login_token, :sDocumentName =&gt; title, :DocumentData =&gt; file.read, :Colour =&gt; colour, :DoubleSided =&gt; double_sided)
+    end
+    
+    def send_letter(letter, name, address_1, address_2, address_3, address_4, address_5, postcode)
+      response = @driver.SendLetter(:sLoginToken =&gt; login_token, :myCustomerAPILetter =&gt; letter, :addressName =&gt; name, :address1 =&gt; address_1, :address2 =&gt; address_2, :address3 =&gt; address_3, :address4 =&gt; address_4, :address5 =&gt; address_5, :postcode =&gt; postcode)
+    end
+    
+    def letter(letter_id)
+      @driver.GetLetterByID(:sLoginToken =&gt; login_token, :LetterID =&gt; letter_id)
+    end
+    
+    # private
     
     def login_token
       @login_response ||= @driver.SignIn(:sUserName =&gt; @user, :sPassword =&gt; @pass)</diff>
      <filename>lib/viapost/interface.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>cf0b52ca2b044dded1d368d0c21b9e93cac79a37</id>
    </parent>
  </parents>
  <author>
    <name>Tom Taylor</name>
    <email>tom@tomtaylor.co.uk</email>
  </author>
  <url>http://github.com/tomtaylor/viapost/commit/0af02f3bcdf63fcf37b3a19263842f9ee8b3f68d</url>
  <id>0af02f3bcdf63fcf37b3a19263842f9ee8b3f68d</id>
  <committed-date>2009-01-17T06:59:34-08:00</committed-date>
  <authored-date>2009-01-17T06:59:34-08:00</authored-date>
  <message>Some stuff that doesn't work properly yet. Fixing soon.</message>
  <tree>02e7359554ce347d21d07ddc64d847ccbee984f3</tree>
  <committer>
    <name>Tom Taylor</name>
    <email>tom@tomtaylor.co.uk</email>
  </committer>
</commit>
