#pragma once #include #include #include #include #include #include "HttpPacket.h" namespace Incart::Net::WebApi { class HttpResponse final : public HttpPacket { private: uint16_t m_statusCode; QString m_statusText; public: HttpResponse(uint16_t statusCode_, const QString& statusText_, const QString& httpVersion_ = "1.1") : HttpPacket(httpVersion_) , m_statusCode(statusCode_) , m_statusText(statusText_) { } uint16_t getStatusCode() { return m_statusCode; } QString getStatusText() { return m_statusText; } bool parseStartLine(const QString& text) override { auto startLineParts = text.split(' '); if (startLineParts.size() != 3) { return false; } QString httpVersion = startLineParts[0]; auto httpVersionParts = httpVersion.split('/'); if (httpVersionParts[0].compare("HTTP", Qt::CaseInsensitive) != 0) { return false; } bool isOk = true; uint16_t statusCode = static_cast(startLineParts[1].toUShort(&isOk)); if (!isOk) { return false; } m_statusCode = statusCode; m_httpVersion = httpVersionParts[1]; m_statusText = startLineParts[2]; return true; } QString convertStartLineToString() override { return QString("HTTP/") + m_httpVersion + " " + QString::number(m_statusCode) + " " + m_statusText; } }; } // namespace Incart::Net::WebApi