void testElement(XmlDocument& doc) { std::string testTag = "child1"; title("testing element(" + enQuote(testTag) + ")"); std::vector<sPtr> found = doc.element(testTag).select(); if (found.size() > 0) std::cout << "\n found " << found[0]->tag(); else std::cout << "\n couldn't find " + enQuote(testTag); std::cout << "\n"; testTag = "foobar"; title("testing element(" + enQuote(testTag) + ")"); found = doc.element(testTag).select(); if (found.size() > 0) std::cout << "\n found " << found[0]->tag(); else std::cout << "\n couldn't find " + enQuote(testTag); std::cout << "\n"; }
void testElementDescendents(XmlDocument& doc) { std::string testTag = "child1"; title("testing doc.element(" + testTag + ").descendents()"); std::vector<sPtr> found = doc.element(testTag).descendents().select(); if (found.size() > 0) { for (auto pElem : found) { if (pElem->tag() != "") std::cout << "\n found: " << pElem->tag(); else std::cout << "\n found: " << pElem->value(); } } else std::cout << "\n couldn't find descendent elements"; std::cout << "\n"; }
// -------------------- This Function sends the Dependent files to the client-------------------- void Server::sendFileDependencies(HttpMessage msg, std::string path, Socket & socket) { std::string cPort = msg.findValue("From-Port"); int ClientPort = Converter<int>::toValue(cPort); std::string requestedFile = msg.findValue("file"); Sender send; std::vector<std::string> depFile = FileSystem::Directory::getFiles(path, "*.xml"); std::string src = path + depFile[0]; XmlParser parser(src); XmlDocument* pDoc = parser.buildDocument(); std::vector<std::string> depFileNames; std::vector<sPtr> found = pDoc->element("Dependencies").descendents().select(); // Read the dependencies xml if (found.size() > 0) { for (auto pElem : found) { if (pElem->value() != "dep") depFileNames.push_back(pElem->value()); } } for (std::string f : depFileNames) { // Sending each of the dependency file if exists std::string fileToSend = Utilities::StringHelper::trim(f); std::vector<std::string> dirs = FileSystem::Directory::getDirectories("./ServerDrive/", fileToSend +"*"); if (dirs.size() == 0) Show::write("No such file present in the repository => " + fileToSend + "\n"); if (dirs.size() > 0) { std::string latest_dir = getLatestDir(dirs, fileToSend); std::vector<std::string> files = FileSystem::Directory::getFiles("./ServerDrive/" + latest_dir, fileToSend + "*"); Show::write("\nSending Dependency File of "+ requestedFile+ " => " + files[0] + " to client @: "+cPort); send.sendFile("./ServerDrive/" + latest_dir + "/" + files[0], socket , getServerPort(), ClientPort); path = "./ServerDrive/" + latest_dir + "/"; } } msg = makeMessage(1, "quit", "toAddr:localhost:"+cPort); send.sendMessage(msg, socket); }