CHttpJob.h 764 B

123456789101112131415161718192021222324252627282930313233343536
  1. #pragma once
  2. #include <AK/HashMap.h>
  3. #include <LibCore/CHttpRequest.h>
  4. #include <LibCore/CNetworkJob.h>
  5. class CTCPSocket;
  6. class CHttpJob final : public CNetworkJob {
  7. C_OBJECT(CHttpJob)
  8. public:
  9. explicit CHttpJob(const CHttpRequest&);
  10. virtual ~CHttpJob() override;
  11. virtual void start() override;
  12. virtual void shutdown() override;
  13. private:
  14. void on_socket_connected();
  15. void finish_up();
  16. enum class State {
  17. InStatus,
  18. InHeaders,
  19. InBody,
  20. Finished,
  21. };
  22. CHttpRequest m_request;
  23. ObjectPtr<CTCPSocket> m_socket;
  24. State m_state { State::InStatus };
  25. int m_code { -1 };
  26. HashMap<String, String> m_headers;
  27. Vector<ByteBuffer> m_received_buffers;
  28. size_t m_received_size { 0 };
  29. };