| 276 | } |
| 277 | |
| 278 | bool |
| 279 | HttpDataFetcherImpl::getData(const string &url, ResponseData &resp_data) const |
| 280 | { |
| 281 | UrlToContentMap::const_iterator iter = _pages.find(url); |
| 282 | |
| 283 | if (iter == _pages.end()) { |
| 284 | TSError("[HttpDataFetcherImpl]Content being requested for unregistered URL [%s]", url.data()); |
| 285 | return false; |
| 286 | } |
| 287 | const RequestData &req_data = iter->second; // handy reference |
| 288 | if (!req_data.complete) { |
| 289 | // request not completed yet |
| 290 | TSError("[HttpDataFetcherImpl]Request for URL [%s] not complete", url.data()); |
| 291 | return false; |
| 292 | } |
| 293 | if (req_data.response.empty()) { |
| 294 | // did not receive valid data |
| 295 | TSError("[HttpDataFetcherImpl]No valid data received for URL [%s]; returning empty data to be safe", url.data()); |
| 296 | resp_data.clear(); |
| 297 | return false; |
| 298 | } |
| 299 | |
| 300 | resp_data.set(req_data.body, req_data.body_len, req_data.bufp, req_data.hdr_loc, req_data.resp_status); |
| 301 | DBG("[%s] Found data for URL [%s] of size %d starting with [%.5s]", __FUNCTION__, url.data(), req_data.body_len, req_data.body); |
| 302 | return true; |
| 303 | } |
| 304 | |
| 305 | void |
| 306 | HttpDataFetcherImpl::clear() |