-/* $Id: filter_sru_to_z3950.cpp,v 1.18 2006-10-02 12:17:54 marc Exp $
+/* $Id: filter_sru_to_z3950.cpp,v 1.19 2006-10-02 13:44:48 marc Exp $
Copyright (c) 2005-2006, Index Data.
See the LICENSE file for details
union SRW_query {char * cql; char * xcql; char * pqf;};
typedef const int& SRW_query_type;
private:
- std::string sru_protocol(const Z_HTTP_Request &http_req) const;
+ //std::string sru_protocol(const Z_HTTP_Request &http_req) const;
std::string debug_http(const Z_HTTP_Request &http_req) const;
void http_response(mp::Package &package,
const std::string &content,
build_sru_response(package, odr_en, soap,
sru_pdu_res, charset, stylesheet);
return;
-
-
-
-
-
-
-
}
Z_SRW_explainRequest
const *er_req) const
{
-
-
-
// z3950'fy recordPacking
int record_packing = Z_SRW_recordPacking_XML;
if (er_req && er_req->recordPacking && 's' == *(er_req->recordPacking))
if (zgdu_req && zgdu_req->which == Z_GDU_HTTP_Request)
{
Z_HTTP_Request* http_req = zgdu_req->u.HTTP_Request;
- std::string content = debug_http(*http_req);
+ std::string content = mp_util::http_headers_debug(*http_req);
int http_code = 400;
http_response(package, content, http_code);
return true;
}
-std::string
-yf::SRUtoZ3950::Impl::sru_protocol(const Z_HTTP_Request &http_req) const
-{
- const std::string mime_urlencoded("application/x-www-form-urlencoded");
- const std::string mime_text_xml("text/xml");
- const std::string mime_soap_xml("application/soap+xml");
+// std::string
+// yf::SRUtoZ3950::Impl::sru_protocol(const Z_HTTP_Request &http_req) const
+// {
+// const std::string mime_urlencoded("application/x-www-form-urlencoded");
+// const std::string mime_text_xml("text/xml");
+// const std::string mime_soap_xml("application/soap+xml");
- const std::string http_method(http_req.method);
- const std::string http_type
- = mp_util::http_header_value(http_req.headers, "Content-Type");
+// const std::string http_method(http_req.method);
+// const std::string http_type
+// = mp_util::http_header_value(http_req.headers, "Content-Type");
- if (http_method == "GET")
- return "SRU GET";
+// if (http_method == "GET")
+// return "SRU GET";
- if (http_method == "POST"
- && http_type == mime_urlencoded)
- return "SRU POST";
+// if (http_method == "POST"
+// && http_type == mime_urlencoded)
+// return "SRU POST";
- if ( http_method == "POST"
- && (http_type == mime_text_xml
- || http_type == mime_soap_xml))
- return "SRU SOAP";
-
- return "HTTP";
-}
-
-std::string
-yf::SRUtoZ3950::Impl::debug_http(const Z_HTTP_Request &http_req) const
-{
- std::string message("<html>\n<body>\n<h1>"
- "Metaproxy SRUtoZ3950 filter"
- "</h1>\n");
+// if ( http_method == "POST"
+// && (http_type == mime_text_xml
+// || http_type == mime_soap_xml))
+// return "SRU SOAP";
+
+// return "HTTP";
+// }
+
+// std::string
+// yf::SRUtoZ3950::Impl::debug_http(const Z_HTTP_Request &http_req) const
+// {
+// std::string message("<html>\n<body>\n<h1>"
+// "Metaproxy SRUtoZ3950 filter"
+// "</h1>\n");
- message += "<h3>HTTP Info</h3><br/>\n";
- message += "<p>\n";
- message += "<b>Method: </b> " + std::string(http_req.method) + "<br/>\n";
- message += "<b>Version:</b> " + std::string(http_req.version) + "<br/>\n";
- message += "<b>Path: </b> " + std::string(http_req.path) + "<br/>\n";
-
- message += "<b>Content-Type:</b>"
- + mp_util::http_header_value(http_req.headers, "Content-Type")
- + "<br/>\n";
- message += "<b>Content-Length:</b>"
- + mp_util::http_header_value(http_req.headers, "Content-Length")
- + "<br/>\n";
- message += "</p>\n";
+// message += "<h3>HTTP Info</h3><br/>\n";
+// message += "<p>\n";
+// message += "<b>Method: </b> " + std::string(http_req.method) + "<br/>\n";
+// message += "<b>Version:</b> " + std::string(http_req.version) + "<br/>\n";
+// message += "<b>Path: </b> " + std::string(http_req.path) + "<br/>\n";
+
+// message += "<b>Content-Type:</b>"
+// + mp_util::http_header_value(http_req.headers, "Content-Type")
+// + "<br/>\n";
+// message += "<b>Content-Length:</b>"
+// + mp_util::http_header_value(http_req.headers, "Content-Length")
+// + "<br/>\n";
+// message += "</p>\n";
- message += "<h3>Headers</h3><br/>\n";
- message += "<p>\n";
- Z_HTTP_Header* header = http_req.headers;
- while (header){
- message += "<b>Header: </b> <i>"
- + std::string(header->name) + ":</i> "
- + std::string(header->value) + "<br/>\n";
- header = header->next;
- }
- message += "</p>\n";
- message += "</body>\n</html>\n";
- return message;
-}
+// message += "<h3>Headers</h3><br/>\n";
+// message += "<p>\n";
+// Z_HTTP_Header* header = http_req.headers;
+// while (header){
+// message += "<b>Header: </b> <i>"
+// + std::string(header->name) + ":</i> "
+// + std::string(header->value) + "<br/>\n";
+// header = header->next;
+// }
+// message += "</p>\n";
+// message += "</body>\n</html>\n";
+// return message;
+// }
void yf::SRUtoZ3950::Impl::http_response(metaproxy_1::Package &package,
const std::string &content,
-/* $Id: sru_util.cpp,v 1.1 2006-09-26 13:15:33 marc Exp $
+/* $Id: sru_util.cpp,v 1.2 2006-10-02 13:44:48 marc Exp $
Copyright (c) 2005-2006, Index Data.
See the LICENSE file for details
*/
#include "sru_util.hpp"
-//#include "util.hpp"
+#include "util.hpp"
//#include <yaz/wrbuf.h>
//#include <yaz/querytowrbuf.h>
#include <iostream>
-//#include <list>
+#include <string>
namespace mp = metaproxy_1;
// Doxygen doesn't like mp::gdu, so we use this instead
-namespace mp_sru = metaproxy_1::sru;
+namespace mp_util = metaproxy_1::util;
+
+
+mp_util::SRU::SRU_protocol_type
+mp_util::SRU::protocol(const Z_HTTP_Request &http_req) const
+{
+ const std::string mime_urlencoded("application/x-www-form-urlencoded");
+ const std::string mime_text_xml("text/xml");
+ const std::string mime_soap_xml("application/soap+xml");
+
+ const std::string http_method(http_req.method);
+ const std::string http_type
+ = mp_util::http_header_value(http_req.headers, "Content-Type");
+
+ if (http_method == "GET")
+ return SRU_GET;
+
+ if (http_method == "POST"
+ && http_type == mime_urlencoded)
+ return SRU_POST;
+
+ if ( http_method == "POST"
+ && (http_type == mime_text_xml
+ || http_type == mime_soap_xml))
+ return SRU_SOAP;
+
+ return SRU_NONE;
+}
std::ostream& std::operator<<(std::ostream& os, Z_SRW_PDU& srw_pdu)
-/* $Id: util.cpp,v 1.20 2006-09-29 08:42:47 marc Exp $
+/* $Id: util.cpp,v 1.21 2006-10-02 13:44:48 marc Exp $
Copyright (c) 2005-2006, Index Data.
See the LICENSE file for details
return std::string();
}
+std::string mp_util::http_headers_debug(const Z_HTTP_Request &http_req)
+{
+ std::string message("<html>\n<body>\n<h1>"
+ "Metaproxy SRUtoZ3950 filter"
+ "</h1>\n");
+
+ message += "<h3>HTTP Info</h3><br/>\n";
+ message += "<p>\n";
+ message += "<b>Method: </b> " + std::string(http_req.method) + "<br/>\n";
+ message += "<b>Version:</b> " + std::string(http_req.version) + "<br/>\n";
+ message += "<b>Path: </b> " + std::string(http_req.path) + "<br/>\n";
+
+ message += "<b>Content-Type:</b>"
+ + mp_util::http_header_value(http_req.headers, "Content-Type")
+ + "<br/>\n";
+ message += "<b>Content-Length:</b>"
+ + mp_util::http_header_value(http_req.headers, "Content-Length")
+ + "<br/>\n";
+ message += "</p>\n";
+
+ message += "<h3>Headers</h3><br/>\n";
+ message += "<p>\n";
+ Z_HTTP_Header* header = http_req.headers;
+ while (header){
+ message += "<b>Header: </b> <i>"
+ + std::string(header->name) + ":</i> "
+ + std::string(header->value) + "<br/>\n";
+ header = header->next;
+ }
+ message += "</p>\n";
+ message += "</body>\n</html>\n";
+ return message;
+}
int mp_util::memcmp2(const void *buf1, int len1,