CCF
Loading...
Searching...
No Matches
http_responder.h
Go to the documentation of this file.
1// Copyright (c) Microsoft Corporation. All rights reserved.
2// Licensed under the Apache 2.0 License.
3#pragma once
4
5#include "ccf/http_consts.h"
7#include "ccf/odata_error.h"
8
9#include <functional>
10
11namespace ccf::http
12{
13 using StreamOnCloseCallback = std::function<void(void)>;
14
16 {
17 public:
18 virtual ~HTTPResponder() = default;
19
20 virtual bool send_response(
21 http_status status_code,
22 http::HeaderMap&& headers,
23 http::HeaderMap&& trailers,
24 std::span<const uint8_t> body) = 0;
25
26 virtual bool start_stream(
27 http_status status, const http::HeaderMap& headers) = 0;
28
29 virtual bool stream_data(std::span<const uint8_t> data) = 0;
30
31 virtual bool close_stream(http::HeaderMap&& trailers) = 0;
32
34
36 {
37 nlohmann::json body = ccf::ODataErrorResponse{
38 ccf::ODataError{std::move(error.code), std::move(error.msg)}};
39 const auto s = body.dump();
40
41 http::HeaderMap headers;
42 headers[http::headers::CONTENT_TYPE] =
43 http::headervalues::contenttype::JSON;
44
45 return send_response(
46 error.status,
47 std::move(headers),
48 {},
49 {(const uint8_t*)s.data(), s.size()});
50 }
51 };
52}
Definition http_responder.h:16
virtual bool close_stream(http::HeaderMap &&trailers)=0
virtual bool stream_data(std::span< const uint8_t > data)=0
virtual bool send_response(http_status status_code, http::HeaderMap &&headers, http::HeaderMap &&trailers, std::span< const uint8_t > body)=0
virtual ~HTTPResponder()=default
bool send_odata_error_response(ccf::ErrorDetails &&error)
Definition http_responder.h:35
virtual bool start_stream(http_status status, const http::HeaderMap &headers)=0
virtual bool set_on_stream_close_callback(StreamOnCloseCallback cb)=0
Definition http_accept.h:13
std::map< std::string, std::string, std::less<> > HeaderMap
Definition http_header_map.h:10
std::function< void(void)> StreamOnCloseCallback
Definition http_responder.h:13
@ error
Definition tls_session.h:24
llhttp_status http_status
Definition http_status.h:9
Definition odata_error.h:58
Definition odata_error.h:50
Definition odata_error.h:37