Zrythm v2.0.0-DEV
a highly automated and intuitive digital audio workstation
Loading...
Searching...
No Matches
networking.h
1// SPDX-FileCopyrightText: © 2021, 2023-2025 Alexandros Theodotou <alex@zrythm.org>
2// SPDX-License-Identifier: LicenseRef-ZrythmLicense
3
4#pragma once
5
6#include <filesystem>
7
8#include "utils/types.h"
9#include "utils/utf8_string.h"
10
11#include "juce_wrapper.h"
12
17{
18
19class URL final
20{
21public:
22 class MultiPartMimeObject final
23 {
24 public:
25 MultiPartMimeObject (
26 std::string name,
27 fs::path filepath,
28 std::string mimetype);
29
30 friend class URL;
31
32 private:
33 std::string name_;
34 fs::path filepath_;
35 std::string mimetype_;
36 };
37
38public:
39 URL (const std::string &url);
40
49 std::string get_page_contents (int timeout = 0);
50
60 const std::string &json_str,
61 int timeout,
62 std::initializer_list<MultiPartMimeObject> mime_objects);
63
64 using AsyncStringResult = std::variant<std::string, std::exception_ptr>;
65 using GetContentsAsyncCallback = std::function<void (AsyncStringResult)>;
66
67 std::future<void>
68 get_page_contents_async (int timeout_ms, GetContentsAsyncCallback callback);
69
70private:
71 juce::URL url_;
72 GetContentsAsyncCallback get_contents_callback_;
73};
74
75}
std::string get_page_contents(int timeout=0)
Returns the contents of the page synchronously.
utils::Utf8String post_json_no_auth(const std::string &json_str, int timeout, std::initializer_list< MultiPartMimeObject > mime_objects)
Posts the given JSON to the URL without any authentication.
Lightweight UTF-8 string wrapper with safe conversions.
Definition utf8_string.h:38
Networking utilities.
Definition networking.h:17