diff --git a/src/slic3r/GUI/DeviceManager.cpp b/src/slic3r/GUI/DeviceManager.cpp index 6bd6ef1e9..2997fc0d3 100644 --- a/src/slic3r/GUI/DeviceManager.cpp +++ b/src/slic3r/GUI/DeviceManager.cpp @@ -3704,7 +3704,7 @@ int MachineObject::parse_json(std::string payload, bool key_field_only) } if (jj.contains("job_id")) { is_support_wait_sending_finish = true; - this->job_id_ = jj["job_id"].get(); + this->job_id_ = JsonValParser::get_longlong_val(jj["job_id"]); } else { is_support_wait_sending_finish = false; @@ -4710,7 +4710,7 @@ int MachineObject::parse_json(std::string payload, bool key_field_only) BOOST_LOG_TRIVIAL(info) << "parse_json, ack of project_prepare = " << j.dump(4); if (m_agent) { if (jj.contains("job_id")) { - this->job_id_ = jj["job_id"].get(); + this->job_id_ = JsonValParser::get_longlong_val(jj["job_id"]); } } @@ -7433,4 +7433,28 @@ void change_the_opacity(wxColour& colour) colour = wxColour(colour.Red(), colour.Green(), colour.Blue(), 254); } } + + +//************************************ +// Method: get_longlong_val +// FullName: Slic3r::JsonValParser::get_longlong_val +// Access: public static +// Returns: std::string +// Qualifier: +// Parameter: const json & j +//************************************ +std::string JsonValParser::get_longlong_val(const json& j) +{ + if (j.is_number()) + { + return std::to_string(j.get()); + } + else if (j.is_string()) + { + return j.get(); + } + + return string(); +} + } // namespace Slic3r diff --git a/src/slic3r/GUI/DeviceManager.hpp b/src/slic3r/GUI/DeviceManager.hpp index 8b8216c7c..3ac8c4436 100644 --- a/src/slic3r/GUI/DeviceManager.hpp +++ b/src/slic3r/GUI/DeviceManager.hpp @@ -1367,6 +1367,14 @@ public: void change_the_opacity(wxColour& colour); wxString generate_nozzle_id(NozzleVolumeType nozzle_type); -} // namespace Slic3r + + +class JsonValParser +{ +public: + static std::string get_longlong_val(const json& j); +}; + +}; // namespace Slic3r #endif // slic3r_DeviceManager_hpp_ diff --git a/src/slic3r/GUI/HMS.cpp b/src/slic3r/GUI/HMS.cpp index 32f4fbc51..6983cd2c0 100644 --- a/src/slic3r/GUI/HMS.cpp +++ b/src/slic3r/GUI/HMS.cpp @@ -34,7 +34,7 @@ int get_hms_info_version(std::string& version) try { json j = json::parse(body); if (j.contains("ver")) { - version = std::to_string(j["ver"].get()); + version = JsonValParser::get_longlong_val(j["ver"]); } } catch (...) { ; @@ -87,7 +87,7 @@ int HMSQuery::download_hms_related(const std::string& hms_type, const std::strin return; } - const std::string& remote_ver = std::to_string(j["ver"].get()); + const std::string& remote_ver = JsonValParser::get_longlong_val(j["ver"]); if (remote_ver <= local_version) { return; @@ -135,12 +135,12 @@ _copy_dir(const fs::path& from_dir, const fs::path& to_dir) /* copy and override { return; } - + if (!fs::exists(to_dir)) - { + { fs::create_directory(to_dir); } - + for (const auto &entry : fs::directory_iterator(from_dir)) { const fs::path &source_path = entry.path(); @@ -148,7 +148,7 @@ _copy_dir(const fs::path& from_dir, const fs::path& to_dir) /* copy and override const fs::path &dest_path = to_dir / relative_path; if (fs::is_regular_file(source_path)) - { + { if (fs::exists(dest_path)) { fs::remove(dest_path); @@ -164,7 +164,7 @@ _copy_dir(const fs::path& from_dir, const fs::path& to_dir) /* copy and override } catch (...) { - + } } @@ -209,8 +209,8 @@ int HMSQuery::load_from_local(const std::string& hms_type, const std::string& de if ((*load_json).contains("ver")) { - load_version = (*load_json)["ver"].get(); - } + load_version = JsonValParser::get_longlong_val((*load_json)["ver"]); + } else { BOOST_LOG_TRIVIAL(warning) << "HMS: load_from_local, no version info"; @@ -221,7 +221,7 @@ int HMSQuery::load_from_local(const std::string& hms_type, const std::string& de json_file >> (*load_json); if ((*load_json).contains("version")) { - load_version = (*load_json)["version"].get(); + load_version = JsonValParser::get_longlong_val((*load_json)["version"]); } else { @@ -534,7 +534,7 @@ wxImage HMSQuery::query_image_from_local(const wxString& image_name) { const fs::path& local_img_dir = fs::path(Slic3r::data_dir()) / HMS_LOCAL_IMG_PATH; if (fs::exists(local_img_dir)) - { + { for (const auto &entry : fs::directory_iterator(local_img_dir)) { const fs::path& image_path = entry.path(); diff --git a/src/slic3r/GUI/Jobs/PrintJob.cpp b/src/slic3r/GUI/Jobs/PrintJob.cpp index 73aac02aa..3d21aa65f 100644 --- a/src/slic3r/GUI/Jobs/PrintJob.cpp +++ b/src/slic3r/GUI/Jobs/PrintJob.cpp @@ -484,7 +484,7 @@ void PrintJob::process() try { job_info_j.parse(job_info); if (job_info_j.contains("job_id")) { - curr_job_id = job_info_j["job_id"].get(); + curr_job_id = JsonValParser::get_longlong_val(job_info_j["job_id"]); } BOOST_LOG_TRIVIAL(trace) << "print_job: curr_obj_id=" << curr_job_id;