X-Git-Url: http://lists.indexdata.com/cgi-bin?a=blobdiff_plain;ds=sidebyside;f=src%2Futil.cpp;h=cf9a6a02bcc0d5e3bdb7d34b3948f7777bcecb8b;hb=f0fb2a160e8c8cbb1147d476ae206ebcedbf8ecf;hp=0783b1da0a8224df57b870ba511eabeda00facc6;hpb=cac118fe88baae4092e18e55736e173d44aa7ad7;p=metaproxy-moved-to-github.git diff --git a/src/util.cpp b/src/util.cpp index 0783b1d..cf9a6a0 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -1,5 +1,5 @@ -/* $Id: util.cpp,v 1.21 2006-10-02 13:44:48 marc Exp $ - Copyright (c) 2005-2006, Index Data. +/* $Id: util.cpp,v 1.25 2007-01-25 14:05:54 adam Exp $ + Copyright (c) 2005-2007, Index Data. See the LICENSE file for details */ @@ -19,6 +19,24 @@ namespace mp = metaproxy_1; // Doxygen doesn't like mp::util, so we use this instead namespace mp_util = metaproxy_1::util; +const char * +mp_util::record_composition_to_esn(Z_RecordComposition *comp) +{ + if (comp && comp->which == Z_RecordComp_complex) + { + if (comp->u.complex->generic + && comp->u.complex->generic->elementSpec + && (comp->u.complex->generic->elementSpec->which == + Z_ElementSpec_elementSetName)) + return comp->u.complex->generic->elementSpec->u.elementSetName; + } + else if (comp && comp->which == Z_RecordComp_simple && + comp->u.simple->which == Z_ElementSetNames_generic) + return comp->u.simple->u.generic; + return 0; +} + + std::string mp_util::http_header_value(const Z_HTTP_Header* header, const std::string name) @@ -69,6 +87,32 @@ std::string mp_util::http_headers_debug(const Z_HTTP_Request &http_req) } +void mp_util::http_response(metaproxy_1::Package &package, + const std::string &content, + int http_code) +{ + + Z_GDU *zgdu_req = package.request().get(); + Z_GDU *zgdu_res = 0; + mp::odr odr; + zgdu_res + = odr.create_HTTP_Response(package.session(), + zgdu_req->u.HTTP_Request, + http_code); + + zgdu_res->u.HTTP_Response->content_len = content.size(); + zgdu_res->u.HTTP_Response->content_buf + = (char*) odr_malloc(odr, zgdu_res->u.HTTP_Response->content_len); + + strncpy(zgdu_res->u.HTTP_Response->content_buf, + content.c_str(), zgdu_res->u.HTTP_Response->content_len); + + //z_HTTP_header_add(odr, &hres->headers, + // "Content-Type", content_type.c_str()); + package.response() = zgdu_res; +} + + int mp_util::memcmp2(const void *buf1, int len1, const void *buf2, int len2) { @@ -290,6 +334,14 @@ void mp_util::set_vhost_otherinfo( } } +void mp_util::set_vhost_otherinfo( + Z_OtherInformation **otherInformation, ODR odr, + const std::string vhost, const int cat) +{ + yaz_oi_set_string_oidval(otherInformation, odr, + VAL_PROXY, cat, vhost.c_str()); +} + void mp_util::split_zurl(std::string zurl, std::string &host, std::list &db) {