#ifndef __SICCCOBJECT_H_ #define __SICCCOBJECT_H_ #include #include #include #include #include #include class Sicccobject { public: Sicccobject() {} // just for test cases Sicccobject( const std::string& file, const std::string& ftype, const std::string& fpath, const size_t sz) : filename(file), filetype(ftype), size(sz) { upload_date = std::chrono::system_clock::now(); } Sicccobject( const char *const file, const char *const ftype, const char *const fpath, const size_t sz) : filename(file), filetype(ftype), size(sz) { upload_date = std::chrono::system_clock::now(); } Sicccobject(const std::string& file, const std::string& ftype, const std::string& fpath, const size_t sz, const std::chrono::time_point& date) : filename(file), filetype(ftype), size(sz), upload_date(date) { } Sicccobject(const json_t*); Sicccobject(const Sicccobject&); ~Sicccobject() {} Sicccobject& operator = (const Sicccobject&); std::string get_filename() const { return filename; } std::string get_filetype() const { return filetype; } size_t get_size() const { return size; } std::chrono::time_point get_uploadtime() const { return upload_date; } std::string get_pretty_sized() const { std::ostringstream strm( std::ios_base::ate); int i = 0; size_t mysize = size; const char* units[] = {"B", "kB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"}; while (mysize > 1024) { mysize /= 1024; i++; } assert(i < 9); strm << mysize << units[i]; return strm.str(); } private: std::string filename; std::string filetype; size_t size; std::chrono::time_point upload_date; }; std::ostream& operator << (std::ostream&, const Sicccobject&); #endif /* __SICCCOBJECT_H_ */