Backblaze-B2

 view release on metacpan or  search on metacpan

lib/Backblaze/B2/v1/AnyEvent.pm  view on Meta::CPAN

# AnyEvent->condvar
# which performs the real task.
# Actually, this now returns just a Promise

sub request {
    my( $self, %options) = @_;
    
    $options{ method } ||= 'GET';
    #my $completed = delete $options{ cb };
    my $method    = delete $options{ method };
    my $endpoint  = delete $options{ api_endpoint };
    my $headers = delete $options{ headers } || {};
    $headers = { $self->get_headers, %$headers };
    my $body = delete $options{ _body };
        
    my $url;
    if( ! $options{url} ) {
        croak "Don't know the api_endpoint for the request"
            unless $endpoint;
        $url = URI->new( join( "/b2api/v1/",
            $self->apiUrl,
            $endpoint)
        );
    } else {
        $url = delete $options{ url };
        $url = URI->new( $url )
            if( ! ref $url );
    };
    for my $k ( keys %options ) {
        my $v = $options{ $k };
        $url->query_param_append($k, $v);
    };

lib/Backblaze/B2/v1/AnyEvent.pm  view on Meta::CPAN

=cut

sub create_bucket {
    my( $self, %options ) = @_;
    
    croak "Need a bucket name"
        unless defined $options{ bucketName };
    $options{ accountId } ||= $self->accountId;
    $options{ bucketType } ||= 'allPrivate'; # let's be defensive here...
    
    $self->json_request(api_endpoint => 'b2_create_bucket',
        accountId => $options{ accountId },
        bucketName => $options{ bucketName },
        bucketType => $options{ bucketType },
        %options
    )
}

=head2 C<< $b2->delete_bucket >>

  $b2->delete_bucket(

lib/Backblaze/B2/v1/AnyEvent.pm  view on Meta::CPAN

=cut

sub delete_bucket {
    my( $self, %options ) = @_;
    
    croak "Need a bucketId"
        unless defined $options{ bucketId };
    $options{ accountId } ||= $self->accountId;
    
    my $res = AnyEvent->condvar;
    $self->json_request(api_endpoint => 'b2_delete_bucket',
        accountId => $options{ accountId },
        bucketId => $options{ bucketId },
        %options
    );
}

=head2 C<< $b2->list_buckets >>

  $b2->list_buckets();

lib/Backblaze/B2/v1/AnyEvent.pm  view on Meta::CPAN


Returns the error status, the message and the payload.

=cut

sub list_buckets {
    my( $self, %options ) = @_;
    
    $options{ accountId } ||= $self->accountId;
    
    $self->json_request(api_endpoint => 'b2_list_buckets',
        accountId => $options{ accountId },
        %options
    )
}

=head2 C<< $b2->get_upload_url >>

  my $upload_handle = $b2->get_upload_url();
  $b2->upload_file( file => $file, handle => $upload_handle );

L<https://www.backblaze.com/b2/docs/b2_get_upload_url.html>

=cut

sub get_upload_url {
    my( $self, %options ) = @_;
    
    croak "Need a bucketId"
        unless defined $options{ bucketId };

    $self->json_request(api_endpoint => 'b2_get_upload_url',
        %options
    )
}

=head2 C<< $b2->upload_file >>

  my $upload_handle = $b2->get_upload_url();
  $b2->upload_file(
      file => $file,
      handle => $upload_handle

lib/Backblaze/B2/v1/AnyEvent.pm  view on Meta::CPAN


=cut

sub list_file_names {
    my( $self, %options ) = @_;
    
    croak "Need a bucket id"
        unless defined $options{ bucketId };

    $self->json_request(
        api_endpoint => 'b2_list_file_names',
        %options
    );
}

=head2 C<< $b2->list_all_file_names >>

  my $list = $b2->list_all_file_names(
      startFileName => $startFileName,
      maxFileCount => 1000, # maximum per round
      bucketId => ...,

lib/Backblaze/B2/v1/AnyEvent.pm  view on Meta::CPAN

    my( $self, %options ) = @_;
    
    croak "Need a bucket id"
        unless defined $options{ bucketId };
    croak "Need a file name prefix"
        unless defined $options{ fileNamePrefix };
    croak "Need a duration for the token"
        unless defined $options{ validDurationInSeconds };

    $self->json_request(
        api_endpoint => 'b2_get_download_authorization',
        %options
    );
}


1;



( run in 0.986 second using v1.01-cache-2.11-cpan-49f99fa48dc )