RISCfuture / dropbox

An easy-to-use client library for the official Dropbox API.
MIT License
519 stars 47 forks source link

= Ruby Dropbox Gem

An easy-to-use third-party interface to the RESTful Dropbox API.

== Installation

gem install dropbox

== Tutorial by Example

First things first: Be sure you've gotten a consumer key and secret from http://developers.dropbox.com

STEP 1: Authorize the user

session = Dropbox::Session.new('your_consumer_key', 'your_consumer_secret') session.mode = :sandbox # might need to set this to :dropbox; consult your API account page puts "Visit #{session.authorize_url} to log in to Dropbox. Hit enter when you have done this." gets session.authorize

STEP 2: Play!

session.upload('testfile.txt', '/') uploaded_file = session.file('testfile.txt') puts uploaded_file.metadata.size

uploaded_file.move 'new_name.txt' uploaded_file.delete

STEP 3: Save session for later

File.open('serialized_session.txt', 'w') do |f| f.puts session.serialize end

STEP 4: Play with saved session!

new_session = Dropbox::Session.deserialize(File.read('serialized_session.txt')) account = new_session.account puts account.display_name

== Tutorial by Example, Rails Edition

A simple Rails controller that allows a user to first authorize their Dropbox account, and then upload a file to their Dropbox.

class DropboxController < ApplicationController def authorize if params[:oauth_token] then dropbox_session = Dropbox::Session.deserialize(session[:dropbox_session]) dropbox_session.authorize(params) session[:dropbox_session] = dropbox_session.serialize # re-serialize the authenticated session

   redirect_to :action => 'upload'
 else
   dropbox_session = Dropbox::Session.new('your_consumer_key', 'your_consumer_secret')
   session[:dropbox_session] = dropbox_session.serialize
   redirect_to dropbox_session.authorize_url(:oauth_callback => url_for(:action => 'authorize'))
 end

end

def upload return redirect_to(:action => 'authorize') unless session[:dropbox_session] dropbox_session = Dropbox::Session.deserialize(session[:dropbox_session]) return redirect_to(:action => 'authorize') unless dropbox_session.authorized?

 if request.method == :post then
   dropbox_session.upload params[:file], 'My Uploads'
   render :text => 'Uploaded OK'
 else
   # display a multipart file field form
 end

end end

== Features and Where to Find Them

== Testing Your Code

The gem is fully specced. Run specs with +rake spec+. Before doing so, you will need to create a file called +keys.json+ in the project root containing your Dropbox API key and secret, as well as the email and password for a Dropbox account. See the +keys.json.example+ file to get started.

fguillen has implemented a mock of the Dropbox API server: http://github.com/fguillen/DummyDropbox

== Note on Patches/Pull Requests

== Copyright

Copyright (c) 2009 Tim Morgan. See LICENSE for details.