/* * libretroshare/src/dht: opendhtstr.cc * * Interface with OpenDHT for RetroShare. * * Copyright 2007-2008 by Robert Fernie. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License Version 2 as published by the Free Software Foundation. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * USA. * * Please report all bugs and problems to "retroshare@lunamutt.com". * */ #include #include #include "opendhtstr.h" #include "b64.h" std::string createHttpHeader(std::string host, uint16_t port, std::string agent, uint32_t length) { std::ostringstream req; req << "POST / HTTP/1.0\r\n"; req << "Host: " << host << ":" << port << "\r\n"; req << "User-Agent: " << agent << "\r\n"; req << "Content-Type: text/xml\r\n"; req << "Content-Length: " << length << "\r\n"; req << "\r\n"; return req.str(); }; std::string createHttpHeaderGET(std::string host, uint16_t port, std::string page, std::string agent, uint32_t length) { std::ostringstream req; req << "GET /" << page << " HTTP/1.0\r\n"; req << "Host: " << host << ":" << port << "\r\n"; req << "User-Agent: " << agent << "\r\n"; //req << "Content-Type: text/xml\r\n"; //req << "Content-Length: " << length << "\r\n"; req << "\r\n"; return req.str(); }; std::string createOpenDHT_put(std::string key, std::string value, uint32_t ttl, std::string client) { std::ostringstream req; req << "" << std::endl; req << "" << std::endl; req << "\tput" << std::endl; req << "\t" << std::endl; req << "\t\t"; req << convertToBase64(key); req << "" << std::endl; req << "\t\t"; req << convertToBase64(value); req << "" << std::endl; req << "\t\t"; req << ttl; req << "" << std::endl; req << "\t\t"; req << client; req << "" << std::endl; req << "\t" << std::endl; req << "" << std::endl; return req.str(); } std::string createOpenDHT_get(std::string key, uint32_t maxresponse, std::string client) { std::ostringstream req; req << "" << std::endl; req << "" << std::endl; req << "\tget" << std::endl; req << "\t" << std::endl; /* key */ req << "\t\t"; req << convertToBase64(key); req << "" << std::endl; /* max response */ req << "\t\t"; req << maxresponse; req << "" << std::endl; /* placemark (NULL) */ req << "\t\t"; req << "" << std::endl; req << "\t\t"; req << client; req << "" << std::endl; req << "\t" << std::endl; req << "" << std::endl; return req.str(); }