X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Ftorus.cpp;h=5352b9ab1700ac563d335be1c440ff6339ba9217;hb=c346e86f9e0b0414757f89aba11f7b37e3b12ac2;hp=2a0a36c8c61a42cb9caef4e02857af27430eef6a;hpb=ae887cad7a7eaceb0510d89ad1bb74f34934210b;p=metaproxy-moved-to-github.git diff --git a/src/torus.cpp b/src/torus.cpp index 2a0a36c..5352b9a 100644 --- a/src/torus.cpp +++ b/src/torus.cpp @@ -1,5 +1,5 @@ /* This file is part of Metaproxy. - Copyright (C) 2005-2011 Index Data + Copyright (C) Index Data Metaproxy is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free @@ -27,14 +27,22 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA namespace mp = metaproxy_1; -xmlDoc *mp::get_searchable(std::string url_template, const std::string &db, +xmlDoc *mp::get_searchable(mp::Package &package, + std::string url_template, const std::string &db, + const std::string &query, const std::string &realm, const std::string &proxy) { - // http://newmk2.indexdata.com/torus2/searchable.ebsco/records/?query=udb=aberdeenUni + // http://mk2.indexdata.com/torus2/searchable/records/?query=udb%3d%db + // or + // http://mk2.indexdata.com/torus2/searchable/records/?query=%query xmlDoc *doc = 0; size_t found; + found = url_template.find("%query"); + if (found != std::string::npos) + url_template.replace(found, 6, mp::util::uri_encode(query)); + found = url_template.find("%db"); if (found != std::string::npos) url_template.replace(found, 3, mp::util::uri_encode(db)); @@ -45,7 +53,7 @@ xmlDoc *mp::get_searchable(std::string url_template, const std::string &db, Z_HTTP_Header *http_headers = 0; mp::odr odr; - + z_HTTP_header_add(odr, &http_headers, "Accept","application/xml"); yaz_url_t url_p = yaz_url_create(); @@ -59,28 +67,35 @@ xmlDoc *mp::get_searchable(std::string url_template, const std::string &db, 0, /* content buf */ 0 /* content_len */ ); - if (http_response && http_response->code == 200 && + if (http_response && http_response->code == 200 && http_response->content_buf) { - yaz_log(YLOG_LOG, "Torus: %s OK", url_template.c_str()); doc = xmlParseMemory(http_response->content_buf, http_response->content_len); - + if (doc) + package.log("zoom", YLOG_LOG, "Torus: %s OK", + url_template.c_str()); + else + package.log("zoom", YLOG_WARN, "Torus: %s FAIL. XML parse failed", + url_template.c_str()); } else { - yaz_log(YLOG_WARN, "Torus: %s FAIL", url_template.c_str()); if (http_response) { - yaz_log(YLOG_LOG, "HTTP code: %d", http_response->code); + package.log("zoom", YLOG_WARN, "Torus: %s FAIL. HTTP code %d", + url_template.c_str(), http_response->code); } + else + package.log("zoom", YLOG_WARN, "Torus: %s FAIL. No HTTP response", + url_template.c_str()); } if (http_response && http_response->content_buf) { - yaz_log(YLOG_LOG, "HTTP content:\n%.*s", - (int) http_response->content_len, - http_response->content_buf); + package.log("zoom", YLOG_LOG, "HTTP content"); + package.log_write(http_response->content_buf, + http_response->content_len); } yaz_url_destroy(url_p); return doc;