fix curl
@ -1,79 +1,29 @@
|
|||||||
# ninja log v6
|
# ninja log v6
|
||||||
18 269 7621645896591194 F:/SourceCode/ctai/build/ctai_autogen/mocs_compilation.cpp da3870ebc94b983e
|
25 226 7621775545718640 ctai_autogen/mocs_compilation.cpp da3870ebc94b983e
|
||||||
17912 29809 7621646075529326 F:/SourceCode/ctai/release/ctai.exe b22720a33d64aaa9
|
3831 14140 7621766760724707 CMakeFiles/ctai.dir/src/ctai.cpp.obj c7f0e07034d2e115
|
||||||
4070 13239 7620828272176219 CMakeFiles/ctai.dir/src/sui.cpp.obj e1630d781a04e855
|
4070 13239 7620828272176219 CMakeFiles/ctai.dir/src/sui.cpp.obj e1630d781a04e855
|
||||||
3857 4054 7620828271905766 qrc_res.cpp 9794859fafc6825
|
16477 27054 7621775710223975 F:/SourceCode/ctai/release/ctai.exe b22720a33d64aaa9
|
||||||
3707 13634 7621643165268059 CMakeFiles/ctai.dir/src/ctai_tabwidget.cpp.obj 6fa8a641137702e0
|
25 226 7621775545718640 F:/SourceCode/ctai/build/ctai_autogen/mocs_compilation.cpp da3870ebc94b983e
|
||||||
4080 8720 7620828272270625 CMakeFiles/ctai.dir/qrc_res.cpp.obj 9f74f1f5e59b5b50
|
256 715 7621662369248829 qrc_res.cpp 9794859fafc6825
|
||||||
3560 6938 7621113173344145 CMakeFiles/ctai.dir/src/ctai_switch_control.cpp.obj ddca150b42c8a71b
|
|
||||||
270 17912 7621645899099118 CMakeFiles/ctai.dir/src/ctai_curl.cpp.obj b2496aab435c15c7
|
|
||||||
18 269 7621645896591194 ctai_autogen/timestamp da3870ebc94b983e
|
|
||||||
18 269 7621645896591194 ctai_autogen/mocs_compilation.cpp da3870ebc94b983e
|
|
||||||
3701 14345 7621643165213401 CMakeFiles/ctai.dir/src/ctai.cpp.obj c7f0e07034d2e115
|
|
||||||
18 269 7621645896591194 F:/SourceCode/ctai/build/ctai_autogen/timestamp da3870ebc94b983e
|
|
||||||
3857 4054 7620828271905766 F:/SourceCode/ctai/build/qrc_res.cpp 9794859fafc6825
|
|
||||||
4075 7860 7620828272226167 CMakeFiles/ctai.dir/src/sui_sys_style.cpp.obj 3bdd07348bd84970
|
|
||||||
3705 14181 7621643165248358 CMakeFiles/ctai.dir/src/ctai_session_widget.cpp.obj 578ff58396e1bb80
|
|
||||||
3710 14540 7621643165298228 CMakeFiles/ctai.dir/src/main.cpp.obj 77280178abb968fc
|
|
||||||
4072 16884 7620828272196197 CMakeFiles/ctai.dir/src/sui_base_ex.cpp.obj 476c94d1f2c8cfea
|
4072 16884 7620828272196197 CMakeFiles/ctai.dir/src/sui_base_ex.cpp.obj 476c94d1f2c8cfea
|
||||||
|
3840 14031 7621766760809715 CMakeFiles/ctai.dir/src/main.cpp.obj 77280178abb968fc
|
||||||
4083 4223 7620828272305402 CMakeFiles/ctai.dir/sui.rc.obj e30df163c9cbe567
|
4083 4223 7620828272305402 CMakeFiles/ctai.dir/sui.rc.obj e30df163c9cbe567
|
||||||
3699 15187 7621643165180959 CMakeFiles/ctai.dir/ctai_autogen/mocs_compilation.cpp.obj 696927afe9114740
|
25 226 7621775545718640 F:/SourceCode/ctai/build/ctai_autogen/timestamp da3870ebc94b983e
|
||||||
|
25 226 7621775545718640 ctai_autogen/timestamp da3870ebc94b983e
|
||||||
|
227 16477 7621775547726025 CMakeFiles/ctai.dir/src/ctai_curl.cpp.obj b2496aab435c15c7
|
||||||
|
4075 7860 7620828272226167 CMakeFiles/ctai.dir/src/sui_sys_style.cpp.obj 3bdd07348bd84970
|
||||||
|
256 715 7621662369248829 F:/SourceCode/ctai/build/qrc_res.cpp 9794859fafc6825
|
||||||
|
3835 13799 7621766760764673 CMakeFiles/ctai.dir/src/ctai_session_widget.cpp.obj 578ff58396e1bb80
|
||||||
|
3838 13416 7621766760789738 CMakeFiles/ctai.dir/src/ctai_tabwidget.cpp.obj 6fa8a641137702e0
|
||||||
|
717 3477 7621662369402559 CMakeFiles/ctai.dir/qrc_res.cpp.obj 9f74f1f5e59b5b50
|
||||||
|
3560 6938 7621113173344145 CMakeFiles/ctai.dir/src/ctai_switch_control.cpp.obj ddca150b42c8a71b
|
||||||
|
4077 13615 7620828272253227 CMakeFiles/ctai.dir/src/sui_title.cpp.obj e026b4b712cf9da4
|
||||||
|
3829 14642 7621766760704728 CMakeFiles/ctai.dir/ctai_autogen/mocs_compilation.cpp.obj 696927afe9114740
|
||||||
4058 8712 7620828272053173 CMakeFiles/ctai.dir/src/ctai_cmd.cpp.obj 80d6964d23a3e9c5
|
4058 8712 7620828272053173 CMakeFiles/ctai.dir/src/ctai_cmd.cpp.obj 80d6964d23a3e9c5
|
||||||
4063 8329 7620828272105475 CMakeFiles/ctai.dir/src/ctai_tabbar.cpp.obj 41b68d110b3c0daf
|
4063 8329 7620828272105475 CMakeFiles/ctai.dir/src/ctai_tabbar.cpp.obj 41b68d110b3c0daf
|
||||||
4077 13615 7620828272253227 CMakeFiles/ctai.dir/src/sui_title.cpp.obj e026b4b712cf9da4
|
31 286 7621777320575844 ctai_autogen/timestamp da3870ebc94b983e
|
||||||
22 3910 7621650333612904 ctai_autogen/timestamp da3870ebc94b983e
|
31 286 7621777320575844 ctai_autogen/mocs_compilation.cpp da3870ebc94b983e
|
||||||
22 3910 7621650333612904 ctai_autogen/mocs_compilation.cpp da3870ebc94b983e
|
31 286 7621777320575844 F:/SourceCode/ctai/build/ctai_autogen/timestamp da3870ebc94b983e
|
||||||
22 3910 7621650333612904 F:/SourceCode/ctai/build/ctai_autogen/timestamp da3870ebc94b983e
|
31 286 7621777320575844 F:/SourceCode/ctai/build/ctai_autogen/mocs_compilation.cpp da3870ebc94b983e
|
||||||
22 3910 7621650333612904 F:/SourceCode/ctai/build/ctai_autogen/mocs_compilation.cpp da3870ebc94b983e
|
287 15537 7621777323141011 CMakeFiles/ctai.dir/src/ctai_curl.cpp.obj b2496aab435c15c7
|
||||||
3918 13850 7621650334749376 CMakeFiles/ctai.dir/src/ctai_tabwidget.cpp.obj 6fa8a641137702e0
|
15537 25734 7621777475639941 F:/SourceCode/ctai/release/ctai.exe b22720a33d64aaa9
|
||||||
3916 14284 7621650334731983 CMakeFiles/ctai.dir/src/ctai_session_widget.cpp.obj 578ff58396e1bb80
|
|
||||||
3920 14523 7621650334766767 CMakeFiles/ctai.dir/src/main.cpp.obj 77280178abb968fc
|
|
||||||
3912 14606 7621650334681956 CMakeFiles/ctai.dir/src/ctai.cpp.obj c7f0e07034d2e115
|
|
||||||
3910 15188 7621650334664564 CMakeFiles/ctai.dir/ctai_autogen/mocs_compilation.cpp.obj 696927afe9114740
|
|
||||||
3914 22527 7621650334699350 CMakeFiles/ctai.dir/src/ctai_curl.cpp.obj b2496aab435c15c7
|
|
||||||
22527 37074 7621650520836996 F:/SourceCode/ctai/release/ctai.exe b22720a33d64aaa9
|
|
||||||
17 246 7621651380285822 ctai_autogen/timestamp da3870ebc94b983e
|
|
||||||
17 246 7621651380285822 ctai_autogen/mocs_compilation.cpp da3870ebc94b983e
|
|
||||||
17 246 7621651380285822 F:/SourceCode/ctai/build/ctai_autogen/timestamp da3870ebc94b983e
|
|
||||||
17 246 7621651380285822 F:/SourceCode/ctai/build/ctai_autogen/mocs_compilation.cpp da3870ebc94b983e
|
|
||||||
247 16317 7621651382575746 CMakeFiles/ctai.dir/src/ctai_curl.cpp.obj b2496aab435c15c7
|
|
||||||
16317 27314 7621651543281686 F:/SourceCode/ctai/release/ctai.exe b22720a33d64aaa9
|
|
||||||
17 250 7621651864764006 ctai_autogen/timestamp da3870ebc94b983e
|
|
||||||
17 250 7621651864764006 ctai_autogen/mocs_compilation.cpp da3870ebc94b983e
|
|
||||||
17 250 7621651864764006 F:/SourceCode/ctai/build/ctai_autogen/timestamp da3870ebc94b983e
|
|
||||||
17 250 7621651864764006 F:/SourceCode/ctai/build/ctai_autogen/mocs_compilation.cpp da3870ebc94b983e
|
|
||||||
251 16974 7621651867100074 CMakeFiles/ctai.dir/src/ctai_curl.cpp.obj b2496aab435c15c7
|
|
||||||
16975 28772 7621652034347252 F:/SourceCode/ctai/release/ctai.exe b22720a33d64aaa9
|
|
||||||
17 268 7621652186939700 ctai_autogen/timestamp da3870ebc94b983e
|
|
||||||
17 268 7621652186939700 ctai_autogen/mocs_compilation.cpp da3870ebc94b983e
|
|
||||||
17 268 7621652186939700 F:/SourceCode/ctai/build/ctai_autogen/timestamp da3870ebc94b983e
|
|
||||||
17 268 7621652186939700 F:/SourceCode/ctai/build/ctai_autogen/mocs_compilation.cpp da3870ebc94b983e
|
|
||||||
16 231 7621652577848968 ctai_autogen/timestamp da3870ebc94b983e
|
|
||||||
16 231 7621652577848968 ctai_autogen/mocs_compilation.cpp da3870ebc94b983e
|
|
||||||
16 231 7621652577848968 F:/SourceCode/ctai/build/ctai_autogen/timestamp da3870ebc94b983e
|
|
||||||
16 231 7621652577848968 F:/SourceCode/ctai/build/ctai_autogen/mocs_compilation.cpp da3870ebc94b983e
|
|
||||||
232 16857 7621652579997141 CMakeFiles/ctai.dir/src/ctai_curl.cpp.obj b2496aab435c15c7
|
|
||||||
16858 29066 7621652746267812 F:/SourceCode/ctai/release/ctai.exe b22720a33d64aaa9
|
|
||||||
17 4054 7621653801163666 ctai_autogen/timestamp da3870ebc94b983e
|
|
||||||
17 4054 7621653801163666 ctai_autogen/mocs_compilation.cpp da3870ebc94b983e
|
|
||||||
17 4054 7621653801163666 F:/SourceCode/ctai/build/ctai_autogen/timestamp da3870ebc94b983e
|
|
||||||
17 4054 7621653801163666 F:/SourceCode/ctai/build/ctai_autogen/mocs_compilation.cpp da3870ebc94b983e
|
|
||||||
4062 14196 7621653802323893 CMakeFiles/ctai.dir/src/ctai_tabwidget.cpp.obj 6fa8a641137702e0
|
|
||||||
4061 14549 7621653802313691 CMakeFiles/ctai.dir/src/ctai_session_widget.cpp.obj 578ff58396e1bb80
|
|
||||||
4057 14885 7621653802268871 CMakeFiles/ctai.dir/src/ctai.cpp.obj c7f0e07034d2e115
|
|
||||||
4064 14927 7621653802341325 CMakeFiles/ctai.dir/src/main.cpp.obj 77280178abb968fc
|
|
||||||
4055 15492 7621653802251470 CMakeFiles/ctai.dir/ctai_autogen/mocs_compilation.cpp.obj 696927afe9114740
|
|
||||||
4059 23111 7621653802286262 CMakeFiles/ctai.dir/src/ctai_curl.cpp.obj b2496aab435c15c7
|
|
||||||
23112 33632 7621653992815378 F:/SourceCode/ctai/release/ctai.exe b22720a33d64aaa9
|
|
||||||
16 258 7621654925130662 ctai_autogen/timestamp da3870ebc94b983e
|
|
||||||
16 258 7621654925130662 ctai_autogen/mocs_compilation.cpp da3870ebc94b983e
|
|
||||||
16 258 7621654925130662 F:/SourceCode/ctai/build/ctai_autogen/timestamp da3870ebc94b983e
|
|
||||||
16 258 7621654925130662 F:/SourceCode/ctai/build/ctai_autogen/mocs_compilation.cpp da3870ebc94b983e
|
|
||||||
259 8971 7621654927559068 CMakeFiles/ctai.dir/src/ctai_session_widget.cpp.obj 578ff58396e1bb80
|
|
||||||
8971 19412 7621655014698186 F:/SourceCode/ctai/release/ctai.exe b22720a33d64aaa9
|
|
||||||
23 286 7621655252953030 ctai_autogen/timestamp da3870ebc94b983e
|
|
||||||
23 286 7621655252953030 ctai_autogen/mocs_compilation.cpp da3870ebc94b983e
|
|
||||||
23 286 7621655252953030 F:/SourceCode/ctai/build/ctai_autogen/timestamp da3870ebc94b983e
|
|
||||||
23 286 7621655252953030 F:/SourceCode/ctai/build/ctai_autogen/mocs_compilation.cpp da3870ebc94b983e
|
|
||||||
287 8389 7621655255599989 CMakeFiles/ctai.dir/src/ctai_session_widget.cpp.obj 578ff58396e1bb80
|
|
||||||
16 11189 7621655396214908 F:/SourceCode/ctai/release/ctai.exe b22720a33d64aaa9
|
|
||||||
|
@ -38,7 +38,7 @@ constexpr auto qt_meta_stringdata_CLASSctai_curlENDCLASS = QtMocHelpers::stringD
|
|||||||
"ctai_curl",
|
"ctai_curl",
|
||||||
"send_post_out_data",
|
"send_post_out_data",
|
||||||
"",
|
"",
|
||||||
"send_data",
|
"model_data",
|
||||||
"out_data"
|
"out_data"
|
||||||
);
|
);
|
||||||
#else // !QT_MOC_HAS_STRINGDATA
|
#else // !QT_MOC_HAS_STRINGDATA
|
||||||
@ -79,7 +79,7 @@ Q_CONSTINIT const QMetaObject ctai_curl::staticMetaObject = { {
|
|||||||
QtPrivate::TypeAndForceComplete<ctai_curl, std::true_type>,
|
QtPrivate::TypeAndForceComplete<ctai_curl, std::true_type>,
|
||||||
// method 'send_post_out_data'
|
// method 'send_post_out_data'
|
||||||
QtPrivate::TypeAndForceComplete<void, std::false_type>,
|
QtPrivate::TypeAndForceComplete<void, std::false_type>,
|
||||||
QtPrivate::TypeAndForceComplete<send_data, std::false_type>
|
QtPrivate::TypeAndForceComplete<model_data, std::false_type>
|
||||||
>,
|
>,
|
||||||
nullptr
|
nullptr
|
||||||
} };
|
} };
|
||||||
@ -90,13 +90,13 @@ void ctai_curl::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, v
|
|||||||
auto *_t = static_cast<ctai_curl *>(_o);
|
auto *_t = static_cast<ctai_curl *>(_o);
|
||||||
(void)_t;
|
(void)_t;
|
||||||
switch (_id) {
|
switch (_id) {
|
||||||
case 0: _t->send_post_out_data((*reinterpret_cast< std::add_pointer_t<send_data>>(_a[1]))); break;
|
case 0: _t->send_post_out_data((*reinterpret_cast< std::add_pointer_t<model_data>>(_a[1]))); break;
|
||||||
default: ;
|
default: ;
|
||||||
}
|
}
|
||||||
} else if (_c == QMetaObject::IndexOfMethod) {
|
} else if (_c == QMetaObject::IndexOfMethod) {
|
||||||
int *result = reinterpret_cast<int *>(_a[0]);
|
int *result = reinterpret_cast<int *>(_a[0]);
|
||||||
{
|
{
|
||||||
using _t = void (ctai_curl::*)(send_data );
|
using _t = void (ctai_curl::*)(model_data );
|
||||||
if (_t _q_method = &ctai_curl::send_post_out_data; *reinterpret_cast<_t *>(_a[1]) == _q_method) {
|
if (_t _q_method = &ctai_curl::send_post_out_data; *reinterpret_cast<_t *>(_a[1]) == _q_method) {
|
||||||
*result = 0;
|
*result = 0;
|
||||||
return;
|
return;
|
||||||
@ -136,7 +136,7 @@ int ctai_curl::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// SIGNAL 0
|
// SIGNAL 0
|
||||||
void ctai_curl::send_post_out_data(send_data _t1)
|
void ctai_curl::send_post_out_data(model_data _t1)
|
||||||
{
|
{
|
||||||
void *_a[] = { nullptr, const_cast<void*>(reinterpret_cast<const void*>(std::addressof(_t1))) };
|
void *_a[] = { nullptr, const_cast<void*>(reinterpret_cast<const void*>(std::addressof(_t1))) };
|
||||||
QMetaObject::activate(this, &staticMetaObject, 0, _a);
|
QMetaObject::activate(this, &staticMetaObject, 0, _a);
|
||||||
|
@ -39,8 +39,8 @@ constexpr auto qt_meta_stringdata_CLASSctai_session_widgetENDCLASS = QtMocHelper
|
|||||||
"ctai_session_widget",
|
"ctai_session_widget",
|
||||||
"ctai_session_user_sending",
|
"ctai_session_user_sending",
|
||||||
"",
|
"",
|
||||||
"ctai_session_set_send_info",
|
"ctai_session_postback_info",
|
||||||
"send_data",
|
"model_data",
|
||||||
"resp_data",
|
"resp_data",
|
||||||
"ctai_session_set_steam_mode"
|
"ctai_session_set_steam_mode"
|
||||||
);
|
);
|
||||||
@ -86,9 +86,9 @@ Q_CONSTINIT const QMetaObject ctai_session_widget::staticMetaObject = { {
|
|||||||
QtPrivate::TypeAndForceComplete<ctai_session_widget, std::true_type>,
|
QtPrivate::TypeAndForceComplete<ctai_session_widget, std::true_type>,
|
||||||
// method 'ctai_session_user_sending'
|
// method 'ctai_session_user_sending'
|
||||||
QtPrivate::TypeAndForceComplete<void, std::false_type>,
|
QtPrivate::TypeAndForceComplete<void, std::false_type>,
|
||||||
// method 'ctai_session_set_send_info'
|
// method 'ctai_session_postback_info'
|
||||||
QtPrivate::TypeAndForceComplete<void, std::false_type>,
|
QtPrivate::TypeAndForceComplete<void, std::false_type>,
|
||||||
QtPrivate::TypeAndForceComplete<send_data, std::false_type>,
|
QtPrivate::TypeAndForceComplete<model_data, std::false_type>,
|
||||||
// method 'ctai_session_set_steam_mode'
|
// method 'ctai_session_set_steam_mode'
|
||||||
QtPrivate::TypeAndForceComplete<void, std::false_type>,
|
QtPrivate::TypeAndForceComplete<void, std::false_type>,
|
||||||
QtPrivate::TypeAndForceComplete<bool, std::false_type>
|
QtPrivate::TypeAndForceComplete<bool, std::false_type>
|
||||||
@ -103,7 +103,7 @@ void ctai_session_widget::qt_static_metacall(QObject *_o, QMetaObject::Call _c,
|
|||||||
(void)_t;
|
(void)_t;
|
||||||
switch (_id) {
|
switch (_id) {
|
||||||
case 0: _t->ctai_session_user_sending(); break;
|
case 0: _t->ctai_session_user_sending(); break;
|
||||||
case 1: _t->ctai_session_set_send_info((*reinterpret_cast< std::add_pointer_t<send_data>>(_a[1]))); break;
|
case 1: _t->ctai_session_postback_info((*reinterpret_cast< std::add_pointer_t<model_data>>(_a[1]))); break;
|
||||||
case 2: _t->ctai_session_set_steam_mode((*reinterpret_cast< std::add_pointer_t<bool>>(_a[1]))); break;
|
case 2: _t->ctai_session_set_steam_mode((*reinterpret_cast< std::add_pointer_t<bool>>(_a[1]))); break;
|
||||||
default: ;
|
default: ;
|
||||||
}
|
}
|
||||||
|
2405
build/qrc_res.cpp
BIN
release/ctai.exe
Before Width: | Height: | Size: 703 B After Width: | Height: | Size: 2.3 KiB |
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 2.7 KiB |
Before Width: | Height: | Size: 605 B After Width: | Height: | Size: 2.4 KiB |
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.9 KiB |
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 2.1 KiB |
Before Width: | Height: | Size: 602 B After Width: | Height: | Size: 1.8 KiB |
Before Width: | Height: | Size: 893 B After Width: | Height: | Size: 2.5 KiB |
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 2.7 KiB |
Before Width: | Height: | Size: 928 B After Width: | Height: | Size: 3.0 KiB |
Before Width: | Height: | Size: 963 B After Width: | Height: | Size: 2.7 KiB |
Before Width: | Height: | Size: 952 B After Width: | Height: | Size: 1.8 KiB |
Before Width: | Height: | Size: 769 B After Width: | Height: | Size: 2.3 KiB |
8
save/sui.json
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
"sui": {
|
||||||
|
"font": 0,
|
||||||
|
"font_bold": 0,
|
||||||
|
"style": 1,
|
||||||
|
"style_system": 0
|
||||||
|
}
|
||||||
|
}
|
@ -1,6 +1,7 @@
|
|||||||
#include "ctai_curl.h"
|
#include "ctai_curl.h"
|
||||||
|
|
||||||
ctai_curl::ctai_curl()
|
ctai_curl::ctai_curl() : m_curl(nullptr),
|
||||||
|
m_headers(nullptr)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
ctai_curl::~ctai_curl()
|
ctai_curl::~ctai_curl()
|
||||||
@ -11,51 +12,37 @@ ctai_curl::~ctai_curl()
|
|||||||
m_curl = nullptr; // 可选,避免野指针
|
m_curl = nullptr; // 可选,避免野指针
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// 流式输出回调
|
||||||
size_t curl_callback(void *buffer, size_t sz, size_t nmemb, void *userdata)
|
size_t stream_callback(void *buffer, size_t sz, size_t nmemb, void *userdata)
|
||||||
{
|
{
|
||||||
auto ctx = static_cast<call_back_context *>(userdata);
|
auto ctx = static_cast<call_back_context *>(userdata);
|
||||||
std::unique_lock<std::mutex> lock(ctx->instance->m_mutex);
|
std::unique_lock<std::mutex> lock(ctx->instance->m_mutex);
|
||||||
size_t size = sz * nmemb;
|
size_t size = sz * nmemb;
|
||||||
if (ctx->m_data.steam_mode)
|
std::string chunk(static_cast<char *>(buffer), size);
|
||||||
{
|
if(ctx->m_data.postback_stream_mode){
|
||||||
std::string chunk(static_cast<char *>(buffer), size);
|
|
||||||
qDebug()<<"info:"<<chunk;
|
|
||||||
ctx->instance->send_stream(ctx->m_data, chunk);
|
ctx->instance->send_stream(ctx->m_data, chunk);
|
||||||
}
|
}
|
||||||
else
|
qDebug() << "steam data chunk:" << chunk;
|
||||||
{
|
|
||||||
ctx->m_data.model_data.append(static_cast<char *>(buffer), size);
|
|
||||||
}
|
|
||||||
lock.unlock();
|
lock.unlock();
|
||||||
return sz * nmemb;
|
return sz * nmemb;
|
||||||
}
|
}
|
||||||
void ctai_curl::curl_init(send_data _send_args)
|
// 非流式输出回调
|
||||||
|
size_t not_stream_callback(void *buffer, size_t sz, size_t nmemb, void *userdata)
|
||||||
{
|
{
|
||||||
curl_global_init(CURL_GLOBAL_ALL);
|
std::string *psResponse = static_cast<std::string *>(userdata);
|
||||||
m_curl = curl_easy_init();
|
size_t size = sz * nmemb;
|
||||||
m_error = CURLE_QUOTE_ERROR;
|
psResponse->append(static_cast<char *>(buffer), size);
|
||||||
m_headers = nullptr;
|
qDebug() << "not steam data chunk:" << *psResponse;
|
||||||
set_send_post_option(_send_args);
|
return sz * nmemb;
|
||||||
}
|
|
||||||
void ctai_curl::set_send_post_option(send_data m_args)
|
|
||||||
{
|
|
||||||
set_send_post_headers(m_args.content_header);
|
|
||||||
set_send_post_headers(m_args.accept_header);
|
|
||||||
set_send_post_headers(m_args.api_key);
|
|
||||||
curl_easy_setopt(m_curl, CURLOPT_URL, m_args.api_url.c_str());
|
|
||||||
set_send_post_ssl(m_args.ssl_state);
|
|
||||||
set_send_post_timeout(m_args.timeout);
|
|
||||||
curl_easy_setopt(m_curl, CURLOPT_HTTPHEADER, m_headers);
|
|
||||||
curl_easy_setopt(m_curl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_2_0);
|
|
||||||
curl_easy_setopt(m_curl, CURLOPT_WRITEFUNCTION, curl_callback);
|
|
||||||
}
|
}
|
||||||
void ctai_curl::set_send_post_headers(std::string head_str)
|
void ctai_curl::set_send_post_headers(std::string head_str)
|
||||||
{
|
{
|
||||||
m_headers = curl_slist_append(m_headers, head_str.c_str());
|
m_headers = curl_slist_append(m_headers, head_str.c_str());
|
||||||
|
qDebug() << "header:" << head_str;
|
||||||
|
curl_easy_setopt(m_curl, CURLOPT_HTTPHEADER, m_headers);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ctai_curl::set_send_post_ssl(bool ssl_state)
|
void ctai_curl::set_curl_ssl(bool ssl_state)
|
||||||
{
|
{
|
||||||
std::string ca_bundle = QDir::currentPath().toStdString() + "/cert/cacert.pem";
|
std::string ca_bundle = QDir::currentPath().toStdString() + "/cert/cacert.pem";
|
||||||
if (ssl_state)
|
if (ssl_state)
|
||||||
@ -70,12 +57,14 @@ void ctai_curl::set_send_post_ssl(bool ssl_state)
|
|||||||
curl_easy_setopt(m_curl, CURLOPT_SSL_VERIFYHOST, 0L);
|
curl_easy_setopt(m_curl, CURLOPT_SSL_VERIFYHOST, 0L);
|
||||||
ssl_state = false;
|
ssl_state = false;
|
||||||
}
|
}
|
||||||
|
qDebug() << "curl opts ssl:" << ssl_state<<"ssl_pem:" << ca_bundle;
|
||||||
}
|
}
|
||||||
void ctai_curl::set_send_post_timeout(int time)
|
void ctai_curl::set_curl_timeout(int time)
|
||||||
{
|
{
|
||||||
curl_easy_setopt(m_curl, CURLOPT_TIMEOUT, time);
|
curl_easy_setopt(m_curl, CURLOPT_TIMEOUT, time);
|
||||||
|
qDebug() << "curl opts timeout:" << time;
|
||||||
}
|
}
|
||||||
void ctai_curl::set_send_post_followlocation(bool followlocation_state)
|
void ctai_curl::set_curl_followlocation(bool followlocation_state)
|
||||||
{
|
{
|
||||||
if (followlocation_state)
|
if (followlocation_state)
|
||||||
{
|
{
|
||||||
@ -85,8 +74,9 @@ void ctai_curl::set_send_post_followlocation(bool followlocation_state)
|
|||||||
{
|
{
|
||||||
curl_easy_setopt(m_curl, CURLOPT_FOLLOWLOCATION, 0L);
|
curl_easy_setopt(m_curl, CURLOPT_FOLLOWLOCATION, 0L);
|
||||||
}
|
}
|
||||||
|
qDebug() << "curl opts followlocation_state:" << followlocation_state;
|
||||||
}
|
}
|
||||||
void ctai_curl::set_send_post_debug_verbose(bool verbose_state)
|
void ctai_curl::set_curl_debug_verbose(bool verbose_state)
|
||||||
{
|
{
|
||||||
if (verbose_state)
|
if (verbose_state)
|
||||||
{
|
{
|
||||||
@ -96,8 +86,9 @@ void ctai_curl::set_send_post_debug_verbose(bool verbose_state)
|
|||||||
{
|
{
|
||||||
curl_easy_setopt(m_curl, CURLOPT_VERBOSE, 0L);
|
curl_easy_setopt(m_curl, CURLOPT_VERBOSE, 0L);
|
||||||
}
|
}
|
||||||
|
qDebug() << "curl opts verbose_state:" << verbose_state;
|
||||||
}
|
}
|
||||||
void ctai_curl::set_send_post_tcp_keepalive(bool keepalive_state)
|
void ctai_curl::set_curl_tcp_keepalive(bool keepalive_state)
|
||||||
{
|
{
|
||||||
if (keepalive_state)
|
if (keepalive_state)
|
||||||
{
|
{
|
||||||
@ -113,16 +104,9 @@ void ctai_curl::set_send_post_tcp_keepalive(bool keepalive_state)
|
|||||||
{
|
{
|
||||||
curl_easy_setopt(m_curl, CURLOPT_TCP_KEEPALIVE, 0L);
|
curl_easy_setopt(m_curl, CURLOPT_TCP_KEEPALIVE, 0L);
|
||||||
}
|
}
|
||||||
|
qDebug() << "curl opts keepalive_state:" << keepalive_state;
|
||||||
}
|
}
|
||||||
std::string ctai_curl::send_request_body(send_data &_data)
|
|
||||||
{
|
|
||||||
json _request_body = {
|
|
||||||
{"model", _data.user_model},
|
|
||||||
{"messages", {{{"role", "user"}, {"content", _data.user_data}}}},
|
|
||||||
{"temperature", 0.7},
|
|
||||||
{"stream", _data.steam_mode}};
|
|
||||||
return _request_body.dump();
|
|
||||||
}
|
|
||||||
std::vector<std::string> ctai_curl::steam_extract(const std::string &input)
|
std::vector<std::string> ctai_curl::steam_extract(const std::string &input)
|
||||||
{
|
{
|
||||||
std::vector<std::string> result;
|
std::vector<std::string> result;
|
||||||
@ -132,11 +116,13 @@ std::vector<std::string> ctai_curl::steam_extract(const std::string &input)
|
|||||||
auto words_end = std::sregex_iterator();
|
auto words_end = std::sregex_iterator();
|
||||||
|
|
||||||
// 遍历所有匹配结果
|
// 遍历所有匹配结果
|
||||||
for (std::sregex_iterator i = words_begin; i != words_end; ++i) {
|
for (std::sregex_iterator i = words_begin; i != words_end; ++i)
|
||||||
|
{
|
||||||
std::smatch match = *i;
|
std::smatch match = *i;
|
||||||
// 提取捕获组中的内容
|
// 提取捕获组中的内容
|
||||||
result.push_back(match.str(1));
|
result.push_back(match.str(1));
|
||||||
}
|
}
|
||||||
|
qDebug() << "result:" << result;
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
std::string ctai_curl::send_timestamp_to_time(time_t timestamp)
|
std::string ctai_curl::send_timestamp_to_time(time_t timestamp)
|
||||||
@ -145,92 +131,152 @@ std::string ctai_curl::send_timestamp_to_time(time_t timestamp)
|
|||||||
QDateTime dateTime = QDateTime::fromSecsSinceEpoch(timestamp);
|
QDateTime dateTime = QDateTime::fromSecsSinceEpoch(timestamp);
|
||||||
return dateTime.toString("yyyy-MM-dd hh:mm:ss").toStdString();
|
return dateTime.toString("yyyy-MM-dd hh:mm:ss").toStdString();
|
||||||
}
|
}
|
||||||
void ctai_curl::send_stream(send_data &data, std::string response_data)
|
void ctai_curl::send_stream(model_data &data, std::string response_data)
|
||||||
{
|
{
|
||||||
std::vector<std::string> _info_data = steam_extract(response_data);
|
std::vector<std::string> _info_data = steam_extract(response_data);
|
||||||
for (auto str : _info_data)
|
qDebug() << "response_data:" << response_data;
|
||||||
{
|
if(!_info_data.empty()){
|
||||||
if (str != "" && str != "[DONE]")
|
for (auto str : _info_data)
|
||||||
{
|
{
|
||||||
qDebug() << "info:" << str;
|
if (str != "" && str != "[DONE]")
|
||||||
json response = json::parse(str);
|
|
||||||
if (response.contains("choices") && !response["choices"].empty())
|
|
||||||
{
|
{
|
||||||
data.model_data = response["choices"][0]["delta"]["content"];
|
json response = json::parse(str);
|
||||||
|
if (response.contains("choices") && !response["choices"].empty())
|
||||||
|
{
|
||||||
|
data.postback_model_data = response["choices"][0]["delta"]["content"];
|
||||||
|
}
|
||||||
|
// 获取时间戳自动转换为时间
|
||||||
|
if (response.contains("created") && !response["created"].empty())
|
||||||
|
{
|
||||||
|
data.postback_time = send_timestamp_to_time(response["created"]);
|
||||||
|
}
|
||||||
|
emit send_post_out_data(data);
|
||||||
}
|
}
|
||||||
// 获取时间戳自动转换为时间
|
qDebug() << "send_stream:" << str;
|
||||||
if (response.contains("created") && !response["created"].empty())
|
|
||||||
{
|
|
||||||
data.time = send_timestamp_to_time(response["created"]);
|
|
||||||
}
|
|
||||||
emit send_post_out_data(data);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
void ctai_curl::send_not_stream(send_data &data, std::string response_data)
|
void ctai_curl::send_not_stream(model_data &data, std::string response_data)
|
||||||
{
|
{
|
||||||
json response = json::parse(response_data);
|
json response = json::parse(response_data);
|
||||||
// 获取返回内容
|
// 获取返回内容
|
||||||
if (response.contains("choices") && !response["choices"].empty())
|
if (response.contains("choices") && !response["choices"].empty())
|
||||||
{
|
{
|
||||||
data.model_data = response["choices"][0]["message"]["content"];
|
data.postback_model_data = response["choices"][0]["message"]["content"];
|
||||||
}
|
}
|
||||||
// 获取时间戳自动转换为时间
|
// 获取时间戳自动转换为时间
|
||||||
if (response.contains("created") && !response["created"].empty())
|
if (response.contains("created") && !response["created"].empty())
|
||||||
{
|
{
|
||||||
data.time = send_timestamp_to_time(response["created"]);
|
data.postback_time = send_timestamp_to_time(response["created"]);
|
||||||
}
|
}
|
||||||
// 生成模型
|
// 生成模型
|
||||||
if (response.contains("model") && !response["model"].empty())
|
if (response.contains("model") && !response["model"].empty())
|
||||||
{
|
{
|
||||||
data.server_model = response["model"];
|
data.postback_server_model = response["model"];
|
||||||
}
|
}
|
||||||
// 数据信息
|
// 数据信息
|
||||||
if (response.contains("usage") && !response["usage"].empty())
|
if (response.contains("usage") && !response["usage"].empty())
|
||||||
{
|
{
|
||||||
if (response["usage"].contains("prompt_tokens"))
|
if (response["usage"].contains("prompt_tokens"))
|
||||||
{
|
{
|
||||||
data.prompt_tokens = response["usage"]["prompt_tokens"];
|
data.postback_prompt_tokens = response["usage"]["prompt_tokens"];
|
||||||
}
|
}
|
||||||
if (response["usage"].contains("completion_tokens"))
|
if (response["usage"].contains("completion_tokens"))
|
||||||
{
|
{
|
||||||
data.completion_tokens = response["usage"]["completion_tokens"];
|
data.postback_completion_tokens = response["usage"]["completion_tokens"];
|
||||||
}
|
}
|
||||||
if (response["usage"].contains("total_tokens"))
|
if (response["usage"].contains("total_tokens"))
|
||||||
{
|
{
|
||||||
data.total_tokens = response["usage"]["total_tokens"];
|
data.postback_total_tokens = response["usage"]["total_tokens"];
|
||||||
}
|
}
|
||||||
if (response["usage"].contains("prompt_cache_hit_tokens"))
|
if (response["usage"].contains("prompt_cache_hit_tokens"))
|
||||||
{
|
{
|
||||||
data.prompt_cache_hit_tokens = response["usage"]["prompt_cache_hit_tokens"];
|
data.postback_prompt_cache_hit_tokens = response["usage"]["prompt_cache_hit_tokens"];
|
||||||
}
|
}
|
||||||
if (response["usage"].contains("prompt_cache_miss_tokens"))
|
if (response["usage"].contains("prompt_cache_miss_tokens"))
|
||||||
{
|
{
|
||||||
data.prompt_cache_hit_tokens = response["usage"]["prompt_cache_miss_tokens"];
|
data.postback_prompt_cache_hit_tokens = response["usage"]["prompt_cache_miss_tokens"];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
qDebug() << "send_not_stream:" << response_data;
|
||||||
}
|
}
|
||||||
void ctai_curl::send_post_response(send_data &data)
|
std::string ctai_curl::send_send_body(model_data m_data)
|
||||||
{
|
{
|
||||||
|
json _request_body = {
|
||||||
|
{"model", m_data.user_model},
|
||||||
|
{"messages", {{{"role", "user"}, {"content", m_data.send_user_data}}}},
|
||||||
|
{"temperature", 0.7},
|
||||||
|
{"stream", m_data.postback_stream_mode}};
|
||||||
|
// 添加有效性检查
|
||||||
|
if(_request_body.is_discarded()) {
|
||||||
|
qDebug() << "Invalid JSON construction";
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
std::string body=_request_body.dump();
|
||||||
|
qDebug() << "send_request_body:" << body;
|
||||||
|
return body;
|
||||||
|
}
|
||||||
|
void ctai_curl::set_send_post_option(model_data m_data)
|
||||||
|
{
|
||||||
|
std::string request_body_str = send_send_body(m_data);
|
||||||
|
set_send_post_headers(m_data.send_content_header);
|
||||||
|
set_send_post_headers(m_data.send_accept_header);
|
||||||
|
set_send_post_headers(m_data.api_key);
|
||||||
|
curl_easy_setopt(m_curl, CURLOPT_ENCODING, "UTF-8");
|
||||||
|
curl_easy_setopt(m_curl, CURLOPT_URL, m_data.api_url.c_str());
|
||||||
|
curl_easy_setopt(m_curl, CURLOPT_POST, 1L);
|
||||||
|
curl_easy_setopt(m_curl, CURLOPT_POSTFIELDS, request_body_str.c_str());
|
||||||
|
curl_easy_setopt(m_curl, CURLOPT_POSTFIELDSIZE, request_body_str.length());
|
||||||
|
curl_easy_setopt(m_curl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_2_0);
|
||||||
|
}
|
||||||
|
void ctai_curl::curl_init(curl_opts opts)
|
||||||
|
{
|
||||||
|
curl_global_init(CURL_GLOBAL_ALL);
|
||||||
|
m_curl = curl_easy_init();
|
||||||
|
m_error = CURLE_QUOTE_ERROR;
|
||||||
|
m_headers = nullptr;
|
||||||
|
set_curl_ssl(opts.ssl_state);
|
||||||
|
set_curl_timeout(opts.timeout);
|
||||||
|
set_curl_followlocation(opts.followlocation);
|
||||||
|
set_curl_debug_verbose(opts.verbose);
|
||||||
|
set_curl_tcp_keepalive(opts.keepalive);
|
||||||
|
}
|
||||||
|
void ctai_curl::send_post_response(model_data m_data)
|
||||||
|
{
|
||||||
|
set_send_post_option(m_data);
|
||||||
|
std::string response_data;
|
||||||
|
call_back_context ctx;
|
||||||
|
if (m_data.postback_stream_mode)
|
||||||
|
{
|
||||||
|
//流式输出
|
||||||
|
ctx.m_data = m_data;
|
||||||
|
ctx.instance = this;
|
||||||
|
curl_easy_setopt(m_curl, CURLOPT_WRITEFUNCTION, stream_callback);
|
||||||
|
curl_easy_setopt(m_curl, CURLOPT_WRITEDATA, &ctx);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
//非流式输出
|
||||||
|
curl_easy_setopt(m_curl, CURLOPT_WRITEFUNCTION, not_stream_callback);
|
||||||
|
curl_easy_setopt(m_curl, CURLOPT_WRITEDATA, &response_data);
|
||||||
|
}
|
||||||
|
|
||||||
if (m_curl)
|
if (m_curl)
|
||||||
{
|
{
|
||||||
call_back_context ctx;
|
|
||||||
ctx.m_data = data;
|
|
||||||
ctx.instance = this;
|
|
||||||
std::string request_body_str = send_request_body(data);
|
|
||||||
curl_easy_setopt(m_curl, CURLOPT_WRITEDATA, &ctx);
|
|
||||||
curl_easy_setopt(m_curl, CURLOPT_POST, 1L);
|
|
||||||
curl_easy_setopt(m_curl, CURLOPT_POSTFIELDS, request_body_str.c_str());
|
|
||||||
curl_easy_setopt(m_curl, CURLOPT_POSTFIELDSIZE, request_body_str.length());
|
|
||||||
m_error = curl_easy_perform(m_curl);
|
m_error = curl_easy_perform(m_curl);
|
||||||
if (m_error == CURLE_OK)
|
if (m_error == CURLE_OK)
|
||||||
{
|
{
|
||||||
if(!data.steam_mode){
|
if (!m_data.postback_stream_mode)
|
||||||
send_not_stream(data,ctx.m_data.model_data);
|
{
|
||||||
emit send_post_out_data(data);
|
send_not_stream(m_data, response_data.data());
|
||||||
|
emit send_post_out_data(m_data);
|
||||||
}
|
}
|
||||||
}else{
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
qDebug() << "fialed" << m_error;
|
qDebug() << "fialed" << m_error;
|
||||||
}
|
}
|
||||||
|
curl_easy_reset(m_curl);
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -12,37 +12,42 @@
|
|||||||
#include <regex>
|
#include <regex>
|
||||||
using json = nlohmann::json;
|
using json = nlohmann::json;
|
||||||
|
|
||||||
typedef struct send_data
|
typedef struct curl_opts
|
||||||
{
|
{
|
||||||
|
bool ssl_state = true;
|
||||||
|
int timeout = 20;
|
||||||
|
bool followlocation = false;
|
||||||
|
bool keepalive = true;
|
||||||
|
bool verbose = true;
|
||||||
|
} curl_opts;
|
||||||
|
|
||||||
|
typedef struct model_data{
|
||||||
std::string api_url = "https://api.deepseek.com/chat/completions";
|
std::string api_url = "https://api.deepseek.com/chat/completions";
|
||||||
std::string api_key = "Authorization: Bearer sk-7e6932ed45674c389dea1cd3481e0ec2";
|
std::string api_key = "Authorization: Bearer sk-7e6932ed45674c389dea1cd3481e0ec2";
|
||||||
// std::string api_url="https://api.siliconflow.cn/v1/chat/completions";
|
|
||||||
// std::string api_key="Authorization: Bearer sk-oiphigpzqtmkkcoucyakrfevcvndroywvxhprvscjqhdykdb";
|
|
||||||
std::string content_header = "Content-Type: application/json";
|
|
||||||
std::string accept_header = "Accept: application/json";
|
|
||||||
bool ssl_state = true;
|
|
||||||
int timeout = 20;
|
|
||||||
bool followlocation = false;
|
|
||||||
bool tcp_keepalive = true;
|
|
||||||
bool debug_verbose = true;
|
|
||||||
bool steam_mode = false;
|
|
||||||
std::string user_data;
|
|
||||||
std::string model_data;
|
|
||||||
std::string time;
|
|
||||||
std::string user_model = "deepseek-chat";
|
std::string user_model = "deepseek-chat";
|
||||||
std::string server_model;
|
//std::string api_url="https://api.siliconflow.cn/v1/chat/completions";
|
||||||
std::string finish_reason;
|
//std::string api_key="Authorization: Bearer sk-oiphigpzqtmkkcoucyakrfevcvndroywvxhprvscjqhdykdb";
|
||||||
|
//std::string user_model = "deepseek-ai/DeepSeek-V3";
|
||||||
|
std::string send_content_header = "Content-Type: application/json";
|
||||||
|
std::string send_accept_header = "Accept: application/json";
|
||||||
|
std::string send_user_data;
|
||||||
|
std::string postback_model_data;
|
||||||
|
bool postback_stream_mode = false;
|
||||||
|
std::string postback_time;
|
||||||
|
std::string postback_server_model;
|
||||||
|
std::string postback_finish_reason;
|
||||||
// 提示消耗tokens
|
// 提示消耗tokens
|
||||||
int prompt_tokens;
|
int postback_prompt_tokens;
|
||||||
// 生成消耗tokens
|
// 生成消耗tokens
|
||||||
int completion_tokens;
|
int postback_completion_tokens;
|
||||||
// 总消耗tokens
|
// 总消耗tokens
|
||||||
int total_tokens;
|
int postback_total_tokens;
|
||||||
// 提示命中缓存tokens
|
// 提示命中缓存tokens
|
||||||
int prompt_cache_hit_tokens;
|
int postback_prompt_cache_hit_tokens;
|
||||||
// 生成未命中缓存tokens
|
// 生成未命中缓存tokens
|
||||||
int prompt_cache_miss_tokens;
|
int postback_prompt_cache_miss_tokens;
|
||||||
} send_data;
|
}model_data;
|
||||||
|
|
||||||
|
|
||||||
class ctai_curl : public QObject
|
class ctai_curl : public QObject
|
||||||
{
|
{
|
||||||
@ -50,35 +55,35 @@ class ctai_curl : public QObject
|
|||||||
public:
|
public:
|
||||||
ctai_curl();
|
ctai_curl();
|
||||||
~ctai_curl();
|
~ctai_curl();
|
||||||
void curl_init(send_data);
|
void curl_init(curl_opts);
|
||||||
void set_send_post_option(send_data m_args);
|
void send_post_response(model_data);
|
||||||
void send_post_response(send_data &post_data);
|
void send_stream(model_data &, std::string response_data);
|
||||||
void send_stream(send_data &, std::string response_data);
|
void send_not_stream(model_data &, std::string response_data);
|
||||||
void send_not_stream(send_data &, std::string response_data);
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
std::mutex m_mutex;
|
std::mutex m_mutex;
|
||||||
private:
|
private:
|
||||||
CURL *m_curl;
|
CURL *m_curl;
|
||||||
curl_slist *m_headers;
|
curl_slist *m_headers;
|
||||||
CURLcode m_error;
|
CURLcode m_error;
|
||||||
std::string send_request_body(send_data &post_data);
|
void set_send_post_option(model_data);
|
||||||
|
std::string send_send_body(model_data);
|
||||||
std::vector<std::string> steam_extract(const std::string &input);
|
std::vector<std::string> steam_extract(const std::string &input);
|
||||||
void set_send_post_headers(std::string head_str);
|
void set_send_post_headers(std::string head_str);
|
||||||
void set_send_post_ssl(bool);
|
void set_curl_ssl(bool);
|
||||||
void set_send_post_timeout(int time);
|
void set_curl_timeout(int time);
|
||||||
void set_send_post_followlocation(bool followlocation_state);
|
void set_curl_followlocation(bool followlocation_state);
|
||||||
void set_send_post_debug_verbose(bool verbose_state);
|
void set_curl_debug_verbose(bool verbose_state);
|
||||||
void set_send_post_tcp_keepalive(bool keepalive_state);
|
void set_curl_tcp_keepalive(bool keepalive_state);
|
||||||
std::string send_timestamp_to_time(time_t timestamp);
|
std::string send_timestamp_to_time(time_t timestamp);
|
||||||
signals:
|
signals:
|
||||||
void send_post_out_data(send_data out_data);
|
void send_post_out_data(model_data out_data);
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef struct call_back_context
|
typedef struct call_back_context
|
||||||
{
|
{
|
||||||
ctai_curl *instance;
|
ctai_curl *instance;
|
||||||
send_data m_data;
|
model_data m_data;
|
||||||
} call_back_context;
|
} call_back_context;
|
||||||
|
|
||||||
#endif
|
#endif
|
@ -94,25 +94,25 @@ void ctai_session_widget::ctai_disable_enable_btn(bool state){
|
|||||||
void ctai_session_widget::init_curl()
|
void ctai_session_widget::init_curl()
|
||||||
{
|
{
|
||||||
m_curl = new ctai_curl();
|
m_curl = new ctai_curl();
|
||||||
m_curl->curl_init(user_args);
|
m_curl->curl_init(curl_opt);
|
||||||
connect(m_curl, SIGNAL(send_post_out_data(send_data)), this, SLOT(ctai_session_set_send_info(send_data)));
|
connect(m_curl, SIGNAL(send_post_out_data(model_data)), this, SLOT(ctai_session_postback_info(model_data)));
|
||||||
}
|
}
|
||||||
void ctai_session_widget::init_user_btn_size_tips(QPushButton &btn, QSize size, QString tip_str)
|
void ctai_session_widget::init_user_btn_size_tips(QPushButton &btn, QSize size, QString tip_str)
|
||||||
{
|
{
|
||||||
btn.setIconSize(size);
|
btn.setIconSize(size);
|
||||||
btn.setToolTip(tip_str);
|
btn.setToolTip(tip_str);
|
||||||
}
|
}
|
||||||
void ctai_session_widget::ctai_session_set_send_info(send_data resp_data){
|
void ctai_session_widget::ctai_session_postback_info(model_data resp_data){
|
||||||
if(!resp_data.steam_mode){
|
if(!resp_data.postback_stream_mode){
|
||||||
m_session_info->append(QString::fromStdString(resp_data.time));
|
m_session_info->append(QString::fromStdString(resp_data.postback_time));
|
||||||
m_session_info->append(QString::fromStdString(resp_data.model_data));
|
m_session_info->append(QString::fromStdString(resp_data.postback_model_data));
|
||||||
}else{
|
}else{
|
||||||
if (resp_data.time!=current_info_time){
|
if (resp_data.postback_time!=current_info_time){
|
||||||
current_info_time=resp_data.time;
|
current_info_time=resp_data.postback_time;
|
||||||
m_session_info->append(QString::fromStdString(resp_data.time));
|
m_session_info->append(QString::fromStdString(resp_data.postback_time));
|
||||||
m_session_info->append(QString::fromStdString(resp_data.model_data));
|
m_session_info->append(QString::fromStdString(resp_data.postback_model_data));
|
||||||
}else{
|
}else{
|
||||||
m_session_info->insertPlainText(QString::fromStdString(resp_data.model_data));
|
m_session_info->insertPlainText(QString::fromStdString(resp_data.postback_model_data));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -122,7 +122,7 @@ void ctai_session_widget::ctai_session_set_send_info(send_data resp_data){
|
|||||||
void ctai_session_widget::ctai_session_set_steam_mode(bool state){
|
void ctai_session_widget::ctai_session_set_steam_mode(bool state){
|
||||||
qDebug()<<"steam mode:"<<state;
|
qDebug()<<"steam mode:"<<state;
|
||||||
m_steam_switch->setToggle(state);
|
m_steam_switch->setToggle(state);
|
||||||
user_args.steam_mode=state;
|
user_model_data.postback_stream_mode=state;
|
||||||
}
|
}
|
||||||
void ctai_session_widget::ctai_session_user_sending()
|
void ctai_session_widget::ctai_session_user_sending()
|
||||||
{
|
{
|
||||||
@ -135,8 +135,8 @@ void ctai_session_widget::ctai_session_user_sending()
|
|||||||
{
|
{
|
||||||
QFuture<void> future = QtConcurrent::run([=]()
|
QFuture<void> future = QtConcurrent::run([=]()
|
||||||
{
|
{
|
||||||
user_args.user_data=m_session_user_edit_info->toPlainText().toStdString();
|
user_model_data.send_user_data=m_session_user_edit_info->toPlainText().toStdString();
|
||||||
m_curl->send_post_response(user_args);
|
m_curl->send_post_response(user_model_data);
|
||||||
});
|
});
|
||||||
ctai_disable_enable_btn(false);
|
ctai_disable_enable_btn(false);
|
||||||
m_lable_tips->setText("正在获取结果...");
|
m_lable_tips->setText("正在获取结果...");
|
||||||
|
@ -58,8 +58,9 @@ private:
|
|||||||
":/res/img/btn/btn_clear_context.png",
|
":/res/img/btn/btn_clear_context.png",
|
||||||
":/res/img/btn/btn_sending_info.png"};
|
":/res/img/btn/btn_sending_info.png"};
|
||||||
QSpacerItem *sparcer_item = new QSpacerItem(0, 0, QSizePolicy::Expanding, QSizePolicy::Fixed);
|
QSpacerItem *sparcer_item = new QSpacerItem(0, 0, QSizePolicy::Expanding, QSizePolicy::Fixed);
|
||||||
ctai_curl *m_curl;
|
ctai_curl *m_curl;
|
||||||
send_data user_args;
|
model_data user_model_data;
|
||||||
|
curl_opts curl_opt;
|
||||||
std::string current_info_time;
|
std::string current_info_time;
|
||||||
private:
|
private:
|
||||||
void init_user_btn();
|
void init_user_btn();
|
||||||
@ -67,7 +68,7 @@ private:
|
|||||||
void ctai_disable_enable_btn(bool);
|
void ctai_disable_enable_btn(bool);
|
||||||
private slots:
|
private slots:
|
||||||
void ctai_session_user_sending();
|
void ctai_session_user_sending();
|
||||||
void ctai_session_set_send_info(send_data resp_data);
|
void ctai_session_postback_info(model_data resp_data);
|
||||||
void ctai_session_set_steam_mode(bool);
|
void ctai_session_set_steam_mode(bool);
|
||||||
};
|
};
|
||||||
|
|
||||||
|