blob: eb419b607f56d2f5343457bc62dd62cdfb9ae8f7 [file] [log] [blame]
vasilvv098ba772021-03-12 17:34:04 -08001// Copyright (c) 2021 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "quic/test_tools/quic_test_backend.h"
6
vasilvv316f3762021-03-31 13:49:30 -07007#include <cstring>
8#include <memory>
9
10#include "absl/strings/string_view.h"
11#include "quic/core/quic_buffer_allocator.h"
vasilvv316f3762021-03-31 13:49:30 -070012#include "quic/core/quic_simple_buffer_allocator.h"
13#include "quic/core/web_transport_interface.h"
14#include "quic/platform/api/quic_mem_slice.h"
15#include "quic/tools/web_transport_test_visitors.h"
16
vasilvv098ba772021-03-12 17:34:04 -080017namespace quic {
18namespace test {
19
20QuicSimpleServerBackend::WebTransportResponse
21QuicTestBackend::ProcessWebTransportRequest(
vasilvv316f3762021-03-31 13:49:30 -070022 const spdy::Http2HeaderBlock& request_headers,
23 WebTransportSession* session) {
vasilvv098ba772021-03-12 17:34:04 -080024 if (!SupportsWebTransport()) {
vasilvv316f3762021-03-31 13:49:30 -070025 return QuicSimpleServerBackend::ProcessWebTransportRequest(request_headers,
26 session);
27 }
28
29 auto path_it = request_headers.find(":path");
30 if (path_it == request_headers.end()) {
31 WebTransportResponse response;
32 response.response_headers[":status"] = "400";
33 return response;
34 }
35 absl::string_view path = path_it->second;
36 if (path == "/echo") {
37 WebTransportResponse response;
38 response.response_headers[":status"] = "200";
QUICHE team59de4b02021-04-27 02:46:00 -070039 response.visitor =
40 std::make_unique<EchoWebTransportSessionVisitor>(session);
vasilvv316f3762021-03-31 13:49:30 -070041 return response;
vasilvv098ba772021-03-12 17:34:04 -080042 }
43
44 WebTransportResponse response;
vasilvv316f3762021-03-31 13:49:30 -070045 response.response_headers[":status"] = "404";
vasilvv098ba772021-03-12 17:34:04 -080046 return response;
47}
48
49} // namespace test
50} // namespace quic