Changeset 22825
- Timestamp:
- 09/09/10 10:39:11 (17 months ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/mnw21/pathquery_refactor/intermine/perl/lib/InterMine/ResultIterator.pm
r22674 r22825 3 3 use Moose; 4 4 use InterMine::TypeLibrary qw(HTTPCode NetHTTP PathList TextCSVXS); 5 use MooseX::Types::Moose qw(Str HashRef Bool Num );5 use MooseX::Types::Moose qw(Str HashRef Bool Num GlobRef); 6 6 use HTTP::Status qw(status_message); 7 7 use Text::CSV_XS; 8 use IO::String;9 8 use List::MoreUtils qw(zip); 10 9 use Encode; … … 12 11 my $CRLF = "\015\012"; 13 12 14 has connection => 15 ( 16 is => 'ro', 17 isa => NetHTTP, 18 required => 1, 19 trigger => \&set_headers, 20 ); 13 sub BUILD { 14 my $self = shift; 15 confess "We need a connection or some content" 16 unless ($self->has_connection or $self->has_content); 17 } 18 19 has connection => ( 20 is => 'ro', 21 isa => NetHTTP, 22 trigger => \&set_headers, 23 predicate => 'has_connection', 24 ); 25 26 has content => ( 27 is => 'ro', 28 isa => GlobRef, 29 predicate => 'has_content', 30 ); 21 31 22 32 has error_code => … … 25 35 isa => HTTPCode, 26 36 writer => '_set_error_code', 37 predicate => 'has_code', 27 38 ); 28 39 … … 34 45 writer => '_set_error_message', 35 46 ); 47 48 before qr/^error_/ => sub { 49 my $self = shift; 50 unless ($self->has_code) { 51 $self->set_headers; 52 } 53 }; 36 54 37 55 has csv => … … 108 126 my ($version, $code, $phrase, $key, $value); 109 127 if ($line =~ /^HTTP/) { 110 chomp(($version, $code, $phrase) = split(/\s/, $line ));128 chomp(($version, $code, $phrase) = split(/\s/, $line, 3)); 111 129 } else { 112 130 chomp(($key, $value) = split(/:\s*/, $line, 2)); … … 141 159 } 142 160 161 ####### FOR USE WITH SOCKETS 162 143 163 sub read_line { 144 164 my $self= shift; 165 if ($self->has_content) { 166 return $self->content->getline; 167 } 145 168 return undef if $self->is_finished; 146 169 if ($self->is_chunked and $self->chunk_bytes_left < 1) { … … 189 212 sub arrayref { 190 213 my $self = shift; 191 my $io = IO::String->new($self->string); 214 my $line = $self->string or return; 215 open(my $io, '<', \$line) or die $!; 192 216 return $self->csv->getline($io); 193 217 } 194 218 sub hashref { 195 219 my $self = shift; 196 my $io = IO::String->new($self->string); 220 my $line = $self->string or return; 221 open(my $io, '<', \$line) or die $!; 197 222 return $self->csv->getline_hr($io); 198 223 }
Note: See TracChangeset
for help on using the changeset viewer.
