Amazon-S3

 view release on metacpan or  search on metacpan

t/lib/S3TestUtils.pm  view on Meta::CPAN

    my $rsp = HTTP::Tiny->new->get( 'http://' . "$host/_localstack/health" );

    die "ERROR: localstack is not available\n"
      if !$rsp->{success};

    require JSON;

    my $services = JSON->new->decode( $rsp->{content} );

    die "S3 not available\n"
      if $services->{services}{s3} ne 'running';
  }
  elsif ( defined $ENV{AMAZON_S3_MINIO} ) {

    $host //= $DEFAULT_MINIO_HOST;

    $ENV{AMAZON_S3_SKIP_ACLS}                   = $TRUE;
    $ENV{AMAZON_S3_EXPENSIVE_TESTS}             = $TRUE;
    $ENV{AMAZON_S3_SKIP_REGION_CONSTRAINT_TEST} = $TRUE;
  }

  $host //= 's3.amazonaws.com';

  return $host;
}

########################################################################
sub get_s3_service {
########################################################################
  my ( $host, $raise_error ) = @_;

  die "ERROR: usage: get_s3_service(host)\n"
    if !$host;

  my $s3 = eval {

    if ( $ENV{AMAZON_S3_CREDENTIALS} ) {
      require Amazon::Credentials;

      return Amazon::S3->new(
        { credentials      => Amazon::Credentials->new,
          host             => $host,
          secure           => is_aws(),
          dns_bucket_names => $ENV{AMAZON_S3_DNS_BUCKET_NAMES},
          level            => $ENV{DEBUG} ? 'trace' : 'error',
          raise_error      => $raise_error,
        }
      );

    }
    else {
      return Amazon::S3->new(
        { aws_access_key_id     => $ENV{AWS_ACCESS_KEY_ID},
          aws_secret_access_key => $ENV{AWS_SECRET_ACCESS_KEY},
          token                 => $ENV{AWS_SESSION_TOKEN},
          host                  => $host,
          secure                => is_aws(),
          dns_bucket_names      => $ENV{AMAZON_S3_DNS_BUCKET_NAMES},
          level                 => $ENV{DEBUG} ? 'trace' : 'error',
          raise_error           => $raise_error,
          debug                 => $ENV{DEBUG},
        }
      );
    }
  };

  die $EVAL_ERROR
    if $EVAL_ERROR;

  return $s3;
}

########################################################################
sub create_bucket {
########################################################################
  my ( $s3, $bucket_name ) = @_;

  $bucket_name = $SLASH . $bucket_name;

  my $bucket_obj
    = eval { return $s3->add_bucket( { bucket => $bucket_name } ); };

  return $bucket_obj;
}

########################################################################
sub add_keys {
########################################################################
  my ( $bucket_obj, $max_keys, $prefix ) = @_;

  $prefix //= q{};

  foreach my $key ( 1 .. $max_keys ) {
    my $keyname = sprintf '%stesting-%02d.txt', $prefix, $key;
    my $value   = 'T';

    $bucket_obj->add_key( $keyname, $value );
  }

  return $max_keys;
}

1;



( run in 0.470 second using v1.01-cache-2.11-cpan-062aa07a564 )