WebService::Dropbox - Perl interface to Dropbox API
use WebService::Dropbox; my $dropbox = WebService::Dropbox->new({ key => '...', # App Key secret => '...' # App Secret }); # get access token if (!$access_token or !$access_secret) { my $url = $dropbox->login or die $dropbox->error; warn "Please Access URL and press Enter: $url"; <STDIN>; $dropbox->auth or die $dropbox->error; warn "access_token: " . $dropbox->access_token; warn "access_secret: " . $dropbox->access_secret; } else { $dropbox->access_token($access_token); $dropbox->access_secret($access_secret); } my $info = $dropbox->account_info or die $dropbox->error; # download # https://www.dropbox.com/developers/reference/api#files my $fh_get = IO::File->new('some file', '>'); $dropbox->files('make_test_folder/test.txt', $fh_get) or die $dropbox->error; $fh_get->close; # upload # https://www.dropbox.com/developers/reference/api#files_put my $fh_put = IO::File->new('some file'); $dropbox->files_put('make_test_folder/test.txt', $fh_put) or die $dropbox->error; $fh_put->close; # filelist(metadata) # https://www.dropbox.com/developers/reference/api#metadata my $data = $dropbox->metadata('folder_a');
WebService::Dropbox is Perl interface to Dropbox API
- Support Dropbox v1 REST API
- Support Furl (Fast!!!)
- Streaming IO (Low Memory)
- Default URI Escape (The specified path is utf8 decoded string)
my $callback_url = '...'; # optional my $url = $dropbox->login($callback_url) or die $dropbox->error; warn "Please Access URL and press Enter: $url";
$dropbox->auth or die $dropbox->error; warn "access_token: " . $dropbox->access_token; warn "access_secret: " . $dropbox->access_secret;
# Access Type is App folder # Your app only needs access to a single folder within the user's Dropbox $dropbox->root('sandbox'); # Access Type is Full Dropbox (default) # Your app needs access to the user's entire Dropbox $dropbox->root('dropbox');
https://www.dropbox.com/developers/start/core
my $info = $dropbox->account_info or die $dropbox->error; # { # "referral_link": "https://www.dropbox.com/referrals/r1a2n3d4m5s6t7", # "display_name": "John P. User", # "uid": 12345678, # "country": "US", # "quota_info": { # "shared": 253738410565, # "quota": 107374182400000, # "normal": 680031877871 # }, # "email": "john@example.com" # }
https://www.dropbox.com/developers/reference/api#account-info
# Current Rev my $fh_get = IO::File->new('some file', '>'); $dropbox->files('folder/file.txt', $fh_get) or die $dropbox->error; $fh_get->close; # Specified Rev $dropbox->files('folder/file.txt', $fh_get, { rev => ... }) or die $dropbox->error; # Code ref $dropbox->files('folder/file.txt', sub { # compatible with LWP::UserAgent and Furl::HTTP my $chunk = @_ == 4 ? @_[3] : $_[0]; print $chunk; }) or die $dropbox->error; # Range $dropbox->files('folder/file.txt', $fh_get) or die $dropbox->error; > "0123456789" $dropbox->files('folder/file.txt', $fh_get, undef, { headers => ['Range' => 'bytes=5-6'] }) or die $dropbox->error; > "56"
https://www.dropbox.com/developers/reference/api#files-GET
my $fh_put = IO::File->new('some file'); $dropbox->files_put('folder/test.txt', $fh_put) or die $dropbox->error; $fh_put->close; # no overwrite (default true) $dropbox->files_put('folder/test.txt', $fh_put, { overwrite => 0 }) or die $dropbox->error; # create 'folder/test (1).txt' # Specified Parent Rev $dropbox->files_put('folder/test.txt', $fh_put, { parent_rev => ... }) or die $dropbox->error; # conflict prevention
https://www.dropbox.com/developers/reference/api#files_put
my $fh_put = IO::File->new('some large file'); $dropbox->files_put('folder/test.txt', $fh_put) or die $dropbox->error; $fh_put->close;
https://www.dropbox.com/developers/reference/api#chunked_upload
# large file 1/3 my $fh_put = IO::File->new('large file part 1'); my $data = $dropbox->chunked_upload($fh_put) or die $dropbox->error; $fh_put->close; # large file 2/3 $fh_put = IO::File->new('large file part 2'); $data = $dropbox->chunked_upload($fh_put, { upload_id => $data->{upload_id}, offset => $data->{offset} }) or die $dropbox->error; $fh_put->close; # large file 3/3 $fh_put = IO::File->new('large file part 3'); $data = $dropbox->chunked_upload($fh_put, { upload_id => $data->{upload_id}, offset => $data->{offset} }) or die $dropbox->error; $fh_put->close; # commit $dropbox->commit_chunked_upload('folder/test.txt', { upload_id => $data->{upload_id} }) or die $dropbox->error;
$dropbox->commit_chunked_upload('folder/test.txt', { upload_id => $data->{upload_id} }) or die $dropbox->error;
https://www.dropbox.com/developers/reference/api#commit_chunked_upload
# from_path $dropbox->copy('folder/test.txt', 'folder/test_copy.txt') or die $dropbox->error; # from_copy_ref my $copy_ref = $dropbox->copy_ref('folder/test.txt') or die $dropbox->error; $dropbox->copy($copy_ref, 'folder/test_copy.txt') or die $dropbox->error;
https://www.dropbox.com/developers/reference/api#fileops-copy
$dropbox->move('folder/test.txt', 'folder/test_move.txt') or die $dropbox->error;
https://www.dropbox.com/developers/reference/api#fileops-move
# folder delete $dropbox->delete('folder') or die $dropbox->error; # file delete $dropbox->delete('folder/test.txt') or die $dropbox->error;
https://www.dropbox.com/developers/reference/api#fileops-delete
$dropbox->create_folder('some_folder') or die $dropbox->error;
https://www.dropbox.com/developers/reference/api#fileops-create-folder
my $data = $dropbox->metadata('some_folder') or die $dropbox->error; my $data = $dropbox->metadata('some_file') or die $dropbox->error; # 304 my $data = $dropbox->metadata('some_folder', { hash => ... }); return if $dropbox->code == 304; # not modified die $dropbox->error if $dropbox->error; return $data;
https://www.dropbox.com/developers/reference/api#metadata
my $data = $dropbox->delta() or die $dropbox->error;
https://www.dropbox.com/developers/reference/api#delta
my $data = $dropbox->revisions('some_file') or die $dropbox->error;
https://www.dropbox.com/developers/reference/api#revisions
# params rev is Required my $data = $dropbox->restore('some_file', { rev => $rev }) or die $dropbox->error;
https://www.dropbox.com/developers/reference/api#restore
# query rev is Required my $data = $dropbox->search('some_file', { query => $query }) or die $dropbox->error;
https://www.dropbox.com/developers/reference/api#search
my $data = $dropbox->shares('some_file') or die $dropbox->error;
https://www.dropbox.com/developers/reference/api#shares
my $data = $dropbox->media('some_file') or die $dropbox->error;
https://www.dropbox.com/developers/reference/api#media
my $copy_ref = $dropbox->copy_ref('folder/test.txt') or die $dropbox->error; $dropbox->copy($copy_ref, 'folder/test_copy.txt') or die $dropbox->error;
https://www.dropbox.com/developers/reference/api#copy_ref
my $fh_get = File::Temp->new; $dropbox->thumbnails('folder/file.txt', $fh_get) or die $dropbox->error; $fh_get->flush; $fh_get->seek(0, 0);
https://www.dropbox.com/developers/reference/api#thumbnails
enable HTTP_PROXY, NO_PROXY
$dropbox->env_proxy;
Shinichiro Aska
- https://www.dropbox.com/developers/reference/api
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
To install WebService::Dropbox, copy and paste the appropriate command in to your terminal.
cpanm
cpanm WebService::Dropbox
CPAN shell
perl -MCPAN -e shell install WebService::Dropbox
For more information on module installation, please visit the detailed CPAN module installation guide.