/freshbooks.rb

FreshBooks API wrapper

Primary LanguageRubyOtherNOASSERTION

= About

FreshBooks.rb is a Ruby interface to the FreshBooks API. It exposes easy-to-use classes and methods for interacting with your FreshBooks account. Read more on ELC's blog:
http://elctech.com/tags/freshbooks

= Examples

Installation:
  gem install elc-freshbooks.rb --source http://gems.github.com

Initialization:

  FreshBooks::Base.establish_connection( 'sample.freshbooks.com', 'mytoken' )

Updating a client name:

  clients = FreshBooks::Client.list
  client = clients[0]
  client.first_name = 'Suzy'
  client.update

Updating an invoice:

  invoice = FreshBooks::Invoice.get(4)
  invoice.lines[0].quantity += 1
  invoice.update

Creating a new item

  item = FreshBooks::Item.new
  item.name = 'A sample item'
  item.create

Getting an invoice pdf:

  invoice = FreshBooks::Invoice.get(4)
  original_status = invoice.status
  invoice.status = "sent"
  raise "API Change or error" unless invoice.update
  html_url = invoice.client_view
  cookiejar = Tempfile.new("cookies")
  pdf_file = Tempfile.new("pdf")
  html_doc = `wget "#{html_url}"  --no-check-certificate --cookies=on --keep-session-cookies --save-cookies='#{cookiejar.path}'  -O -`
  `wget 'https://#{freshbooks_api_host}/getPDF.php' --post-data='invoice_id[]=#{invoice.number}' --cookies=on --keep-session-cookies 
    --load-cookies='#{cookiejar.path}'  --no-check-certificate -O '#{pdf_file.path}'"`
  invoice.status = original_status
  raise "API Change or error" unless invoice.update
  pdf_file.path # Here's the PDF!

= License

This work is distributed under the MIT License. Use/modify the code however you like.

= Download

FreshBooks.rb is distributed as a gem via Rubyforge. The easiest way to install it is like so:

  gem install freshbooks

Alternatively, you can download it from the Rubyforge project page.

= Credits

FreshBooks.rb is written and maintained by Ben Vinegar, with contributions from Flinn Meuller, Kenneth Kalmer, and others.