12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- // Copyright 2017 Dolphin Emulator Project
- // SPDX-License-Identifier: GPL-2.0-or-later
- #pragma once
- #include <chrono>
- #include <functional>
- #include <map>
- #include <memory>
- #include <optional>
- #include <span>
- #include <string>
- #include <vector>
- #include "Common/CommonTypes.h"
- namespace Common
- {
- class HttpRequest final
- {
- public:
- enum class AllowedReturnCodes : u8
- {
- Ok_Only,
- All
- };
- // Return false to abort the request
- using ProgressCallback = std::function<bool(s64 dltotal, s64 dlnow, s64 ultotal, s64 ulnow)>;
- explicit HttpRequest(std::chrono::milliseconds timeout_ms = std::chrono::milliseconds{3000},
- ProgressCallback callback = nullptr);
- ~HttpRequest();
- bool IsValid() const;
- using Response = std::optional<std::vector<u8>>;
- using Headers = std::map<std::string, std::optional<std::string>>;
- struct Multiform
- {
- std::string name;
- std::string data;
- };
- void SetCookies(const std::string& cookies);
- void UseIPv4();
- void FollowRedirects(long max = 1);
- s32 GetLastResponseCode() const;
- std::string EscapeComponent(const std::string& string);
- std::string GetHeaderValue(std::string_view name) const;
- Response Get(const std::string& url, const Headers& headers = {},
- AllowedReturnCodes codes = AllowedReturnCodes::Ok_Only);
- Response Post(const std::string& url, const std::vector<u8>& payload, const Headers& headers = {},
- AllowedReturnCodes codes = AllowedReturnCodes::Ok_Only);
- Response Post(const std::string& url, const std::string& payload, const Headers& headers = {},
- AllowedReturnCodes codes = AllowedReturnCodes::Ok_Only);
- Response PostMultiform(const std::string& url, std::span<Multiform> multiform,
- const Headers& headers = {},
- AllowedReturnCodes codes = AllowedReturnCodes::Ok_Only);
- private:
- class Impl;
- std::unique_ptr<Impl> m_impl;
- };
- } // namespace Common
|