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.