Header

NAME

HTTP::Header - class encapsulating HTTP message header

SYNOPSIS

use HTTP::Header;
    my $h = HTTP::Header.new;
    $h.field(Accept => 'text/plain');
    say $h.field('Accept');
    $h.remove-field('Accept');

DESCRIPTION

This module provides a class with a set of methods making us able to easily handle HTTP message header.

METHODS

method new

method new(*%fields) returns HTTP::Header

A constructor. Takes name => value pairs as arguments.

my $head = HTTP::Header.new(:h1<v1>, :h2<v2>);

method header

multi method field(HTTP::Header:, Str $s) returns HTTP::Header::Field
    multi method field(HTTP::Header:, *%fields)

Gets/sets header field.

my $head = HTTP::Header.new(:h1<v1>, :h2<v2>);
    say $head.header('h1');
my $head = HTTP::Header.new(:h1<v1>, :h2<v2>);
    $head.header(:h3<v3>);

method init-field

method init-field(HTTP::Header:, *%fields)

Initializes a header field: adds a field only if it does not exist yet.

my $head = HTTP::Header.new;
    $head.header(:h1<v1>);
    $head.init-header(:h1<v2>, :h2<v2>); # it doesn't change the value of 'h1'
    say ~$head;

method push-header

method push-field(HTTP::Header:, HTTP::Header::Field $field)

Pushes a new field. Does not check if exists.

my $head = HTTP::Header.new;
    $head.push-header( HTTP::Header::Field.new(:name<n1>, :value<v1>) );
    say ~$head;

method remove-header

method remove-field(HTTP::Header:, Str $field)

Removes a field of name $field.

my $head = HTTP::Header.new;
    $head.header(:h1<v1>);
    $head.remove-header('h1');

method header-field-names

method header-field-names(HTTP::Header:) returns Parcel

Returns a list of names of all fields.

my $head = HTTP::Header.new(:h1<v1>, :h2<v2>);
    my @names = $head.header-field-names;
    say @names; # h1, h2

method clear

method clear(HTTP::Header:)

Removes all fields.

my $head = HTTP::Header.new(:h1<v1>, :h2<v2>);
    $head.clear;

method Str

method Str(HTTP::Header:, Str $eol = "\n")

Returns readable form of the whole header section.

method parse

method parse(HTTP::Header:, Str $raw)

Parses the whole header section.

my $head = HTTP::Header.new.parse("h1: v1\r\nh2: v2\r\n");
    say $head.perl;

SEE ALSO

HTTP::Header::Field, HTTP::Message

The Camelia image is copyright 2009 by Larry Wall. "Raku" is trademark of the Yet Another Society. All rights reserved.