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::MultiPartは RFC 7230、 RFC 7231、 RFC 2388、 で説明されている HTTP 1.1マルチパートコンテンツのための コンテナです。
イベント
Mojo::Content::MultipartはMojo::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::MultiPartはMojo::Contentからすべての属性を 継承し、次の新しい属性を実装しています。
parts
my $parts = $multi->parts; $multi = $multi->parts([Mojo::Content::Single->new]);
このマルチパートコンテンツの中に埋め込まれたコンテンツのパーツ。 通常はMojo::Content::Singleです。
メソッド
Mojo::Content::MultiPartはMojo::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を反映)