No need to deepen our object graph, here.
sub new {
my ($class, $ctx, $cb) = @_;
$ctx->{feed_base_url} = $ctx->{-inbox}->base_url($ctx->{env});
sub new {
my ($class, $ctx, $cb) = @_;
$ctx->{feed_base_url} = $ctx->{-inbox}->base_url($ctx->{env});
- bless { cb => $cb || \&close, ctx => $ctx, emit_header => 1 }, $class;
+ $ctx->{cb} = $cb || \&close;
+ $ctx->{emit_header} = 1;
+ bless $ctx, $class;
}
sub response {
my ($class, $ctx, $code, $cb) = @_;
my $h = [ 'Content-Type' => 'application/atom+xml' ];
}
sub response {
my ($class, $ctx, $code, $cb) = @_;
my $h = [ 'Content-Type' => 'application/atom+xml' ];
- my $self = $class->new($ctx, $cb);
- $self->{gzf} = gzf_maybe($h, $ctx->{env});
- [ $code, $h, $self ]
+ $class->new($ctx, $cb);
+ $ctx->{gzf} = gzf_maybe($h, $ctx->{env});
+ [ $code, $h, $ctx ]
}
# called once for each message by PSGI server
}
# called once for each message by PSGI server
my ($self) = @_;
my $buf = do {
if (my $middle = $self->{cb}) {
my ($self) = @_;
my $buf = do {
if (my $middle = $self->{cb}) {
- my $smsg = $middle->($self->{ctx});
+ my $smsg = $middle->($self);
feed_entry($self, $smsg) if $smsg;
}
} // (delete($self->{cb}) ? '</feed>' : undef);
feed_entry($self, $smsg) if $smsg;
}
} // (delete($self->{cb}) ? '</feed>' : undef);
# returns undef or string
sub feed_entry {
# returns undef or string
sub feed_entry {
- my ($self, $smsg) = @_;
- my $ctx = $self->{ctx};
my $eml = $ctx->{-inbox}->smsg_eml($smsg) or return '';
my $hdr = $eml->header_obj;
my $mid = $smsg->{mid};
my $eml = $ctx->{-inbox}->smsg_eml($smsg) or return '';
my $hdr = $eml->header_obj;
my $mid = $smsg->{mid};
$email = ascii_html($email);
my $s = '';
$email = ascii_html($email);
my $s = '';
- if (delete $self->{emit_header}) {
+ if (delete $ctx->{emit_header}) {
$s .= atom_header($ctx, $title);
}
$s .= "<entry><author><name>$name</name><email>$email</email>" .
$s .= atom_header($ctx, $title);
}
$s .= "<entry><author><name>$name</name><email>$email</email>" .