Files
QIDI_Q1_Pro/src/MoonrakerAPI.cpp

477 lines
11 KiB
C++
Raw Permalink Normal View History

2024-03-19 15:48:17 +08:00
#include "../include/MoonrakerAPI.h"
#include "../include/MakerbaseCommand.h"
#include "nlohmann/json.hpp"
extern int response_type_id;
nlohmann::json string2json(std::string response) {
return nlohmann::json::parse(response);
}
inline std::string create_json_without_params(int cmd) {
response_type_id = cmd;
nlohmann::json api;
api["jsonrpc"] = "2.0";
api["method"] = method2command[cmd];
api["id"] = method2id[cmd];
return api.dump();
}
inline std::string create_json(int cmd, nlohmann::json params) {
response_type_id = cmd;
nlohmann::json api;
api["jsonrpc"] = "2.0";
api["method"] = method2command[cmd];
api["params"] = params;
api["id"] = method2id[cmd];
return api.dump();
}
std::string json_get_klippy_host_information() {
return create_json_without_params(0x03);
}
std::string json_emergency_stop() {
// return create_json(0x04, no_params, 4564);
return create_json_without_params(0x04);
}
std::string json_host_restart() {
return create_json_without_params(0x05);
}
std::string json_firmware_restart() {
return create_json_without_params(0x06);
}
std::string json_list_available_printer_objects() {
return create_json_without_params(0x11);
}
std::string json_query_printer_object_status(nlohmann::json objects) {
nlohmann::json params;
params["objects"] = objects;
return create_json(0x12, params);
}
std::string json_subscribe_to_printer_object_status(nlohmann::json objects) {
nlohmann::json params;
params["objects"] = objects;
return create_json(0x13, params);
}
std::string json_query_endstops() {
return create_json_without_params(0x14);
}
std::string json_query_server_info() {
return create_json_without_params(0x15);
}
std::string json_get_server_configuration() {
return create_json_without_params(0x16);
}
std::string json_request_cached_temperature_data() {
return create_json_without_params(0x17);
}
std::string json_request_cached_gcode_responses(int count) {
nlohmann::json params;
params["count"] = count;
return create_json(0x18, params);
}
std::string json_restart_server() {
return create_json_without_params(0x19);
}
/* GCode APIs */
std::string json_run_a_gcode(std::string script) {
nlohmann::json params;
params["script"] = script;
return create_json(0x21, params);
}
std::string json_get_gcode_help() {
return create_json_without_params(0x22);
}
/* Print Management */
std::string json_print_a_file(std::string filename) {
nlohmann::json params;
params["filename"] = filename;
return create_json(0x31, params);
}
std::string json_pause_a_print() {
return create_json_without_params(0x32);
}
std::string json_resume_a_print() {
return create_json_without_params(0x33);
}
std::string json_cancel_a_print() {
return create_json_without_params(0x34);
}
/* Machine Commands */
std::string json_get_system_info() {
return create_json_without_params(0x41);
}
std::string json_shutdown_the_operating_system(){
return create_json_without_params(0x42);
}
std::string json_reboot_the_operating_system() {
return create_json_without_params(0x43);
}
std::string json_restart_a_system_service(std::string name) {
nlohmann::json params;
params["service"] = name;
return create_json(0x44, params);
}
std::string json_stop_a_system_service(std::string name) {
nlohmann::json params;
params["service"] = name;
return create_json(0x45, params);
}
std::string json_start_a_system_service(std::string name) {
nlohmann::json params;
params["service"] = name;
return create_json(0x46, params);
}
std::string json_get_moonraker_process_stats() {
return create_json_without_params(0x47);
}
/* File Operations */
std::string json_list_available_files() {
nlohmann::json params;
// params["root"] = root_folder;
// return create_json(0x51, params);
return create_json_without_params(0x51);
}
std::string json_get_gcode_metadata(std::string filename) {
nlohmann::json params;
params["filename"] = filename;
return create_json(0x52, params);
}
std::string json_get_directory_information(bool extended) {
nlohmann::json params;
// params["path"] = path;
params["extended"] = extended;
return create_json(0x53, params);
}
std::string json_create_directory(std::string path) {
nlohmann::json params;
params["path"] = path;
return create_json(0x54, params);
}
std::string json_delete_directory(std::string path, bool force) {
nlohmann::json params;
params["path"] = path;
params["force"] = force;
return create_json(0x55, params);
}
std::string json_move_a_file_or_directory(std::string source, std::string dest) {
nlohmann::json params;
params["source"] = source;
params["dest"] = dest;
return create_json(0x56, params);
}
std::string json_copy_a_file_or_directory(std::string source, std::string dest) {
nlohmann::json params;
params["source"] = source;
params["dest"] = dest;
return create_json(0x57, params);
}
// std::string json_file_download() {
// return "";
// }
// std::string json_file_upload() {
// return "";
// }
std::string json_file_delete(std::string path) {
// path: {root}/{filename}
nlohmann::json params;
params["path"] = path;
return create_json(0x5a, params);
}
// std::string json_download_klippy_log() {
// return "";
// }
// std::string json_download_moonraker_log() {
// return "";
// }
/* Authorization */
// std::string json_login_user() {
// return "";
// }
// std::string json_logout_current_user() {
// return "";
// }
// std::string json_get_current_user() {
// return "";
// }
// std::string json_create_user() {
// return "";
// }
// std::string json_delete_user() {
// return "";
// }
// std::string json_list_available_users() {
// return "";
// }
// std::string json_reset_user_password() {
// return "";
// }
// std::string json_generate_a_oneshot_token() {
// return "";
// }
// std::string json_retrieve_information_about_authorization_endpoints() {
// return "";
// }
/* Database APIs */
std::string json_list_namespaces() {
return create_json_without_params(0x71);
}
std::string json_get_database_item(std::string nsp, std::string key) {
nlohmann::json params;
params["namespace"] = nsp;
params["key"] = key;
return create_json(0x72, params);
}
std::string json_add_database_item(std::string nsp, std::string key, int value) {
nlohmann::json params;
params["namespace"] = nsp;
params["key"] = key;
params["value"] = value;
return create_json(0x73, params);
}
std::string json_delete_database_item(std::string nsp, std::string key) {
nlohmann::json params;
params["namespace"] = nsp;
params["key"] = key;
return create_json(0x74, params);
}
/* Job Queue APIs */
std::string json_retrieve_the_job_queue_status() {
return create_json_without_params(0x81);
}
std::string json_enqueue_a_job(std::vector<std::string> filenames) {
nlohmann::json params;
params["filenames"] = filenames;
return create_json(0x82, params);
}
std::string json_remove_a_job(std::vector<std::string> job_ids) {
nlohmann::json params;
params["job_ids"] = job_ids;
return create_json(0x83, params);
}
std::string json_pause_the_job_queue() {
return create_json_without_params(0x84);
}
std::string json_start_the_job_queue() {
return create_json_without_params(0x85);
}
/* Announcement APIs */
std::string json_list_announcements(bool incluede_dismissed) {
nlohmann::json params;
params["include_dismissed"] = incluede_dismissed;
return create_json(0x86, params);
}
std::string json_update_announcements() {
return create_json_without_params(0x87);
}
std::string json_dismiss_an_announcement(std::string entry_id, int wake_time) {
nlohmann::json params;
params["entry_id"] = entry_id;
params["wake_time"] = wake_time;
return create_json(0x88, params);
}
std::string json_list_announcement_feeds() {
return create_json_without_params(0x89);
}
std::string json_add_an_announcement_feed(std::string name) {
nlohmann::json params;
params["name"] = name;
return create_json(0x8a, params);
}
std::string json_remove_an_announcement_feed(std::string name) {
nlohmann::json params;
params["name"] = name;
return create_json(0x8b, params);
}
/* Webcam APIs */
std::string json_list_webcams() {
return create_json_without_params(0x101);
}
std::string json_get_webcam_information(std::string name) {
nlohmann::json params;
params["name"] = name;
return create_json(0x102, params);
}
std::string json_add_or_update_a_webcam(std::string name) {
nlohmann::json params;
params["name"] = name;
params["snapshot_url"] = "/webcam?action=snapshot";
params["stream_url"] = "/webcam?action=stream";
return create_json(0x103, params);
}
std::string json_delete_a_webcam(std::string name) {
nlohmann::json params;
params["name"] = name;
return create_json(0x104, params);
}
std::string json_test_a_webcam(std::string name) {
nlohmann::json params;
params["name"] = name;
return create_json(0x105, params);
}
/* Update Manager APIs */
std::string json_get_update_status(bool refresh) {
nlohmann::json params;
params["refresh"] = refresh;
return create_json(0x91, params);
}
/* Perform a full update */
std::string json_perform_a_full_update() {
return create_json_without_params(0x90);
}
std::string json_update_moonraker() {
return create_json_without_params(0x92);
}
std::string json_update_klipper() {
return create_json_without_params(0x93);
}
std::string json_update_client(std::string name) {
nlohmann::json params;
params["name"] = name;
return create_json(0x94, params);
}
std::string json_update_system_packages() {
return create_json_without_params(0x95);
}
std::string json_recover_a_corrupt_repo(std::string name, bool hard) {
nlohmann::json params;
params["name"] = name;
params["hard"] = hard;
return create_json(0x96, params);
}
/* Power APIs */
std::string json_get_device_list() {
return create_json_without_params(0xa1);
}
std::string json_get_device_status(std::string device) {
nlohmann::json params;
params["device"] = device;
return create_json(0xa2, params);
}
std::string json_get_device_state(std::string device, std::string action) {
nlohmann::json params;
params["device"] = device;
params["action"] = action;
return create_json(0xa3, params);
}
// std::string json_get_batch_device_status(std::string dev_x[]);
// std::string json_batch_power_on_devices(std::string dev_x[]);
// std::string json_batch_power_off_devices(std::string dev_x[]);
/* WLED APIs */
std::string json_get_strips() {
return create_json_without_params(0xb1);
}
std::string json_get_strip_status() {
nlohmann::json params;
params["lights"];
params["desk"];
return create_json(0xb2, params);
}
std::string json_turn_strip_on() {
nlohmann::json params;
params["lights"];
params["desk"];
return create_json(0xb3, params);
}
std::string json_turn_strip_off() {
nlohmann::json params;
params["lights"];
params["desk"];
return create_json(0xb4, params);
}
std::string json_toggle_strip_on_off_state() {
nlohmann::json params;
params["lights"];
params["desk"];
return create_json(0xb5, params);
}
std::string json_get_job_totals() {
return create_json_without_params(0xd2);
}
std::string json_reset_totals() {
return create_json_without_params(0xd3);
}