Brackup

 view release on metacpan or  search on metacpan

lib/Brackup/Target/GoogleAppEngine.pm  view on Meta::CPAN

package Brackup::Target::GoogleAppEngine;

use strict;
use warnings;
use base 'Brackup::Target';
use Carp qw(croak);
use LWP::ConnCache;
use LWP::UserAgent;
use HTTP::Request;
use HTTP::Request::Common;

# fields in object:
#   user_email
#   password
#   url

sub new {
    my ($class, $confsec) = @_;
    my $self = $class->SUPER::new($confsec);
    

lib/Brackup/Target/GoogleAppEngine.pm  view on Meta::CPAN

    my $for_backup = shift || 0;

    if (!$for_backup && @{$self->{upload_urls}}) {
        my $url = shift @{$self->{upload_urls}};
        die "Bogus URL: $url" unless $url =~ /^http/;
        return $url;
    }

    my $count = $for_backup ? 1 : 10;

    my $req = HTTP::Request->new("GET",
                                 "$self->{url}/get_upload_urls?" .
                                 "for_backup=$for_backup&" .
                                 "count=$count&" .
                                 "password=" . _eurl($self->{password}) . "&" .
                                 "user_email=" . $self->{user_email});
    my $res = $self->{ua}->request($req);
    if ($res->is_success) {
        $self->{upload_urls} = [ split(/\s*\n\s*/, $res->content) ];
    } else {
        die "Failed to get upload URLs: " . $res->status_line . "\n" . $res->content;

lib/Brackup/Target/GoogleAppEngine.pm  view on Meta::CPAN

        or die;

    my $filename = $dig;
    $filename =~ s/:/_/;
    $filename .= ".chunk";

    print "Storing chunk: $dig\n";

    my $content = do { local $/; <$chunkref> };

    my $req = HTTP::Request::Common::POST($upload_url,
                                          Content_Type => 'form-data',
                                          Content => [
                                                      "password" => $self->{password},
                                                      "user_email" => $self->{user_email},
                                                      "algo_digest" => $dig,
                                                      "size" => $blen,
                                                      "file" => [ undef, $filename,
                                                                  "Content-Type" => "x-danga/brackup-chunk",
                                                                  Content => $content ]
                                                      ]);

lib/Brackup/Target/GoogleAppEngine.pm  view on Meta::CPAN

    my ($self, $name, $fh, $meta) = @_;
    $meta ||= {};

    print "Storing backup: $name\n";

    my $upload_url = $self->_get_upload_url(1)  # for backup
        or die;

    my $content = do { local $/; <$fh> };

    my $req = HTTP::Request::Common::POST($upload_url,
                                          Content_Type => 'form-data',
                                          Content => [
                                                      "password" => $self->{password},
                                                      "user_email" => $self->{user_email},
                                                      "encrypted" => $meta->{is_encrypted} ? 1 : 0,
                                                      "title" => $name,
                                                      "file" => [ undef, $name,
                                                                  "Content-Type" => "x-danga/brackup-backup",
                                                                  Content => $content ]
                                                     ]);



( run in 0.363 second using v1.01-cache-2.11-cpan-de7293f3b23 )