Fix includes
Clang-tidy misc-include-cleaner appears to now be enforcing
significantly more headers than previously. That is overall a good
thing, but forces us to fix some issues. This commit is largely just
taking the clang-recommended fixes and checking them in. Subsequent
patches will fix the more unique issues.
Note, that a number of new ignores are added into the .clang-tidy file.
These can be cleaned up over time as they're understood. The majority
are places where boost includes a impl/x.hpp and x.hpp, but expects you
to use the later. include-cleaner opts for the impl, but it isn't clear
why.
Change-Id: Id3fdd7ee6df6c33b2fd35626898523048dd51bfb
Signed-off-by: Ed Tanous <etanous@nvidia.com>
Signed-off-by: Gunnar Mills <gmills@us.ibm.com>
diff --git a/http/app.hpp b/http/app.hpp
index 68f1642..f982618 100644
--- a/http/app.hpp
+++ b/http/app.hpp
@@ -2,28 +2,31 @@
// SPDX-FileCopyrightText: Copyright OpenBMC Authors
#pragma once
+#include "bmcweb_config.h"
+
#include "async_resp.hpp"
#include "http_request.hpp"
#include "http_server.hpp"
#include "logging.hpp"
-#include "privileges.hpp"
#include "routing.hpp"
-#include "utility.hpp"
+#include "routing/dynamicrule.hpp"
+#include <sys/socket.h>
#include <systemd/sd-daemon.h>
#include <boost/asio/io_context.hpp>
+#include <boost/asio/ip/address.hpp>
#include <boost/asio/ip/tcp.hpp>
#include <boost/asio/ssl/context.hpp>
#include <boost/asio/ssl/stream.hpp>
-#include <chrono>
#include <cstdint>
-#include <functional>
-#include <future>
#include <memory>
+#include <optional>
#include <string>
+#include <type_traits>
#include <utility>
+#include <vector>
// NOLINTNEXTLINE(cppcoreguidelines-macro-usage, clang-diagnostic-unused-macros)
#define BMCWEB_ROUTE(app, url) \
diff --git a/http/complete_response_fields.hpp b/http/complete_response_fields.hpp
index 46e0c66..486b699 100644
--- a/http/complete_response_fields.hpp
+++ b/http/complete_response_fields.hpp
@@ -2,20 +2,20 @@
// SPDX-FileCopyrightText: Copyright OpenBMC Authors
#pragma once
-#include "authentication.hpp"
#include "boost_formatters.hpp"
-#include "http_request.hpp"
#include "http_response.hpp"
#include "http_utility.hpp"
#include "json_html_serializer.hpp"
#include "logging.hpp"
#include "security_headers.hpp"
-#include "utils/hex_utils.hpp"
-#include <boost/beast/http/message.hpp>
+#include <boost/beast/http/field.hpp>
#include <nlohmann/json.hpp>
#include <array>
+#include <string>
+#include <string_view>
+#include <utility>
namespace crow
{
diff --git a/http/http2_connection.hpp b/http/http2_connection.hpp
index b3ba012..68ffc1f 100644
--- a/http/http2_connection.hpp
+++ b/http/http2_connection.hpp
@@ -6,33 +6,41 @@
#include "async_resp.hpp"
#include "authentication.hpp"
#include "complete_response_fields.hpp"
+#include "forward_unauthorized.hpp"
#include "http_body.hpp"
+#include "http_request.hpp"
#include "http_response.hpp"
-#include "http_utility.hpp"
#include "logging.hpp"
-#include "mutual_tls.hpp"
-#include "nghttp2_adapters.hpp"
-#include "ssl_key_handler.hpp"
-#include "utility.hpp"
-#include <boost/asio/io_context.hpp>
+// NOLINTNEXTLINE(misc-include-cleaner)
+#include "nghttp2_adapters.hpp"
+
+#include <nghttp2/nghttp2.h>
+#include <unistd.h>
+
+#include <boost/asio/buffer.hpp>
#include <boost/asio/ip/tcp.hpp>
#include <boost/asio/ssl/stream.hpp>
-#include <boost/asio/steady_timer.hpp>
-#include <boost/beast/http/error.hpp>
-#include <boost/beast/http/parser.hpp>
-#include <boost/beast/http/read.hpp>
-#include <boost/beast/http/serializer.hpp>
-#include <boost/beast/http/write.hpp>
-#include <boost/beast/websocket.hpp>
+#include <boost/beast/core/error.hpp>
+#include <boost/beast/http/field.hpp>
+#include <boost/beast/http/fields.hpp>
+#include <boost/beast/http/message.hpp>
+#include <boost/beast/http/verb.hpp>
+#include <boost/optional/optional.hpp>
#include <boost/system/error_code.hpp>
#include <array>
-#include <atomic>
-#include <chrono>
+#include <bit>
+#include <cstddef>
+#include <cstdint>
#include <functional>
+#include <map>
#include <memory>
+#include <optional>
+#include <span>
#include <string>
+#include <string_view>
+#include <utility>
#include <vector>
namespace crow
diff --git a/http/http_body.hpp b/http/http_body.hpp
index 9da892f..834c8d3 100644
--- a/http/http_body.hpp
+++ b/http/http_body.hpp
@@ -7,16 +7,27 @@
#include "utility.hpp"
#include <fcntl.h>
-#include <unistd.h>
+#include <boost/asio/buffer.hpp>
+#include <boost/beast/core/buffer_traits.hpp>
#include <boost/beast/core/buffers_range.hpp>
+#include <boost/beast/core/error.hpp>
+#include <boost/beast/core/file_base.hpp>
#include <boost/beast/core/file_posix.hpp>
#include <boost/beast/http/message.hpp>
+#include <boost/none.hpp>
+#include <boost/optional/optional.hpp>
#include <boost/system/error_code.hpp>
+#include <algorithm>
+#include <array>
+#include <cstddef>
#include <cstdint>
+#include <limits>
#include <optional>
+#include <string>
#include <string_view>
+#include <utility>
namespace bmcweb
{
diff --git a/http/http_client.hpp b/http/http_client.hpp
index 58078c4..6e5613b 100644
--- a/http/http_client.hpp
+++ b/http/http_client.hpp
@@ -3,38 +3,60 @@
// SPDX-FileCopyrightText: Copyright 2020 Intel Corporation
#pragma once
+#include "bmcweb_config.h"
+
#include "async_resolve.hpp"
+#include "boost_formatters.hpp"
#include "http_body.hpp"
#include "http_response.hpp"
#include "logging.hpp"
#include "ssl_key_handler.hpp"
+#include <openssl/err.h>
+#include <openssl/ssl.h>
+#include <openssl/tls1.h>
+
#include <boost/asio/connect.hpp>
+#include <boost/asio/error.hpp>
#include <boost/asio/io_context.hpp>
#include <boost/asio/ip/address.hpp>
-#include <boost/asio/ip/basic_endpoint.hpp>
#include <boost/asio/ip/tcp.hpp>
#include <boost/asio/ssl/context.hpp>
#include <boost/asio/ssl/error.hpp>
#include <boost/asio/ssl/stream.hpp>
+#include <boost/asio/ssl/stream_base.hpp>
#include <boost/asio/steady_timer.hpp>
+#include <boost/beast/core/error.hpp>
#include <boost/beast/core/flat_static_buffer.hpp>
+#include <boost/beast/http/field.hpp>
+#include <boost/beast/http/fields.hpp>
#include <boost/beast/http/message.hpp>
-#include <boost/beast/http/message_generator.hpp>
#include <boost/beast/http/parser.hpp>
#include <boost/beast/http/read.hpp>
+#include <boost/beast/http/status.hpp>
+#include <boost/beast/http/verb.hpp>
#include <boost/beast/http/write.hpp>
#include <boost/container/devector.hpp>
+#include <boost/optional/optional.hpp>
+#include <boost/system/errc.hpp>
#include <boost/system/error_code.hpp>
-#include <boost/url/format.hpp>
+#include <boost/url/host_type.hpp>
#include <boost/url/url.hpp>
#include <boost/url/url_view_base.hpp>
+#include <chrono>
+#include <cstdint>
#include <cstdlib>
+#include <format>
#include <functional>
#include <memory>
-#include <queue>
+#include <optional>
#include <string>
+#include <string_view>
+#include <type_traits>
+#include <unordered_map>
+#include <utility>
+#include <vector>
namespace crow
{
diff --git a/http/http_connection.hpp b/http/http_connection.hpp
index 9106764..7069331 100644
--- a/http/http_connection.hpp
+++ b/http/http_connection.hpp
@@ -6,34 +6,48 @@
#include "async_resp.hpp"
#include "authentication.hpp"
#include "complete_response_fields.hpp"
+#include "forward_unauthorized.hpp"
#include "http2_connection.hpp"
#include "http_body.hpp"
+#include "http_request.hpp"
#include "http_response.hpp"
#include "http_utility.hpp"
#include "logging.hpp"
#include "mutual_tls.hpp"
-#include "ssl_key_handler.hpp"
+#include "sessions.hpp"
#include "str_utility.hpp"
-#include "utility.hpp"
-#include <boost/asio/io_context.hpp>
+#include <boost/asio/error.hpp>
#include <boost/asio/ip/tcp.hpp>
#include <boost/asio/ssl/stream.hpp>
+#include <boost/asio/ssl/stream_base.hpp>
+#include <boost/asio/ssl/verify_context.hpp>
#include <boost/asio/steady_timer.hpp>
#include <boost/beast/_experimental/test/stream.hpp>
#include <boost/beast/core/buffers_generator.hpp>
#include <boost/beast/core/flat_static_buffer.hpp>
#include <boost/beast/http/error.hpp>
+#include <boost/beast/http/field.hpp>
#include <boost/beast/http/message_generator.hpp>
#include <boost/beast/http/parser.hpp>
#include <boost/beast/http/read.hpp>
-#include <boost/beast/http/write.hpp>
-#include <boost/beast/websocket.hpp>
+#include <boost/beast/http/status.hpp>
+#include <boost/beast/http/verb.hpp>
+#include <boost/none.hpp>
+#include <boost/optional/optional.hpp>
-#include <atomic>
+#include <bit>
#include <chrono>
+#include <cstddef>
+#include <cstdint>
+#include <functional>
#include <memory>
-#include <vector>
+#include <optional>
+#include <string>
+#include <string_view>
+#include <system_error>
+#include <type_traits>
+#include <utility>
namespace crow
{
diff --git a/http/http_request.hpp b/http/http_request.hpp
index c2e7d8d..160216b 100644
--- a/http/http_request.hpp
+++ b/http/http_request.hpp
@@ -7,13 +7,20 @@
#include <boost/asio/io_context.hpp>
#include <boost/asio/ip/address.hpp>
+#include <boost/beast/http/field.hpp>
+#include <boost/beast/http/fields.hpp>
#include <boost/beast/http/message.hpp>
-#include <boost/beast/websocket.hpp>
+#include <boost/beast/http/verb.hpp>
+#include <boost/beast/websocket/rfc6455.hpp>
+#include <boost/url/parse.hpp>
#include <boost/url/url.hpp>
+#include <boost/url/url_view.hpp>
+#include <memory>
#include <string>
#include <string_view>
#include <system_error>
+#include <utility>
namespace crow
{
@@ -146,6 +153,7 @@
bool isUpgrade() const
{
+ // NOLINTNEXTLINE(misc-include-cleaner)
return boost::beast::websocket::is_upgrade(req);
}
diff --git a/http/http_response.hpp b/http/http_response.hpp
index 93cd4ac..e6c9f72 100644
--- a/http/http_response.hpp
+++ b/http/http_response.hpp
@@ -7,9 +7,18 @@
#include <fcntl.h>
+#include <boost/beast/core/error.hpp>
+#include <boost/beast/core/file_base.hpp>
+#include <boost/beast/http/field.hpp>
+#include <boost/beast/http/fields.hpp>
#include <boost/beast/http/message.hpp>
+#include <boost/beast/http/status.hpp>
#include <nlohmann/json.hpp>
+#include <cstddef>
+#include <cstdint>
+#include <filesystem>
+#include <functional>
#include <optional>
#include <string>
#include <string_view>
diff --git a/http/http_server.hpp b/http/http_server.hpp
index 97c57ef..b48137f 100644
--- a/http/http_server.hpp
+++ b/http/http_server.hpp
@@ -2,10 +2,13 @@
// SPDX-FileCopyrightText: Copyright OpenBMC Authors
#pragma once
+#include "bmcweb_config.h"
+
#include "http_connection.hpp"
#include "logging.hpp"
#include "ssl_key_handler.hpp"
+#include <boost/asio/io_context.hpp>
#include <boost/asio/ip/address.hpp>
#include <boost/asio/ip/tcp.hpp>
#include <boost/asio/signal_set.hpp>
@@ -14,15 +17,15 @@
#include <boost/asio/steady_timer.hpp>
#include <boost/beast/core/stream_traits.hpp>
-#include <atomic>
#include <chrono>
-#include <cstdint>
-#include <filesystem>
-#include <future>
+#include <csignal>
+#include <cstddef>
+#include <ctime>
+#include <functional>
#include <memory>
#include <string>
+#include <type_traits>
#include <utility>
-#include <vector>
namespace crow
{
@@ -37,6 +40,7 @@
std::shared_ptr<boost::asio::ssl::context> adaptorCtxIn,
std::shared_ptr<boost::asio::io_context> io) :
ioService(std::move(io)), acceptor(std::move(acceptorIn)),
+ // NOLINTNEXTLINE(misc-include-cleaner)
signals(*ioService, SIGINT, SIGTERM, SIGHUP), handler(handlerIn),
adaptorCtx(std::move(adaptorCtxIn))
{}
diff --git a/http/logging.hpp b/http/logging.hpp
index 1028ca6..a8d85e2 100644
--- a/http/logging.hpp
+++ b/http/logging.hpp
@@ -4,12 +4,16 @@
#include "bmcweb_config.h"
+#include <algorithm>
+#include <array>
#include <bit>
+#include <cstddef>
+#include <cstdio>
#include <format>
-#include <iostream>
#include <source_location>
+#include <string>
#include <string_view>
-#include <system_error>
+#include <type_traits>
// NOLINTBEGIN(readability-convert-member-functions-to-static, cert-dcl58-cpp)
template <>
diff --git a/http/mutual_tls.hpp b/http/mutual_tls.hpp
index e37bef5..aec7ae1 100644
--- a/http/mutual_tls.hpp
+++ b/http/mutual_tls.hpp
@@ -2,12 +2,13 @@
// SPDX-FileCopyrightText: Copyright OpenBMC Authors
#pragma once
-#include "persistent_data.hpp"
+#include "sessions.hpp"
#include <boost/asio/ip/address.hpp>
#include <boost/asio/ssl/verify_context.hpp>
#include <memory>
+#include <string>
#include <string_view>
std::string getUsernameFromCommonName(std::string_view commonName);
diff --git a/http/mutual_tls_meta.hpp b/http/mutual_tls_meta.hpp
index 499d9a8..d87ce19 100644
--- a/http/mutual_tls_meta.hpp
+++ b/http/mutual_tls_meta.hpp
@@ -4,6 +4,7 @@
#include "logging.hpp"
+#include <cstddef>
#include <format>
#include <optional>
#include <string>
diff --git a/http/parsing.hpp b/http/parsing.hpp
index 3f83e49..b129402 100644
--- a/http/parsing.hpp
+++ b/http/parsing.hpp
@@ -2,14 +2,15 @@
// SPDX-FileCopyrightText: Copyright OpenBMC Authors
#pragma once
+#include "bmcweb_config.h"
+
#include "http/http_request.hpp"
#include "http_utility.hpp"
#include "logging.hpp"
-#include "str_utility.hpp"
+#include <boost/beast/http/field.hpp>
#include <nlohmann/json.hpp>
-#include <algorithm>
#include <cctype>
#include <string_view>
diff --git a/http/routing.hpp b/http/routing.hpp
index 010ee2d..6c39939 100644
--- a/http/routing.hpp
+++ b/http/routing.hpp
@@ -4,33 +4,30 @@
#include "async_resp.hpp"
#include "dbus_privileges.hpp"
-#include "dbus_utility.hpp"
-#include "error_messages.hpp"
#include "http_request.hpp"
#include "http_response.hpp"
#include "logging.hpp"
-#include "privileges.hpp"
#include "routing/baserule.hpp"
#include "routing/dynamicrule.hpp"
-#include "routing/sserule.hpp"
#include "routing/taggedrule.hpp"
-#include "routing/websocketrule.hpp"
-#include "sessions.hpp"
-#include "utility.hpp"
-#include "utils/dbus_utils.hpp"
#include "verb.hpp"
-#include "websocket.hpp"
+#include <boost/beast/http/field.hpp>
+#include <boost/beast/http/status.hpp>
#include <boost/container/flat_map.hpp>
#include <boost/container/small_vector.hpp>
#include <algorithm>
+#include <array>
#include <cerrno>
#include <cstdint>
#include <cstdlib>
-#include <limits>
+#include <format>
+#include <functional>
#include <memory>
#include <optional>
+#include <stdexcept>
+#include <string>
#include <string_view>
#include <tuple>
#include <utility>
diff --git a/http/routing/baserule.hpp b/http/routing/baserule.hpp
index 770405b..8ef1afc 100644
--- a/http/routing/baserule.hpp
+++ b/http/routing/baserule.hpp
@@ -9,9 +9,14 @@
#include <boost/asio/ip/tcp.hpp>
#include <boost/asio/ssl/stream.hpp>
+#include <boost/beast/http/status.hpp>
+#include <cstddef>
+#include <limits>
#include <memory>
#include <string>
+#include <utility>
+#include <vector>
namespace crow
{
diff --git a/http/routing/dynamicrule.hpp b/http/routing/dynamicrule.hpp
index 35753b7..38db744 100644
--- a/http/routing/dynamicrule.hpp
+++ b/http/routing/dynamicrule.hpp
@@ -1,16 +1,20 @@
// SPDX-License-Identifier: Apache-2.0
// SPDX-FileCopyrightText: Copyright OpenBMC Authors
#pragma once
-#include "baserule.hpp"
-#include "ruleparametertraits.hpp"
-#include "websocket.hpp"
-#include <boost/beast/http/verb.hpp>
+#include "async_resp.hpp"
+#include "baserule.hpp"
+#include "http_request.hpp"
+#include "ruleparametertraits.hpp"
+
+#include <boost/callable_traits/args.hpp>
#include <functional>
-#include <limits>
+#include <memory>
+#include <stdexcept>
#include <string>
-#include <type_traits>
+#include <tuple>
+#include <vector>
namespace crow
{
diff --git a/http/routing/ruleparametertraits.hpp b/http/routing/ruleparametertraits.hpp
index ed5311e..0d5417d 100644
--- a/http/routing/ruleparametertraits.hpp
+++ b/http/routing/ruleparametertraits.hpp
@@ -2,11 +2,15 @@
// SPDX-FileCopyrightText: Copyright OpenBMC Authors
#pragma once
+#include "privileges.hpp"
#include "sserule.hpp"
+#include "verb.hpp"
#include "websocketrule.hpp"
#include <boost/beast/http/verb.hpp>
+#include <array>
+#include <cstddef>
#include <initializer_list>
#include <optional>
diff --git a/http/routing/sserule.hpp b/http/routing/sserule.hpp
index 0c9295e..e32af57 100644
--- a/http/routing/sserule.hpp
+++ b/http/routing/sserule.hpp
@@ -2,16 +2,22 @@
// SPDX-FileCopyrightText: Copyright OpenBMC Authors
#pragma once
+#include "async_resp.hpp"
#include "baserule.hpp"
#include "http_request.hpp"
#include "http_response.hpp"
+#include "logging.hpp"
#include "server_sent_event.hpp"
-#include <boost/beast/http/verb.hpp>
+#include <boost/asio/ip/tcp.hpp>
+#include <boost/asio/ssl/stream.hpp>
+#include <boost/beast/http/status.hpp>
#include <functional>
#include <memory>
#include <string>
+#include <utility>
+#include <vector>
namespace crow
{
diff --git a/http/routing/taggedrule.hpp b/http/routing/taggedrule.hpp
index c6d60d4..b785d88 100644
--- a/http/routing/taggedrule.hpp
+++ b/http/routing/taggedrule.hpp
@@ -1,14 +1,16 @@
// SPDX-License-Identifier: Apache-2.0
// SPDX-FileCopyrightText: Copyright OpenBMC Authors
#pragma once
+#include "async_resp.hpp"
#include "baserule.hpp"
-#include "dynamicrule.hpp"
+#include "http_request.hpp"
#include "ruleparametertraits.hpp"
-#include <boost/beast/http/verb.hpp>
-
+#include <functional>
#include <memory>
+#include <stdexcept>
#include <string>
+#include <type_traits>
#include <vector>
namespace crow
diff --git a/http/routing/websocketrule.hpp b/http/routing/websocketrule.hpp
index 61743d5..0341022 100644
--- a/http/routing/websocketrule.hpp
+++ b/http/routing/websocketrule.hpp
@@ -2,13 +2,21 @@
// SPDX-FileCopyrightText: Copyright OpenBMC Authors
#pragma once
+#include "async_resp.hpp"
#include "baserule.hpp"
+#include "http_request.hpp"
+#include "logging.hpp"
#include "websocket.hpp"
-#include <boost/beast/http/verb.hpp>
+#include <boost/asio/ip/tcp.hpp>
+#include <boost/asio/ssl/stream.hpp>
+#include <boost/beast/http/status.hpp>
+#include <functional>
#include <memory>
#include <string>
+#include <string_view>
+#include <utility>
#include <vector>
namespace crow
diff --git a/http/server_sent_event.hpp b/http/server_sent_event.hpp
index dd28705..a0105f1 100644
--- a/http/server_sent_event.hpp
+++ b/http/server_sent_event.hpp
@@ -4,17 +4,27 @@
#include "boost_formatters.hpp"
#include "http_body.hpp"
#include "http_request.hpp"
-#include "http_response.hpp"
+#include "logging.hpp"
#include <boost/asio/buffer.hpp>
+#include <boost/asio/error.hpp>
+#include <boost/asio/io_context.hpp>
#include <boost/asio/steady_timer.hpp>
+#include <boost/beast/core/error.hpp>
#include <boost/beast/core/multi_buffer.hpp>
-#include <boost/beast/websocket.hpp>
+#include <boost/beast/http/field.hpp>
+#include <boost/beast/http/serializer.hpp>
+#include <boost/beast/http/write.hpp>
#include <array>
+#include <chrono>
#include <cstddef>
#include <functional>
+#include <memory>
#include <optional>
+#include <string>
+#include <string_view>
+#include <utility>
namespace crow
{
diff --git a/http/utility.hpp b/http/utility.hpp
index edc34ad..48985fd 100644
--- a/http/utility.hpp
+++ b/http/utility.hpp
@@ -4,25 +4,23 @@
#include "bmcweb_config.h"
-#include <boost/callable_traits.hpp>
-#include <boost/url/parse.hpp>
+#include <sys/types.h>
+
+#include <boost/url/segments_view.hpp>
#include <boost/url/url.hpp>
-#include <boost/url/url_view.hpp>
#include <boost/url/url_view_base.hpp>
#include <nlohmann/json.hpp>
#include <array>
-#include <chrono>
+#include <concepts>
#include <cstddef>
#include <cstdint>
#include <ctime>
#include <functional>
-#include <iomanip>
+#include <initializer_list>
#include <limits>
-#include <stdexcept>
#include <string>
#include <string_view>
-#include <tuple>
#include <type_traits>
#include <utility>
#include <variant>
diff --git a/http/verb.hpp b/http/verb.hpp
index 92bc360..e24ca88 100644
--- a/http/verb.hpp
+++ b/http/verb.hpp
@@ -4,7 +4,11 @@
#include <boost/beast/http/verb.hpp>
+#include <cstddef>
#include <optional>
+// boost/beast/http/verb for whatever reason requires this?
+// NOLINTNEXTLINE(misc-include-cleaner)
+#include <ostream>
#include <string_view>
enum class HttpVerb
diff --git a/http/websocket.hpp b/http/websocket.hpp
index 6e5d1ed..1f22890 100644
--- a/http/websocket.hpp
+++ b/http/websocket.hpp
@@ -1,18 +1,40 @@
// SPDX-License-Identifier: Apache-2.0
// SPDX-FileCopyrightText: Copyright OpenBMC Authors
#pragma once
-#include "async_resp.hpp"
+#include "bmcweb_config.h"
+
+#include "boost_formatters.hpp"
#include "http_body.hpp"
#include "http_request.hpp"
+#include "logging.hpp"
+#include "ossl_random.hpp"
+#include "sessions.hpp"
#include <boost/asio/buffer.hpp>
+#include <boost/asio/error.hpp>
+#include <boost/asio/io_context.hpp>
#include <boost/asio/ssl/error.hpp>
+#include <boost/beast/core/error.hpp>
#include <boost/beast/core/multi_buffer.hpp>
-#include <boost/beast/websocket.hpp>
+#include <boost/beast/core/role.hpp>
+#include <boost/beast/http/field.hpp>
+#include <boost/beast/http/message.hpp>
+#include <boost/beast/http/status.hpp>
+#include <boost/beast/websocket/error.hpp>
+#include <boost/beast/websocket/rfc6455.hpp>
+#include <boost/beast/websocket/stream.hpp>
+#include <boost/beast/websocket/stream_base.hpp>
+#include <boost/url/url_view.hpp>
+
+// NOLINTNEXTLINE(misc-include-cleaner)
#include <boost/beast/websocket/ssl.hpp>
-#include <array>
+#include <cstddef>
#include <functional>
+#include <memory>
+#include <string>
+#include <string_view>
+#include <utility>
namespace crow
{