/* * Copyright (c) 2018-2020, Andreas Kling * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include #include namespace Protocol { class Request; class RequestClient : public IPC::ServerConnection , public RequestClientEndpoint { C_OBJECT(RequestClient); public: virtual void handshake() override; bool is_supported_protocol(const String&); template> RefPtr start_request(const String& method, const String& url, const HashMap& request_headers = {}, ReadonlyBytes request_body = {}); bool stop_request(Badge, Request&); bool set_certificate(Badge, Request&, String, String); private: RequestClient(); virtual void handle(const Messages::RequestClient::RequestProgress&) override; virtual void handle(const Messages::RequestClient::RequestFinished&) override; virtual OwnPtr handle(const Messages::RequestClient::CertificateRequested&) override; virtual void handle(const Messages::RequestClient::HeadersBecameAvailable&) override; HashMap> m_requests; }; }