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 )