X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=include%2Fmetaproxy%2Futil.hpp;h=e5d2768100f8e91479a9aa5f1f9eca2f0e5471c0;hb=b8d5728fc9d3461f5bfd7d79f415512822c38dcc;hp=3da0caa16a1b4d0f1e3a29f3a45f870144459609;hpb=1f20fd7b81d922d36a843cc3d157f8473912812c;p=metaproxy-moved-to-github.git diff --git a/include/metaproxy/util.hpp b/include/metaproxy/util.hpp index 3da0caa..e5d2768 100644 --- a/include/metaproxy/util.hpp +++ b/include/metaproxy/util.hpp @@ -1,5 +1,5 @@ /* This file is part of Metaproxy. - Copyright (C) 2005-2011 Index Data + Copyright (C) 2005-2013 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 @@ -35,26 +35,26 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA namespace metaproxy_1 { namespace util { - - template + + template std::string to_string(const T& t) { std::ostringstream o; if(o << t) - return o.str(); + return o.str(); return std::string(); }; - const char * + const char * record_composition_to_esn(Z_RecordComposition *comp); - std::string http_header_value(const Z_HTTP_Header* header, + std::string http_header_value(const Z_HTTP_Header* header, const std::string name); - std::string http_headers_debug(const Z_HTTP_Request &http_req); + std::string http_headers_debug(const Z_HTTP_Request &http_req); - void http_response(metaproxy_1::Package &package, - const std::string &content, + void http_response(metaproxy_1::Package &package, + const std::string &content, int http_code = 200); @@ -77,16 +77,16 @@ namespace metaproxy_1 { void split_zurl(std::string zurl, std::string &host, std::list &db); - + void get_vhost_otherinfo(Z_OtherInformation *otherInformation, std::list &vhosts); - + int remove_vhost_otherinfo(Z_OtherInformation **otherInformation, std::list &vhosts); - void set_vhost_otherinfo(Z_OtherInformation **otherInformation, + void set_vhost_otherinfo(Z_OtherInformation **otherInformation, ODR odr, - const std::string vhost, + const std::string vhost, const int cat); void set_vhost_otherinfo(Z_OtherInformation **otherInformation, @@ -104,6 +104,9 @@ namespace metaproxy_1 { void get_default_diag(Z_DefaultDiagFormat *r, int &error_code, std::string &addinfo); + Z_RecordComposition *piggyback_to_RecordComposition( + ODR odr, Odr_int result_set_size, Z_SearchRequest *sreq); + void piggyback(int smallSetUpperBound, int largeSetLowerBound, int mediumSetPresentNumber, @@ -124,6 +127,8 @@ namespace metaproxy_1 { Odr_int &number_to_present, const char **element_set_name); + std::string uri_encode(std::string s); + std::string uri_decode(std::string s); }; class odr : public boost::noncopyable { @@ -132,9 +137,9 @@ namespace metaproxy_1 { odr(); ~odr(); operator ODR() const; - Z_APDU *create_close(const Z_APDU *in_apdu, + Z_APDU *create_close(const Z_APDU *in_apdu, int reason, const char *addinfo); - Z_APDU *create_initResponse(const Z_APDU *in_apdu, + Z_APDU *create_initResponse(const Z_APDU *in_apdu, int error, const char *addinfo); Z_APDU *create_searchResponse(const Z_APDU *in_apdu, int error, const char *addinfo); @@ -150,6 +155,18 @@ namespace metaproxy_1 { ODR m_odr; }; + class wrbuf : public boost::noncopyable + { + public: + wrbuf(); + ~wrbuf(); + operator WRBUF() const; + size_t len(); + const char *buf(); + private: + WRBUF m_wrbuf; + }; + class PlainFile { class Rep; boost::scoped_ptr m_p;