NAME
   Net::UpYun - Simple client library for UpYun Restful API.

SYNOPSIS
       # Yes, I love modern perl!
       use v5.12;
       use Net::UpYun;

       my $upyun = Net::UpYun->new(
           bucket_account => 'xxxxx',
           bucket_password => 'xxxx',
           bucket => 'bucket_name',
           # optional
           api_domain => 'http://v0.api.upyun.com',
       );

       # get bucket/folder/file usage
       my $usage = $upyun->usage;
       # or folder/file
       say $upyun->usage('/demo');

       # switch bucket
       $upyun->use_bucket('bucket_new');
       # use different account/password
       $upyun->use_bucket('bucket_new',$new_account,$new_password);

       # create dir
       my $ok = $upyun->mkdir('/demo2');

       # list file under the directory
       my $files = $upyun->list('/demo2');

       # rm dir
       my $ok = $upyun->rmdir('/demo2');

       # upload file
       my $ok = $upyun->put($file_key,$file_bytes);

       # get file content
       my $bytes = $upyun->get($file_key);

       # delete file
       $upyun->delete($file_key);

       # change api domaim
       $upyun->api_domain('http://v1.api.upyun.com');

DESCRIPTION
   This module provides very simple interfaces to UpYun Cloud servie,for
   more details about UpYun storage/CDN clound service, see
   <http://www.upyun.com/>.

   This module uses WWW::Curl and libcurl for best performance, I just test
   on Mac Lion and Linux, maybe works on Windows/Cygwin.

METHODS
 new()
   bucket
   bucket_account
   bucket_password
   api_domain

 usage($path)
       # whole bucket used storage
       $upyun->usage;
       # some dir/folder
       say $upyun->usage('/dir1');
       # some file size
       say $upyun->usage('/dir1/demo1.jpg');

   List bucket or path(folder or file) used space.

 use_bucket($new_bucket_name,$new_account?,$new_password?)
       # switch to new bucket,account/password same as current
       $upyun->use_bucket('bucket2');
       # switch to new bucket, also set new account/password
       $upyun->use_bucket('bucket3','new_user','new_password');

   Switch to another bucket, if omit new_account,new_password, use previous
   defined.

 mkdir($path)
       my $ok = $upyun->mkdir('/path1/path2');

   Build directory or path.

 rmdir($path)
       my $ok = $upyun->rmdir('/path1');

   Delete the directory, it must be empty.

 list($path)
       my $dir_content_str = $upyun->list('/');

   List files under the directory.

   TODO: $dir_content_str is plain text, need to parse.

 put($path,$bytes)
       # it will auto mkdir.
       my $ok = $upyun->put('/demo/1.txt','okokok');

   Upload content to the file, it will auto create directories.

   NOTE: According UpYun note, max directories deep level is limited to 10,
   be careful.

 get($path)
       say $upyun->get('/demo/1.txt');

   Get the file content.

 delete($path)
       my $ok = $upyun->delete('/demo/1.txt');

   Delete the file.

 reponse
       my $http_response = $upyun->response;

   Returns latest response,it's an instance of HTTP::Response.

 res_content
   Raw response content body.

 is_success
 is_error
   These methods indicate if the response was informational, successful, or
   an error. If the response code was 2xx code, is_success is true, else
   is_error is true.

 error_code
   The code is a 3 digit number that encode the overall outcome of the last
   HTTP response.

 error_message
   The message is a short human readable single line string that explains
   the last response code.

 do_request
   Internal, send signed request to server.

 sign
   Private.

TODOS
   Much jobs to do.

   *   handy client shell.

   *   copy/move file under same bucket or between different bucket.

   *   simple check file exists on remote ,no need to fetch its
       content,save bandwidth.

   *   display/compare files checksum(MD5) local and remote.

   *   streaming upload to save memory.

   *   useful utility, like tar/untar to/from upyun on fly.

   *   multi operation and performance requests in parallel.

   *   code clean and refactory.

AUTHOR
   Night Sailer(Pan Fan) <nightsailer{at}gmail_dot_com>

COPYRIGHT
   Copyright (C) Pan Fan(nightsailer)

LICENSE
   This library is free software; you can redistribute it and/or modify it
   under the same terms as Perl itself.