// // Created by HW on 2023/07/27. // #ifndef OFFICEASSISTANT_NETIO_H #define OFFICEASSISTANT_NETIO_H #include #include #include #include #include #include #include #include typedef struct { QString img; QString img_cover; QString title; QString func; QString url; } Menu; typedef struct { bool succeed; struct { QString logo_url; QString device_id; QString dev_id; QString token; QString backgroud_color; QString title_color; QString title_cover_color; }basic; QList menus; }ConfigResponse; class RequestBodyBase:public QObject{ Q_OBJECT; public: RequestBodyBase(); virtual void sendRequest(); protected: QString product; QString parter_id; QString os; QString os_version; QString device_id; QString request_id; QString version; QString release; QString sign; QJsonDocument qJsonDocument; QNetworkReply *reply; QEventLoop eventLoop; QTimer *timer; protected slots: void cancelDownload(); }; class ConfigRequest:public RequestBodyBase{ public: ConfigRequest():RequestBodyBase(){} void sendRequest(ConfigResponse * configResponse); }; class OpRequest:public RequestBodyBase{ public: OpRequest(QString Op,QString OpValue):RequestBodyBase(),op(Op),op_value(OpValue){ QJsonObject obj_root=qJsonDocument.object(); QJsonValue value=op; obj_root.insert("op",op); value=op_value; obj_root.insert("op_value",op_value); qJsonDocument.setObject(obj_root); } QString getOpValue(){ return op_value; } QString getOp(){ return op; } void setOpValue(QString op_value){ this->op_value=op_value; } void setOp(QString op){ this->op=op; } void sendRequest(); protected: QString op; QString op_value; }; class DeviceRequest:RequestBodyBase{ DeviceRequest(); }; class OpenMulitiWechat:public RequestBodyBase{ public: OpenMulitiWechat(): RequestBodyBase(){} }; inline QString getMachineGUID() { HKEY hKey; RegOpenKeyEx(HKEY_LOCAL_MACHINE, L"SOFTWARE\\Microsoft\\Cryptography", 0, KEY_READ | KEY_WOW64_64KEY, &hKey); DWORD dwType1 = REG_SZ; DWORD dwLen = MAX_PATH; WCHAR buf[100]; RegQueryValueExA(hKey, "MachineGuid", 0, &dwType1, (LPBYTE)buf, &dwLen); QString guid = QString::fromWCharArray(buf); return guid; } class SoftwareRequest :public RequestBodyBase { }; #endif //OFFICEASSISTANT_NETIO_H