Rex-Repositorio
view release on metacpan or search on metacpan
lib/Rex/Repositorio/Server/Docker/Image.pm view on Meta::CPAN
readlink File::Spec->catfile( $image_dir, "..", $parent_id, "parent" );
}
$self->render( json => \@ids );
}
else {
$self->_auth_upstream();
my $upstream_file = File::Spec->catfile( $image_dir, "endpoint.data" );
$self->app->log->debug("Looking for upstream file: $upstream_file");
if ( -f $upstream_file ) {
my ($upstream_host) = eval { local (@ARGV) = ($upstream_file); <>; };
$orig_file_url =~ s"^(http|https)://([^/]+)/"$1://$upstream_host/";
$self->app->log->debug("Rewrite Upstream-URL: $orig_file_url");
}
$self->proxy_to(
$orig_file_url,
sub {
my ( $c, $tx ) = @_;
$c->app->log->debug("Got data from upstream...");
$c->app->log->debug("Writing ancestry (parent) file: $parent_id_file");
lib/Rex/Repositorio/Server/Docker/Image.pm view on Meta::CPAN
$self->res->headers->add( 'Content-Type', 'application/octet-stream' );
#$self->render(data => IO::All->new($layer_file)->slurp);
$self->render_file( filepath => $layer_file );
}
else {
$self->_auth_upstream();
my $upstream_file = File::Spec->catfile( $image_dir, "endpoint.data" );
$self->app->log->debug("Looking for upstream file: $upstream_file");
if ( -f $upstream_file ) {
my ($upstream_host) = eval { local (@ARGV) = ($upstream_file); <>; };
$orig_file_url =~ s"^(http|https)://([^/]+)/"$1://$upstream_host/";
$self->app->log->debug("Rewrite Upstream-URL: $orig_file_url");
}
$self->proxy_to(
$orig_file_url,
sub {
my ( $c, $tx ) = @_;
$c->app->log->debug("Got data from upstream...");
$c->app->log->debug("Writing layer file: $layer_file");
lib/Rex/Repositorio/Server/Docker/Image.pm view on Meta::CPAN
$self->res->headers->add( 'X-Docker-Payload-Checksum', $chksum );
$self->res->headers->add( 'Content-Type', 'application/json' );
return $self->render( text => $content );
}
else {
$self->_auth_upstream();
my $upstream_file = File::Spec->catfile( $image_dir, "endpoint.data" );
$self->app->log->debug("Looking for upstream file: $upstream_file");
if ( -f $upstream_file ) {
my ($upstream_host) = eval { local (@ARGV) = ($upstream_file); <>; };
$orig_file_url =~ s"^(http|https)://([^/]+)/"$1://$upstream_host/";
$self->app->log->debug("Rewrite Upstream-URL: $orig_file_url");
}
$self->proxy_to(
$orig_file_url,
sub {
my ( $c, $tx ) = @_;
$c->app->log->debug("Got data from upstream...");
open my $fh, '>', $image_json or die($!);
lib/Rex/Repositorio/Server/Yum/File.pm view on Meta::CPAN
$self->render("file/serve");
}
elsif ( -f $serve_dir ) {
$self->app->log->debug("File-Download: $serve_dir");
if ( -f "$serve_dir.etag" && ( $do_proxy eq "true" || $do_proxy eq "on" ) )
{
# there is an etag file, so the file was downloaded via proxy
# check upstream if file is out-of-date
my ($etag) = eval { local ( @ARGV, $/ ) = ("$serve_dir.etag"); <>; };
$self->app->log->debug(
"Making ETag request to upstream ($orig_url): ETag: $etag.");
my $tx = $self->ua->head( $orig_url,
{ Accept => '*/*', 'If-None-Match' => $etag } );
if ( $tx->success ) {
my $upstream = $tx->res->headers->header('ETag');
$upstream =~ s/"//g;
if ( $upstream ne $etag ) {
$self->app->log->debug(
"Upstream ETag and local ETag does not match: $upstream != $etag");
( run in 1.115 second using v1.01-cache-2.11-cpan-49f99fa48dc )