Selaa lähdekoodia

added listFiles function to FileManager

marius.rescheleit 4 vuotta sitten
vanhempi
commit
7d8b34db03

+ 7 - 0
daemon/include/FileManager.h

@@ -3,6 +3,8 @@
 
 #include <fstream>
 #include <vector>
+#include <boost/filesystem.hpp>
+#include <boost/range/iterator_range.hpp>
 
 /**
  * @class FileManager
@@ -118,6 +120,11 @@ public:
    * Reads data from get file
    */
   virtual std::vector<char> readGet();
+
+  /**
+   * @return vector of all files in the current directory
+   */
+   std::vector<std::string> listFiles();
 };
 
 #endif

+ 1 - 1
daemon/src/CMakeLists.txt

@@ -14,7 +14,7 @@ pkg_check_modules(JSONCPP REQUIRED jsoncpp)
 
 
 find_package(Threads REQUIRED)
-find_package(Boost 1.67 REQUIRED COMPONENTS system)
+find_package(Boost 1.67 REQUIRED COMPONENTS system filesystem)
 # find_package(libtins 4.2 REQUIRED)
 
 include_directories(${Boost_INCLUDE_DIR} ${JSONCPP_INCLUDEDIR})

+ 13 - 0
daemon/src/FileManager.cpp

@@ -79,3 +79,16 @@ std::vector<char> FileManager::readGet() {
 
   return data;
 }
+
+std::vector<std::string> FileManager::listFiles() {
+  std::vector<std::string> res;
+  boost::filesystem::path p{"."};
+  boost::filesystem::file_status s = status(p);
+  if(!is_directory(s)) {
+    return res;
+  }
+  for(auto& entry : boost::make_iterator_range(boost::filesystem::directory_iterator(p), {})) {
+    res.push_back(entry.path().string());
+  }
+  return res;
+}

+ 8 - 6
daemon/src/JsonCommander.cpp

@@ -68,14 +68,16 @@ JsonCommander::Response JsonCommander::executeList(const Json::Value &message) {
   response.action = send;
   response.json["command"] = "list";
 
-  // TODO return real file list
-
   Json::Value array;
-  array.append("some");
-  array.append("important");
-  array.append("data");
+
+  std::vector<std::string> v = fileManager.listFiles();
+  for(int i=0; i<v.size(); i++) {
+    array.append(v.at(i));
+  }
+
   response.json["names"] = array;
-  response.json["remaining"] = 0;
+  response.json["error"] = "";
+  response.json["items"] = (int) v.size();
 
   return response;
 }