Files
2026-06-01 12:46:52 +02:00

81 lines
1.7 KiB
C++

// Copyright (c) Glyn Matthews 2011, 2012.
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
#ifndef __BOOST_NETWORK_URI_DIRECTIVES_QUERY_INC__
# define __BOOST_NETWORK_URI_DIRECTIVES_QUERY_INC__
# include <boost/network/uri/encode.hpp>
# include <boost/range/begin.hpp>
# include <boost/range/end.hpp>
namespace boost {
namespace network {
namespace uri {
struct query_directive {
explicit query_directive(const std::string &query)
: query(query)
{}
template <
class Uri
>
void operator () (Uri &uri) const {
uri.append("?");
uri.append(query);
}
std::string query;
};
inline
query_directive query(const std::string &query) {
return query_directive(query);
}
struct query_key_query_directive {
query_key_query_directive(const std::string &key, const std::string &query)
: key(key), query(query)
{}
template <
class Uri
>
void operator () (Uri &uri) const {
std::string encoded_key, encoded_query;
if (boost::empty(uri.query()))
{
uri.append("?");
}
else
{
uri.append("&");
}
uri.append(key);
uri.append("=");
uri.append(query);
}
std::string key;
std::string query;
};
inline
query_key_query_directive query(const std::string &key, const std::string &query) {
return query_key_query_directive(key, query);
}
} // namespace uri
} // namespace network
} // namespace boost
#endif // __BOOST_NETWORK_URI_DIRECTIVES_QUERY_INC__