DTA-CAB

 view release on metacpan or  search on metacpan

CAB/Format/Raw/HTTP.pm  view on Meta::CPAN


		   ##-- user args
		   @_
		  }, ref($that)||$that);

  ##-- instantiate LWP::UserAgent
  if (!defined($fmt->{ua})) {
    $fmt->{ua} = LWP::UserAgent->new(timeout=>$fmt->{timeout})
      or $fmt->logconfess("could not create LWP::UserAgent: $!");
  }

  return $fmt;
}

##==============================================================================
## Methods: Persistence
##==============================================================================

## @keys = $class_or_obj->noSaveKeys()
##  + returns list of keys not to be saved
##  + default just returns empty list
sub noSaveKeys {
  return (shift->SUPER::noSaveKeys(), qw(doc ua));
}

##==============================================================================
## Methods: Input
##==============================================================================

##--------------------------------------------------------------
## Methods: Input: Input selection

## $fmt = $fmt->close()
sub close {
  delete($_[0]{doc});
  return $_[0]->SUPER::close(@_[1..$#_]);
}

## $fmt = $fmt->fromString( $string)
## $fmt = $fmt->fromString(\$string)
sub fromString {
  my $fmt = shift;
  $fmt->close();
  return $fmt->parseRawString(ref($_[0]) ? $_[0] : \$_[0]);
}

## $fmt = $fmt->fromFh($filename_or_handle)
##  + override calls fromFh_str()
sub fromFh {
  return $_[0]->fromFh_str(@_[1..$#_]);
}

##--------------------------------------------------------------
## Methods: Input: local

## $fmt = $fmt->parseRawString(\$str)
sub parseRawString {
  my ($fmt,$str) = @_;
  utf8::encode($$str) if (utf8::is_utf8($$str));

  ## Use multipart/form-data to avoid implicit LF->CR+LF conversion by LWP::UserAgent (HTTP::Request::Common::POST() v6.03 / debian wheezy)
  #$fmt->trace("querying $fmt->{tokurl} ...");
  my $rsp = $fmt->{ua}->post($fmt->{tokurl}, { $fmt->{txtparam}=>$$str }, 'Content-Type'=>'multipart/form-data');
  if (!$rsp || !$rsp->is_success) {
    $fmt->trace("parseRawString(): error from server:\n", $rsp->as_string) if ($rsp);
    $fmt->logdie("parseRawString(): error from server $fmt->{tokurl}: ", ($rsp ? $rsp->status_line : '(no response)'))
      if (!$rsp || !$rsp->is_success);
  }

  ##-- construct & buffer document
  $fmt->{doc} = DTA::CAB::Format::TT->parseTokenizerString( $rsp->content_ref );
  return $fmt;
}

##--------------------------------------------------------------
## Methods: Input: Generic API

## $doc = $fmt->parseDocument()
sub parseDocument {
  return $_[0]{doc};
}


##==============================================================================
## Methods: Output
##  + output not supported
##==============================================================================

##--------------------------------------------------------------
## Methods: Output: Generic

## $type = $fmt->mimeType()
##  + default returns text/plain
sub mimeType { return 'text/plain'; }

## $ext = $fmt->defaultExtension()
##  + returns default filename extension for this format
sub defaultExtension { return '.raw'; }


1; ##-- be happy

__END__
##========================================================================
## POD DOCUMENTATION, auto-generated by podextract.perl


##========================================================================
## NAME
=pod

=head1 NAME

DTA::CAB::Format::Raw::HTTP - Document parser: raw untokenized text via HTTP tokenizer API

=cut

##========================================================================
## SYNOPSIS
=pod



( run in 2.307 seconds using v1.01-cache-2.11-cpan-98e64b0badf )