1111#include < QNetworkReply>
1212#include < QNetworkRequest>
1313
14+ Q_LOGGING_CATEGORY (akashiDiscordHook, " akashi.addon.discordhook" )
15+
1416DiscordMessage &DiscordMessage::setRequestUrl(const QString &url)
1517{
1618 m_request_url = url;
@@ -75,7 +77,7 @@ DiscordMessage &DiscordMessage::setEmbedUrl(const QString &url)
7577 return *this ;
7678}
7779
78- DiscordMessage &DiscordMessage::setEmbedColor (int color)
80+ DiscordMessage &DiscordMessage::setEmbedColor (QString color)
7981{
8082 if (m_building_embed) {
8183 m_current_embed[" color" ] = color;
@@ -238,7 +240,7 @@ DiscordHook::DiscordHook(QObject *parent) : Service{parent}
238240{
239241 m_service_properties = {{" author" , " Salanto" },
240242 {" version" , " 1.0.0" },
241- {" identifier" , " akashi.network.discordhook " }};
243+ {" identifier" , SERVICE_ID }};
242244}
243245
244246void DiscordHook::setServiceRegistry (ServiceRegistry *f_registry)
@@ -247,23 +249,23 @@ void DiscordHook::setServiceRegistry(ServiceRegistry *f_registry)
247249
248250 auto l_service = m_registry->get <ServiceWrapper<QNetworkAccessManager>>(" qt.network.manager" );
249251 if (!l_service.has_value ()) {
250- m_state = FAILED;
252+ setState (State:: FAILED) ;
251253 }
252254
253- m_state = OK ;
255+ setState (State::OK) ;
254256 m_network_manager = l_service.value ()->get ();
255257}
256258
257259void DiscordHook::post (const DiscordMessage &message)
258260{
259261 if (!m_network_manager) {
260- qWarning ( ) << " Cannot post DiscordMessage: QNetworkAccessManager not installed" ;
262+ qCWarning (akashiDiscordHook ) << " Cannot post DiscordMessage: QNetworkAccessManager not installed" ;
261263 return ;
262264 }
263265
264266 QUrl url (message.requestUrl ());
265267 if (!url.isValid ()) {
266- qWarning ( ) << " Failed to post DiscordMessage: Invalid URL" << message.requestUrl ();
268+ qCWarning (akashiDiscordHook ) << " Failed to post DiscordMessage: Invalid URL" << qUtf8Printable ( message.requestUrl () );
267269 return ;
268270 }
269271
@@ -280,27 +282,14 @@ void DiscordHook::post(const DiscordMessage &message)
280282
281283void DiscordHook::post (const DiscordMultipartMessage &message)
282284{
283- if (!m_network_manager) {
284- qWarning () << " Cannot post DiscordMultipartMessage: QNetworkAccessManager not installed" ;
285- return ;
286- }
287-
288285 QUrl url (message.requestUrl ());
289286 if (!url.isValid ()) {
290- qWarning ( ) << " Failed to post DiscordMultipartMessage: Invalid URL" << message.requestUrl ();
287+ qCWarning (akashiDiscordHook ) << " Failed to post DiscordMultipartMessage: Invalid URL" << qUtf8Printable ( message.requestUrl () );
291288 return ;
292289 }
293290
294291 auto *multipart = new QHttpMultiPart (QHttpMultiPart::FormDataType);
295292
296- if (!message.payloadJson ().isEmpty ()) {
297- QHttpPart json_part;
298- json_part.setHeader (QNetworkRequest::ContentDispositionHeader, " form-data; name=\" payload_json\" " );
299- json_part.setHeader (QNetworkRequest::ContentTypeHeader, " application/json" );
300- json_part.setBody (QJsonDocument (message.payloadJson ()).toJson (QJsonDocument::Compact));
301- multipart->append (json_part);
302- }
303-
304293 for (int i = 0 ; i < message.size (); ++i) {
305294 const DiscordMultipart &part_data = message.partAt (i);
306295
@@ -324,6 +313,14 @@ void DiscordHook::post(const DiscordMultipartMessage &message)
324313 multipart->append (http_part);
325314 }
326315
316+ if (!message.payloadJson ().isEmpty ()) {
317+ QHttpPart json_part;
318+ json_part.setHeader (QNetworkRequest::ContentDispositionHeader, " form-data; name=\" payload_json\" " );
319+ json_part.setHeader (QNetworkRequest::ContentTypeHeader, " application/json" );
320+ json_part.setBody (QJsonDocument (message.payloadJson ()).toJson (QJsonDocument::Compact));
321+ multipart->append (json_part);
322+ }
323+
327324 QNetworkRequest request (url);
328325
329326 QNetworkReply *reply = m_network_manager->post (request, multipart);
@@ -339,8 +336,8 @@ void DiscordHook::onDiscordResponse(QNetworkReply *reply)
339336 reply->deleteLater ();
340337
341338 if (reply->error () != QNetworkReply::NoError) {
342- qWarning ( ) << " Discord webhook failed:" << reply->errorString ();
343- qWarning ( ) << " Response body:" << reply->readAll ();
339+ qCWarning (akashiDiscordHook ) << " Discord webhook failed:" << qUtf8Printable ( reply->errorString () );
340+ qCWarning (akashiDiscordHook ) << " Response body:" << reply->readAll ();
344341 return ;
345342 }
346343}
0 commit comments