Sane C++ Libraries
C++ Platform Abstraction Libraries
Loading...
Searching...
No Matches
HttpRouter.h
1// Copyright (c) Stefano Cristiano
2// SPDX-License-Identifier: MIT
3#pragma once
4#include "../Foundation/Result.h"
5#include "../Foundation/Span.h"
6#include "../Foundation/StringSpan.h"
7#include "HttpExport.h"
8#include "HttpParser.h"
9
10namespace SC
11{
14
15struct SC_HTTP_EXPORT HttpRouteParam
16{
17 StringSpan name;
18 StringSpan value;
19};
20
21struct SC_HTTP_EXPORT HttpRoute
22{
23 HttpParser::Method method = HttpParser::Method::HttpGET;
24 StringSpan pathPattern = {};
25};
26
27enum class HttpRouteMatchStatus
28{
29 Matched,
30 MethodNotAllowed,
31 NotFound,
32 TooManyParams,
33};
34
35struct SC_HTTP_EXPORT HttpRouteMatch
36{
37 HttpRouteMatchStatus status = HttpRouteMatchStatus::NotFound;
38 const HttpRoute* route = nullptr;
39 size_t numParams = 0;
40};
41
43struct SC_HTTP_EXPORT HttpRouter
44{
45 Result init(Span<const HttpRoute> routeStorage);
46
47 Result match(HttpParser::Method method, StringSpan requestTarget, Span<HttpRouteParam> params,
48 HttpRouteMatch& match) const;
49
50 Result formatAllowHeader(StringSpan requestTarget, Span<char> storage, StringSpan& allow) const;
51
52 private:
54};
55
57} // namespace SC
Method
Method of the current request / response.
Definition HttpParser.h:19
Definition HttpRouter.h:36
Definition HttpRouter.h:16
Definition HttpRouter.h:22
Tiny allocation-free method/path router over caller-owned routes.
Definition HttpRouter.h:44
An ascii string used as boolean result. SC_TRY macro forwards errors to caller.
Definition Result.h:13
View over a contiguous sequence of items (pointer + size in elements).
Definition Span.h:29
An read-only view over a string (to avoid including Strings library when parsing is not needed).
Definition StringSpan.h:37