The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Eve::Uri - a URI automation class.

SYNOPSIS

    use Eve::Uri;

    my $uri  = Eve::Uri->new(
        string => 'http://domain.com/path/script?foo=bar&baz=1&baz=2');

    my $string = $uri->string;
    my $host = $uri->host;
    my $fragment = $uri->fragment;
    my $query_string = $uri->query;

    my $query_parameter = $uri->get_query_parameter(name => 'foo');
    my @query_parameter_list = $uri->get_query_parameter(name => 'baz');

    $uri->set_query_parameter(name => 'foo', value => 'some');
    $uri->set_query_parameter(name => 'baz', value => [3, 4]);

    $uri->set_query_hash(hash => {'name' => 'foo', 'value' => 'some'});
    $uri->set_query_hash(
        hash => {'name' => 'foo', 'value' => 'some'}, delimiter => '&');
    my $query_hash = $uri->get_query_hash();

    my $another_uri = $uri->clone();

    my $matches_hash = $uri->match($another_uri) # empty hash - no placeholders

    $another_uri->query = 'another=query';
    $matches_hash = $uri->match($another_uri); # undef

    $another_uri->path_concat('/some/deeper/path');

    my $placeholder_uri = Eve::Uri->new(
        string => 'http://domain.com/:placeholder/:another');

    my $substituted_uri = $placeholder_uri->substitute(
        hash => {
            'placeholder' => 'first_value',
            'another' => 'another_value'});

    print $substituted_uri->string;
    # http://domain.com/first_value/another_value

    my $uri_is_relative = $uri->is_relative();

DESCRIPTION

The class provides automation for different common operations with URIs. A URI is automaticaly brought to the canonical form after creation or after using any setter method.

Attributes

fragment

a fragment part of the URI.

query

a query string part of the URI

string

an URI as a string

Constructor arguments

string

a string that can contain placeholders that are preceded with a semicolon character (':').

METHODS

init()

clone()

Clones and returns the object.

Returns

The object identical to self.

match()

Matches self against other URI.

Arguments

uri

a URI instance to match with.

Returns

If it matches then a substitutions hash is returned, otherwise - undef. If no placeholders in the URI empty hash is returned. Note that the method ignores query and fragment parts of URI.

path_concat()

Concatenates the url path with another path.

Arguments

string

substitute()

Substitutes values to the URI placeholders.

Arguments

hash

a hash of substitutions.

Throws

Eve::Error::Value

when not enough or redundant substitutions are specified.

get_query_parameter()

Returns a query parameter value for a certain parameter name.

Arguments

name

set_query_parameter()

Sets a query parameter value or a list of values for a certain parameter name.

Arguments

name
value

If a scalar value is passed, it is assigned as a single value for the parameter name. If a list reference is passed, the parameter is assigned as a list.

get_query_hash()

Gets query string parameters as a hash.

set_query_hash()

Sets query string parameters as a hash.

Arguments

hash
delimiter

is_relative()

Returns 0 or 1 depending on the URI.

Returns

1

the URI is relative, e.g. /some/path

0

the URI is absolute, e.g. http://example.com

SEE ALSO

URI

LICENSE AND COPYRIGHT

Copyright 2012 Igor Zinovyev.

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.

AUTHOR

Sergey Konoplev
Igor Zinovyev