소스 검색

implemented head command

marius.rescheleit 5 년 전
부모
커밋
febb6f8c1a
3개의 변경된 파일47개의 추가작업 그리고 1개의 파일을 삭제
  1. 9 0
      daemon/include/FileManager.h
  2. 24 0
      daemon/src/FileManager.cpp
  3. 14 1
      daemon/src/JsonCommander.cpp

+ 9 - 0
daemon/include/FileManager.h

@@ -118,6 +118,15 @@ public:
    * Reads data from get file
    */
   virtual std::vector<char> readGet();
+
+  /**
+   * Get the first n bytes of a file as string.
+   * @param filename name of the files
+   * @param numOfBytes the number of bytes you want
+   *
+   * @return
+   */
+   std::vector<char> getBytesFromFile(std::string filename, int numOfBytes);
 };
 
 #endif

+ 24 - 0
daemon/src/FileManager.cpp

@@ -83,3 +83,27 @@ std::vector<char> FileManager::readGet() {
 
   return data;
 }
+
+std::vector<char> FileManager::getBytesFromFile(std::string filename, int numOfBytes) {
+  std::ifstream file;
+  std::string fname = this->fileDirectory;
+  fname.append(filename);
+  file.open(fname, std::ios::ate | std::ios::binary);
+
+  std::vector<char> bytes;
+
+  if (!file.is_open()) {
+    return bytes;
+  }
+
+  char buff[8];
+  file.seekg(0, std::ios::beg);
+  for (int i = 0; i < numOfBytes; i++) {
+    file.read(buff, 8);
+    bytes.insert(bytes.begin(), std::begin(buff), std::end(buff));
+  }
+
+  file.close();
+
+  return bytes;
+}

+ 14 - 1
daemon/src/JsonCommander.cpp

@@ -320,7 +320,20 @@ JsonCommander::Response JsonCommander::executeHead(const Json::Value &message) {
     response.json["accept"] = false;
     response.json["file"] = "";
     response.json["data"] = "";
-    response.json["error"] = "incorrect heaed command request";
+    response.json["error"] = "incorrect head command request";
+  } else {
+    std::vector<char> res = fileManager.getBytesFromFile(message["file"].asString(), 4);
+    if (res.size() == 0) {
+      response.json["accept"] = false;
+      response.json["file"] = "";
+      response.json["data"] = "";
+      response.json["error"] = "error while reading from file";
+    } else {
+      response.json["accept"] = true;
+      response.json["file"] = message["file"];
+      response.json["data"] = base64::encodeVector(res);
+      response.json["error"] = "";
+    }
   }
 
   return response;