HTTP-Promise
view release on metacpan - search on metacpan
view release on metacpan or search on metacpan
lib/HTTP/Promise/Headers.pm view on Meta::CPAN
}
sub new_number
{
my $self = shift( @_ );
require Module::Generic::Number;
return( Module::Generic::Number->new( @_ ) );
}
sub new_scalar
{
my $self = shift( @_ );
require Module::Generic::Scalar;
return( Module::Generic::Scalar->new( @_ ) );
}
# <https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Origin>
sub origin { return( shift->_set_get_one_uri( 'Origin', @_ ) ); }
# Copied from Module::Generic to avoid loading it
sub pass_error
{
my $self = shift( @_ );
my $pack = ref( $self ) || $self;
my $opts = {};
my $err;
my $class;
no strict 'refs';
if( scalar( @_ ) )
{
# Either an hash defining a new error and this will be passed along to error(); or
# an hash with a single property: { class => 'Some::ExceptionClass' }
if( scalar( @_ ) == 1 && ref( $_[0] ) eq 'HASH' )
{
$opts = $_[0];
}
else
{
# $self->pass_error( $error_object, { class => 'Some::ExceptionClass' } );
if( scalar( @_ ) > 1 && ref( $_[-1] ) eq 'HASH' )
{
$opts = pop( @_ );
}
$err = $_[0];
}
}
# We set $class only if the hash provided is a one-element hash and not an error-defining hash
$class = CORE::delete( $opts->{class} ) if( scalar( keys( %$opts ) ) == 1 && [keys( %$opts )]->[0] eq 'class' );
# called with no argument, most likely from the same class to pass on an error
# set up earlier by another method; or
# with an hash containing just one argument class => 'Some::ExceptionClass'
if( !defined( $err ) && ( !scalar( @_ ) || defined( $class ) ) )
{
if( !defined( $self->{error} ) )
{
warn( "No error object provided and no previous error set either! It seems the previous method call returned a simple undef\n" );
}
else
{
$err = ( defined( $class ) ? bless( $self->{error} => $class ) : $self->{error} );
}
}
elsif( defined( $err ) &&
Scalar::Util::blessed( $err ) &&
( scalar( @_ ) == 1 ||
( scalar( @_ ) == 2 && defined( $class ) )
) )
{
$self->{error} = ${ $pack . '::ERROR' } = ( defined( $class ) ? bless( $err => $class ) : $err );
}
# If the error provided is not an object, we call error to create one
else
{
return( $self->error( @_ ) );
}
if( want( 'OBJECT' ) )
{
require Module::Generic::Null;
my $null = Module::Generic::Null->new( $err, { debug => $self->{debug}, has_error => 1 });
rreturn( $null );
}
my $wantarray = wantarray();
if( $self->debug )
{
my $caller = [caller(1)];
}
return;
}
sub print
{
my $self = shift( @_ );
my $fh = shift( @_ );
my $opts = $self->_get_args_as_hash( @_ );
my $eol = $opts->{eol} || CRLF;
$fh ||= select;
return( $self->error( "Filehandle provided ($fh) is not a proper filehandle and its not a HTTP::Promise::IO object." ) ) if( !$self->_is_glob( $fh ) && !$self->_is_a( $fh => 'HTTP::Promise::IO' ) );
return( $fh->print( $self->as_string( $eol ) ) );
}
sub proxy { return( shift->_set_get_uri( 'proxy', @_ ) ); }
# NOTE: proxy_authenticate() is inherited
# <https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Proxy-Authenticate>
sub proxy_authenticate { return( shift->_set_get_one( 'Proxy-Authenticate', @_ ) ); }
# NOTE: proxy_authorization() is inherited
# <https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Proxy-Authorization>
sub proxy_authorization { return( shift->_set_get_one( 'Proxy-Authorization', @_ ) ); }
# NOTE: proxy_authorization_basic() is inherited
# NOTE: push_header() is inherited
# <https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Range>
sub range { return( shift->_set_get_multi( 'Range', @_ ) ); }
sub recommended_filename
{
my $self = shift( @_ );
foreach my $attr_name ( qw( content-disposition.filename* content-disposition.filename content-type.name ) )
{
my $value = $self->mime_attr( $attr_name );
if( defined( $value ) &&
$value ne '' &&
$value =~ /\S/ )
{
return( $self->decode_filename( $value ) );
view all matches for this distributionview release on metacpan - search on metacpan
( run in 2.536 seconds using v1.00-cache-2.02-grep-82fe00e-cpan-48ebf85a1963 )