MailFolder

 view release on metacpan or  search on metacpan

Mail/Folder/NNTP.pm  view on Meta::CPAN

sub get_message_file {
  my $self = shift;
  my $key = shift;

  return undef;
}

=head2 get_header($msg_number)

If the particular header has never been retrieved then C<get_header>
retrieves the header for the given news article from the news server,
converts it into a C<Mail::Header> object and returns a reference to
the object.

If the header has already been retrieved in a prior call to
C<get_header>, then the cached entry is returned.

It returns C<undef> on failure.

=cut

sub get_header {
  my $self = shift;
  my $key = shift;

  my $hdr = $self->SUPER::get_header($key);
  return $hdr if defined($hdr);

  # return undef unless ($self->SUPER::get_header($key));

  # return $self->{Messages}{$key}{Header} if ($self->{Messages}{$key}{Header});

  if (my $header = $self->{NNTP_Connection}->head($key)) {
    my $href = new Mail::Header($header, Modify => 0) or return undef;
    $self->cache_header($key, $href);
    return $href;
  }

  return undef;
}

=head2 append_message($mref)

Not currently implemented.  Returns C<0>.

=cut

sub append_message {
  my $self = shift;
  my $mref = shift;

  return 0;
}

=head2 update_message($msg_number, $mref)

Not currently implemented.  Returns C<0>.

=cut

sub update_message {
  my $self = shift;
  my $key = shift;
  my $mref = shift;

  return 0;
}

=head2 is_valid_folder_format($foldername)

Returns C<1> if the foldername either starts with the string
'C<news://>' or starts with the string 'C<#news:>' and the
C<NNTPSERVER> environment variable is set, otherwise return 0;

=cut

sub is_valid_folder_format($foldername) {
  my $foldername = shift;

  return (($foldername =~ /^news:\/\//) ||
	  (($foldername =~ /^\#news:/) && defined($ENV{NNTPSERVER})));
}

=head2 create($foldername)

Not currently implemented.  Returns C<0>.

=cut

sub create {
  my $self = shift;
  my $foldername = shift;

  return 0;
}
###############################################################################
sub _absorb_folder {
  my $self = shift;
  my $foldername = shift;

  my $qty_new_articles = 0;

  my @group = $self->{NNTP_Connection}->group($self->{NNTP_Newsgroup})
    or return undef;

  for my $msg ($group[1] .. $group[2]) {
    next if defined($self->{Messages}{$msg});
    $self->remember_message($msg);
    $self->get_header($msg);
    $qty_new_articles++;
  }

  return $qty_new_articles;
}

sub _extract_hostname {
  my $foldername = shift;

  return $1 if ($foldername =~ /^news:\/\/([^\/]+)\//);
  return $ENV{NNTPSERVER} if ($foldername =~ /^\#news:/);
  return undef;



( run in 0.687 second using v1.01-cache-2.11-cpan-39bf76dae61 )