NAME

    dbedia::blob - interface to (not only) b.dbedia.com blob storage

SYNOPSIS

        use dbedia::blob;
    
        my $blob = dbedia::blob->new(file => $file);
        say $blob->file_path;
        say $blob->file_url;
        say $blob->file_meta->{mime_type};
        say $blob->file_meta_yaml;
    
        $blob->upload;

DESCRIPTION

    Module to upload files to blob server with their sha256 checksum as a
    part of their name. So for example swagger-ui.js becomes
    https://b.dbedia.com/e3d4e875f9d0b751bc7276e6472e96a5262cabc64b060540da
    190bfdc0e36dec/swagger-ui.js and will be stored under
    e3/d4/e8/75f9d0b751bc7276e6472e96a5262cabc64b060540da190bfdc0e36dec on
    a target server.

METHODS

 new(file => ..., base_uri => ...)

    Object constructor

 file

    Object accessor with file location on local filesystem.

 base_uri

    Object accessor with base location on blob server. Default to
    https://b.dbedia.com/ but can be anything like
    http://you-server/blob-path/.

 file_chksum

    file sha256 hex checksum.

 file_url

    Web url for a file based on the checksum and base_uri.

 file_path

    File path on a blob server.

 file_meta

    Return file meta has with original filename, mime_type and size. For
    example:

        {   filename  => 'swagger-ui.js',
            mime_type => 'application/javascript',
            size      => 355197,
        }

 file_meta_yaml

    Returns "file_meta" yaml.

 file_meta_path

    File meta data (yaml) path on a blob server.

 upload($hostname)

    Using Net::SCP will upload "file" to $hostname server. Default is
    dbedia-blob which can be configured in ~/.ssh/config to point to any
    hostname/username/auth configuration of your liking.

    In case file is already present will print warning about skipping.

 default_base_uri

    Returns https://b.dbedia.com/ uri.

EXAMPLE NGINX CONFIG

    configuration to serve blobs via nginx:

        server {
            server_name  b.dbedia.com;
    
            access_log /var/log/nginx/b.dbedia-access.log;
    
            root   /srv/www/b.dbedia.com;
            index  index.html index.htm;
    
            location / {
                expires 5m;
            }
            location ~ "^(/..)(..)(..)(.{58})(.*)$" {
                alias /srv/www/b.dbedia.com/$1/$2/$3/$4;
                expires 24h;
            }
        }

CONTRIBUTORS

    The following people have contributed to the Sys::Path by committing
    their code, sending patches, reporting bugs, asking questions,
    suggesting useful advice, nitpicking, chatting on IRC or commenting on
    my blog (in no particular order):

        you?

AUTHOR

    Jozef Kutej

LICENSE AND COPYRIGHT

    This program is free software; you can redistribute it and/or modify it
    under the terms of either: the GNU General Public License as published
    by the Free Software Foundation; or the Artistic License.

    See http://dev.perl.org/licenses/ for more information.

