NAME

Backblaze::B2 - interface to the Backblaze B2 API

SYNOPSIS

METHODS

Backblaze::B2->new %options

SETUP

NAME

Backblaze::B2::v1 - Backblaze B2 API account

METHODS

->new %options

my $b2 = Backblaze::B2::v1->new(
    api => 'Backblaze::B2::v1::Synchronous', # the default
);

Creates a new instance. Depending on whether you pass in <Backblaze::B2::v1::Synchronous> or <Backblaze::B2::v1::AnyEvent>, you will get a synchronous or asynchronous API.

The synchronous API is what is documented here, as this is the most likely use case.

my @buckets = $b2->buckets();
for( @buckets ) {
    ...
}

The asynchronous API is identical to the synchronous API in spirit, but will return Promises . These condvars usually return two or more parameters upon completion:

my $results = $b2->buckets();
$results->then( sub{ 
    my( @buckets ) = @_;
    for( @buckets ) {
        ...
    }
}

The asynchronous API puts the burden of error handling into your code.

->buckets

my @buckets = $b2->buckets();

Returns a list of Backblaze::B2::Bucket objects associated with the B2 account.

->bucket_from_id

my @buckets = $b2->bucket_from_id(
    'deadbeef'
);

Returns a Backblaze::B2::Bucket object that has the given ID. It does not make an HTTP request to fetch the name and status of that bucket.

->create_bucket

my $new_bucket = $b2->create_bucket(
    name => 'my-new-bucket', # only /[A-Za-z0-9-]/i are allowed as bucket names
    type => 'allPrivate', # or allPublic
);

print sprintf "Created new bucket %s\n", $new_bucket->id;

Creates a new bucket and returns it.

->api

Returns the underlying API object

->files( %options )

Lists the files contained in this bucket

my @files = $bucket->files(
    startFileName => undef,
);

By default it returns only the first 1000 files, but see the allFiles parameter.

->upload_file( %options )

Uploads a file into this bucket, potentially creating a new file version.

my $new_file = $bucket->upload_file(
    file => 'some/local/file.txt',
    target_file => 'the/public/name.txt',
);

->download_file_by_name( %options )

Downloads a file from this bucket by name:

my $content = $bucket->download_file_by_name(
    fileName => 'the/public/name.txt',
);

This saves you searching through the list of existing files if you already know the filename.

->get_download_authorization( %options )

Downloads a file from this bucket by name:

my $authToken = $bucket->get_download_authorization(
    fileNamePrefix => '/members/downloads/',
    validDurationInSeconds => 300, # five minutes
);

This returns an authorization token that can download files with the given prefix.

->api

Returns the underlying API object

->files( %options )

Lists the files contained in this bucket

my @files = $bucket->files(
    startFileName => undef,
);

By default it returns only the first 1000 files, but see the allFiles parameter.

->upload_file( %options )

Uploads a file into this bucket, potentially creating a new file version.

my $new_file = $bucket->upload_file(
    file => 'some/local/file.txt',
    target_file => 'the/public/name.txt',
);

->download_file_by_name( %options )

Downloads a file from this bucket by name:

my $content = $bucket->download_file_by_name(
    file => 'the/public/name.txt',
);

This saves you searching through the list of existing files if you already know the filename.

->api

Returns the underlying API object