App-dropboxapi
view release on metacpan or search on metacpan
script/dropbox-api view on Meta::CPAN
#!/usr/bin/env perl
use strict;
use warnings;
use Cwd 'abs_path';
use DateTime;
use DateTime::Format::Strptime;
use Encode;
use Encode::Locale;
use File::Basename qw(dirname basename);
use File::Spec::Functions qw(abs2rel catfile);
use File::Temp;
use Getopt::Std;
use JSON;
use Path::Class;
use POSIX qw();
use WebService::Dropbox 2.06;
our $VERSION = '2.13';
my $limit = 10 * 1024 * 1024; # files_put_chunked method has large file support.
if ($^O eq 'darwin') {
require Encode::UTF8Mac;
$Encode::Locale::ENCODING_LOCALE_FS = 'utf-8-mac';
}
binmode STDOUT, ':utf8';
binmode STDERR, ':utf8';
my $config_file = file( $ENV{DROPBOX_CONF} || ($ENV{HOME} || $ENV{HOMEPATH}, '.dropbox-api-config') );
my $command = shift || '';
my @args;
for (@{ [ @ARGV ] }) {
last if $_ =~ qr{ \A - }xms;
push @args, shift;
}
my %opts;
if ($command eq 'du') {
getopts('vDhed:', \%opts);
} else {
getopts('ndvDshePp:', \%opts);
}
push @args, @ARGV;
my $dry = $opts{n};
my $delete = $opts{d};
my $verbose = $opts{v};
my $debug = $opts{D};
my $human = $opts{h};
my $printf = $opts{p};
my $public = $opts{P};
my $env_proxy = $opts{e};
my $max_depth = $opts{d};
if ($opts{s}) {
die "-s is gone.";
}
if ($command eq '-v') {
&help('version');
exit(0);
}
if ($command eq 'setup' || !-f $config_file) {
&setup();
}
# connect dropbox
my $config = decode_json($config_file->slurp);
$config->{key} or die 'please set config key.';
$config->{secret} or die 'please set config secret.';
$config->{access_token} or die 'please set config access_token.';
if ($config->{access_secret}) {
warn "Auto migration OAuth1 Token to OAuth2 token...";
my $oauth2_access_token = &token_from_oauth1($config->{key}, $config->{secret}, $config->{access_token}, $config->{access_secret});
if ($oauth2_access_token) {
delete $config->{access_secret};
$config->{access_token} = $oauth2_access_token;
$config_file->openw->print(encode_json($config));
warn "=> Suucess.";
} else {
die "please setup.";
}
}
if (my $access_level = delete $config->{access_level}) {
( run in 1.598 second using v1.01-cache-2.11-cpan-13bb782fe5a )