Commit 96caaa27a629f63145439bf4391bf55b498d7615
- Diff rendering mode:
- inline
- side by side
lib/LWP/UserAgent.pm
(29 / 20)
|   | |||
| 210 | 210 | sub prepare_request | |
| 211 | 211 | { | |
| 212 | 212 | my($self, $request) = @_; | |
| 213 | # sanity check the request passed in | ||
| 214 | if (defined $request) { | ||
| 215 | if (ref $request) { | ||
| 216 | Carp::croak("You need a request object, not a " . ref($request) . " object") | ||
| 217 | if ref($request) eq 'ARRAY' or ref($request) eq 'HASH' or | ||
| 218 | !$request->can('method') or !$request->can('uri'); | ||
| 219 | } | ||
| 220 | else { | ||
| 221 | Carp::croak("You need a request object, not '$request'"); | ||
| 222 | } | ||
| 223 | } | ||
| 224 | else { | ||
| 225 | Carp::croak("No request object passed in"); | ||
| 226 | } | ||
| 227 | Carp::croak("Bad request: Method missing") unless $request->method; | ||
| 213 | die "Method missing" unless $request->method; | ||
| 228 | 214 | my $url = $request->url; | |
| 229 | Carp::croak("Bad request: URL missing") unless $url; | ||
| 230 | Carp::croak("Bad request: URL must be absolute") unless $url->scheme; | ||
| 215 | die "URL missing" unless $url; | ||
| 216 | die "URL must be absolute" unless $url->scheme; | ||
| 231 | 217 | ||
| 232 | 218 | $self->run_handlers("request_preprepare", $request); | |
| 233 | 219 | ||
| … | … | ||
| 239 | 239 | sub simple_request | |
| 240 | 240 | { | |
| 241 | 241 | my($self, $request, $arg, $size) = @_; | |
| 242 | $request = $self->prepare_request($request); | ||
| 242 | |||
| 243 | # sanity check the request passed in | ||
| 244 | if (defined $request) { | ||
| 245 | if (ref $request) { | ||
| 246 | Carp::croak("You need a request object, not a " . ref($request) . " object") | ||
| 247 | if ref($request) eq 'ARRAY' or ref($request) eq 'HASH' or | ||
| 248 | !$request->can('method') or !$request->can('uri'); | ||
| 249 | } | ||
| 250 | else { | ||
| 251 | Carp::croak("You need a request object, not '$request'"); | ||
| 252 | } | ||
| 253 | } | ||
| 254 | else { | ||
| 255 | Carp::croak("No request object passed in"); | ||
| 256 | } | ||
| 257 | |||
| 258 | eval { | ||
| 259 | $request = $self->prepare_request($request); | ||
| 260 | }; | ||
| 261 | if ($@) { | ||
| 262 | $@ =~ s/ at .* line \d+.*//s; # remove file/line number | ||
| 263 | return _new_response($request, &HTTP::Status::RC_BAD_REQUEST, $@); | ||
| 264 | } | ||
| 243 | 265 | return $self->send_request($request, $arg, $size); | |
| 244 | 266 | } | |
| 245 | 267 | ||
| … | … | ||
| 1362 | 1362 | The method can assign a new request object to $_[0] to replace the | |
| 1363 | 1363 | request that is sent fully. | |
| 1364 | 1364 | ||
| 1365 | The return value from the callback is ignored. Exceptions are | ||
| 1366 | not trapped and are propagated to the outer request method. | ||
| 1365 | The return value from the callback is ignored. If an exceptions is | ||
| 1366 | raised it will abort the request and make the request method return a | ||
| 1367 | "400 Bad request" response. | ||
| 1367 | 1368 | ||
| 1368 | 1369 | =item request_send => sub { my($request, $ua, $h) = @_; ... } | |
| 1369 | 1370 |

