名前

Mojo::Content::MultiPart - HTTPマルチパートコンテンツのコンテナ

使い方

use Mojo::Content::MultiPart;

my $content = Mojo::Content::MultiPart->new;
$content->parse('Content-Type: multipart/mixed; boundary=---foobar');
my $part = $content->parts->[4];

説明

Mojo::Content::MultiPartRFC 7230RFC 7231RFC 2388、 で説明されている HTTP 1.1マルチパートコンテンツのための コンテナです。

イベント

Mojo::Content::MultipartMojo::Contentからすべてのイベントを継承しており、次の新しいイベントを 発行することができます。

part

$multi->on(part => sub {
  my ($multi, $single) = @_;
  ...
});

新らしいMojo::Content::Singleの部分が開始するときに、発行されます。

$multi->on(part => sub {
  my ($multi, $single) = @_;
  return unless $single->headers->content_disposition =~ /name="([^"]+)"/;
  say "Field: $1";
});

属性

Mojo::Content::MultiPartMojo::Contentからすべての属性を 継承し、次の新しい属性を実装しています。

parts

my $parts = $multi->parts;
$multi    = $multi->parts([Mojo::Content::Single->new]);

このマルチパートコンテンツの中に埋め込まれたコンテンツのパーツ。 通常はMojo::Content::Singleです。

メソッド

Mojo::Content::MultiPartMojo::Contentからすべてのメソッドを継承しており、 次の新しいメソッドを実装しています。

body_contains

my $bool = $content->body_contains('foobarbaz');

コンテンツが指定した文字列を含んでいるかチェックします。

body_size

my $size = $content->body_size;

バイトでのコンテンツのサイズ。

build_boundary

my $boundary = $content->build_boundary;

適切なコンテンツの境界を生成し、Content-Typeヘッダにそれを追加します。

clone

my $clone = $multi->clone;

可能であればコンテンツを複製し、新しいMojo::Content::MultiPartオブジェクトを生成します。できないときは未定義値を返却します。

get_body_chunk

my $chunk = $content->get_body_chunk(0);

特定の位置から始まるコンテンツの断片を取得します。コンテンツが動的に生成されている場合は、同じチャンクを二度取得してしまう可能性があることに注意してください。

is_multipart

my $true = $multi->is_multipart;

常に真になります。これはMojo::Content::MultiPartオブジェクトです。

new

my $multi = Mojo::Content::MultiPart->new;
my $multi
  = Mojo::Content::MultiPart->new(parts => [Mojo::Content::Single->new]);
my $multi
  = Mojo::Content::MultiPart->new({parts => [Mojo::Content::Single->new]});

新しいMojo::Content::MultiPartオブジェクトを生成し、デフォルトのコンテンツパーサー でreadイベントを購読します。

参考

Mojolicious, Mojolicious::Guides, http://mojolicio.us.

(Mojolicious 8.12を反映)