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 )