From a13e3bf5f6bc6a42100eb747f2bc63faeafaab18 Mon Sep 17 00:00:00 2001 From: jadit19 Date: Mon, 22 Sep 2025 08:44:05 +0530 Subject: [PATCH] fix formatting --- .clang-format | 322 ++++++++++++++++++++ .gitignore | 2 + include/expresso/core/router.h | 82 ++--- include/expresso/core/server.h | 5 +- include/expresso/enums/status_code.h | 2 +- include/expresso/helpers/response.h | 8 +- include/expresso/messages/cookie.h | 2 +- include/expresso/messages/request.h | 8 +- include/expresso/messages/response.h | 18 +- include/expresso/middleware/cacher.h | 4 +- include/expresso/middleware/cookie_parser.h | 4 +- include/expresso/middleware/cors.h | 4 +- include/expresso/middleware/date.h | 2 + include/expresso/middleware/middleware.h | 6 +- include/expresso/middleware/static_serve.h | 10 +- include/expresso/middleware/version.h | 6 +- src/core/router.cpp | 101 +++--- src/core/server.cpp | 40 +-- src/helpers/response.cpp | 16 +- src/messages/cookie.cpp | 4 +- src/messages/request.cpp | 14 +- src/messages/response.cpp | 38 +-- src/middleware/cacher.cpp | 6 +- src/middleware/cookie_parser.cpp | 6 +- src/middleware/cors.cpp | 12 +- src/middleware/date.cpp | 4 +- src/middleware/middleware.cpp | 2 +- src/middleware/static_serve.cpp | 25 +- src/middleware/version.cpp | 5 +- 29 files changed, 546 insertions(+), 212 deletions(-) create mode 100644 .clang-format diff --git a/.clang-format b/.clang-format new file mode 100644 index 0000000..2a2c48e --- /dev/null +++ b/.clang-format @@ -0,0 +1,322 @@ +--- +Language: Cpp +AccessModifierOffset: -1 +AlignAfterOpenBracket: Align +AlignArrayOfStructures: None +AlignConsecutiveAssignments: + Enabled: false + AcrossEmptyLines: false + AcrossComments: false + AlignCompound: false + AlignFunctionDeclarations: false + AlignFunctionPointers: false + PadOperators: true +AlignConsecutiveBitFields: + Enabled: false + AcrossEmptyLines: false + AcrossComments: false + AlignCompound: false + AlignFunctionDeclarations: false + AlignFunctionPointers: false + PadOperators: false +AlignConsecutiveDeclarations: + Enabled: false + AcrossEmptyLines: false + AcrossComments: false + AlignCompound: false + AlignFunctionDeclarations: true + AlignFunctionPointers: false + PadOperators: false +AlignConsecutiveMacros: + Enabled: false + AcrossEmptyLines: false + AcrossComments: false + AlignCompound: false + AlignFunctionDeclarations: false + AlignFunctionPointers: false + PadOperators: false +AlignConsecutiveShortCaseStatements: + Enabled: false + AcrossEmptyLines: false + AcrossComments: false + AlignCaseArrows: false + AlignCaseColons: false +AlignConsecutiveTableGenBreakingDAGArgColons: + Enabled: false + AcrossEmptyLines: false + AcrossComments: false + AlignCompound: false + AlignFunctionDeclarations: false + AlignFunctionPointers: false + PadOperators: false +AlignConsecutiveTableGenCondOperatorColons: + Enabled: false + AcrossEmptyLines: false + AcrossComments: false + AlignCompound: false + AlignFunctionDeclarations: false + AlignFunctionPointers: false + PadOperators: false +AlignConsecutiveTableGenDefinitionColons: + Enabled: false + AcrossEmptyLines: false + AcrossComments: false + AlignCompound: false + AlignFunctionDeclarations: false + AlignFunctionPointers: false + PadOperators: false +AlignEscapedNewlines: Left +AlignOperands: Align +AlignTrailingComments: + Kind: Always + OverEmptyLines: 0 +AllowAllArgumentsOnNextLine: true +AllowAllParametersOfDeclarationOnNextLine: true +AllowBreakBeforeNoexceptSpecifier: Never +AllowShortBlocksOnASingleLine: Never +AllowShortCaseExpressionOnASingleLine: true +AllowShortCaseLabelsOnASingleLine: false +AllowShortCompoundRequirementOnASingleLine: true +AllowShortEnumsOnASingleLine: true +AllowShortFunctionsOnASingleLine: All +AllowShortIfStatementsOnASingleLine: WithoutElse +AllowShortLambdasOnASingleLine: All +AllowShortLoopsOnASingleLine: true +AllowShortNamespacesOnASingleLine: false +AlwaysBreakAfterDefinitionReturnType: None +AlwaysBreakBeforeMultilineStrings: true +AttributeMacros: + - __capability +BinPackArguments: true +BinPackParameters: BinPack +BitFieldColonSpacing: Both +BraceWrapping: + AfterCaseLabel: false + AfterClass: false + AfterControlStatement: Never + AfterEnum: false + AfterExternBlock: false + AfterFunction: false + AfterNamespace: false + AfterObjCDeclaration: false + AfterStruct: false + AfterUnion: false + BeforeCatch: false + BeforeElse: false + BeforeLambdaBody: false + BeforeWhile: false + IndentBraces: false + SplitEmptyFunction: true + SplitEmptyRecord: true + SplitEmptyNamespace: true +BreakAdjacentStringLiterals: true +BreakAfterAttributes: Leave +BreakAfterJavaFieldAnnotations: false +BreakAfterReturnType: None +BreakArrays: true +BreakBeforeBinaryOperators: None +BreakBeforeConceptDeclarations: Always +BreakBeforeBraces: Attach +BreakBeforeInlineASMColon: OnlyMultiline +BreakBeforeTernaryOperators: true +BreakBinaryOperations: Never +BreakConstructorInitializers: BeforeColon +BreakFunctionDefinitionParameters: false +BreakInheritanceList: BeforeColon +BreakStringLiterals: true +BreakTemplateDeclarations: Yes +ColumnLimit: 80 +CommentPragmas: '^ IWYU pragma:' +CompactNamespaces: false +ConstructorInitializerIndentWidth: 4 +ContinuationIndentWidth: 4 +Cpp11BracedListStyle: true +DerivePointerAlignment: true +DisableFormat: false +EmptyLineAfterAccessModifier: Never +EmptyLineBeforeAccessModifier: LogicalBlock +ExperimentalAutoDetectBinPacking: false +FixNamespaceComments: true +ForEachMacros: + - foreach + - Q_FOREACH + - BOOST_FOREACH +IfMacros: + - KJ_IF_MAYBE +IncludeBlocks: Regroup +IncludeCategories: + - Regex: '^' + Priority: 2 + SortPriority: 0 + CaseSensitive: false + - Regex: '^<.*\.h>' + Priority: 1 + SortPriority: 0 + CaseSensitive: false + - Regex: '^<.*' + Priority: 2 + SortPriority: 0 + CaseSensitive: false + - Regex: '.*' + Priority: 3 + SortPriority: 0 + CaseSensitive: false +IncludeIsMainRegex: '([-_](test|unittest))?$' +IncludeIsMainSourceRegex: '' +IndentAccessModifiers: false +IndentCaseBlocks: false +IndentCaseLabels: true +IndentExportBlock: true +IndentExternBlock: AfterExternBlock +IndentGotoLabels: true +IndentPPDirectives: None +IndentRequiresClause: true +IndentWidth: 2 +IndentWrappedFunctionNames: false +InsertBraces: false +InsertNewlineAtEOF: false +InsertTrailingCommas: None +IntegerLiteralSeparator: + Binary: 0 + BinaryMinDigits: 0 + Decimal: 0 + DecimalMinDigits: 0 + Hex: 0 + HexMinDigits: 0 +JavaScriptQuotes: Leave +JavaScriptWrapImports: true +KeepEmptyLines: + AtEndOfFile: false + AtStartOfBlock: false + AtStartOfFile: true +KeepFormFeed: false +LambdaBodyIndentation: Signature +LineEnding: DeriveLF +MacroBlockBegin: '' +MacroBlockEnd: '' +MainIncludeChar: Quote +MaxEmptyLinesToKeep: 1 +NamespaceIndentation: None +ObjCBinPackProtocolList: Never +ObjCBlockIndentWidth: 2 +ObjCBreakBeforeNestedBlockParam: true +ObjCSpaceAfterProperty: false +ObjCSpaceBeforeProtocolList: true +PackConstructorInitializers: NextLine +PenaltyBreakAssignment: 2 +PenaltyBreakBeforeFirstCallParameter: 1 +PenaltyBreakBeforeMemberAccess: 150 +PenaltyBreakComment: 300 +PenaltyBreakFirstLessLess: 120 +PenaltyBreakOpenParenthesis: 0 +PenaltyBreakScopeResolution: 500 +PenaltyBreakString: 1000 +PenaltyBreakTemplateDeclaration: 10 +PenaltyExcessCharacter: 1000000 +PenaltyIndentedWhitespace: 0 +PenaltyReturnTypeOnItsOwnLine: 200 +PointerAlignment: Left +PPIndentWidth: -1 +QualifierAlignment: Leave +RawStringFormats: + - Language: Cpp + Delimiters: + - cc + - CC + - cpp + - Cpp + - CPP + - 'c++' + - 'C++' + CanonicalDelimiter: '' + BasedOnStyle: google + - Language: TextProto + Delimiters: + - pb + - PB + - proto + - PROTO + EnclosingFunctions: + - EqualsProto + - EquivToProto + - PARSE_PARTIAL_TEXT_PROTO + - PARSE_TEST_PROTO + - PARSE_TEXT_PROTO + - ParseTextOrDie + - ParseTextProtoOrDie + - ParseTestProto + - ParsePartialTestProto + CanonicalDelimiter: pb + BasedOnStyle: google +ReferenceAlignment: Pointer +ReflowComments: Always +RemoveBracesLLVM: false +RemoveEmptyLinesInUnwrappedLines: false +RemoveParentheses: Leave +RemoveSemicolon: false +RequiresClausePosition: OwnLine +RequiresExpressionIndentation: OuterScope +SeparateDefinitionBlocks: Leave +ShortNamespaceLines: 1 +SkipMacroDefinitionBody: false +SortIncludes: CaseSensitive +SortJavaStaticImport: Before +SortUsingDeclarations: LexicographicNumeric +SpaceAfterCStyleCast: false +SpaceAfterLogicalNot: false +SpaceAfterTemplateKeyword: true +SpaceAroundPointerQualifiers: Default +SpaceBeforeAssignmentOperators: true +SpaceBeforeCaseColon: false +SpaceBeforeCpp11BracedList: false +SpaceBeforeCtorInitializerColon: true +SpaceBeforeInheritanceColon: true +SpaceBeforeJsonColon: false +SpaceBeforeParens: ControlStatements +SpaceBeforeParensOptions: + AfterControlStatements: true + AfterForeachMacros: true + AfterFunctionDefinitionName: false + AfterFunctionDeclarationName: false + AfterIfMacros: true + AfterOverloadedOperator: false + AfterPlacementOperator: true + AfterRequiresInClause: false + AfterRequiresInExpression: false + BeforeNonEmptyParentheses: false +SpaceBeforeRangeBasedForLoopColon: true +SpaceBeforeSquareBrackets: false +SpaceInEmptyBlock: false +SpacesBeforeTrailingComments: 2 +SpacesInAngles: Never +SpacesInContainerLiterals: true +SpacesInLineCommentPrefix: + Minimum: 1 + Maximum: -1 +SpacesInParens: Never +SpacesInParensOptions: + ExceptDoubleParentheses: false + InCStyleCasts: false + InConditionalStatements: false + InEmptyParentheses: false + Other: false +SpacesInSquareBrackets: false +Standard: Auto +StatementAttributeLikeMacros: + - Q_EMIT +StatementMacros: + - Q_UNUSED + - QT_REQUIRE_VERSION +TableGenBreakInsideDAGArg: DontBreak +TabWidth: 8 +UseTab: Never +VerilogBreakBetweenInstancePorts: true +WhitespaceSensitiveMacros: + - BOOST_PP_STRINGIZE + - CF_SWIFT_NAME + - NS_SWIFT_NAME + - PP_STRINGIZE + - STRINGIZE +WrapNamespaceBodyWithEmptyLines: Leave +... + diff --git a/.gitignore b/.gitignore index 5a20602..8b69501 100644 --- a/.gitignore +++ b/.gitignore @@ -33,7 +33,9 @@ # Folders .vscode +.idea build +cmake-build-debug # Secrets *.env \ No newline at end of file diff --git a/include/expresso/core/router.h b/include/expresso/core/router.h index 12e8371..a1c2f5e 100644 --- a/include/expresso/core/router.h +++ b/include/expresso/core/router.h @@ -8,68 +8,68 @@ namespace core { class Router { private: - std::map - getMap; - std::map - postMap; - std::map - putMap; - std::map - patchMap; - std::map - deleteMap; - std::map - optionsMap; - std::map routerMap; + std::map + getMap; + std::map + postMap; + std::map + putMap; + std::map + patchMap; + std::map + deleteMap; + std::map + optionsMap; + std::map routerMap; - Router *paramRouter; + Router* paramRouter; std::string paramRouterParam; std::vector> middlewares; - bool handleMiddlewares(expresso::messages::Request &request, - expresso::messages::Response &response); - std::map & + bool handleMiddlewares(expresso::messages::Request& request, + expresso::messages::Response& response); + std::map& fetchMapFromMethod(mochios::enums::method method); void addRoute(mochios::enums::method method, std::string path, - void (*handler)(expresso::messages::Request &request, - expresso::messages::Response &response)); + void (*handler)(expresso::messages::Request& request, + expresso::messages::Response& response)); public: Router(); ~Router(); void get(std::string path, - void (*handler)(expresso::messages::Request &request, - expresso::messages::Response &response)); + void (*handler)(expresso::messages::Request& request, + expresso::messages::Response& response)); void post(std::string path, - void (*handler)(expresso::messages::Request &request, - expresso::messages::Response &response)); + void (*handler)(expresso::messages::Request& request, + expresso::messages::Response& response)); void put(std::string path, - void (*handler)(expresso::messages::Request &request, - expresso::messages::Response &response)); + void (*handler)(expresso::messages::Request& request, + expresso::messages::Response& response)); void patch(std::string path, - void (*handler)(expresso::messages::Request &request, - expresso::messages::Response &response)); + void (*handler)(expresso::messages::Request& request, + expresso::messages::Response& response)); void del(std::string path, - void (*handler)(expresso::messages::Request &request, - expresso::messages::Response &response)); + void (*handler)(expresso::messages::Request& request, + expresso::messages::Response& response)); void options(std::string path, - void (*handler)(expresso::messages::Request &request, - expresso::messages::Response &response)); + void (*handler)(expresso::messages::Request& request, + expresso::messages::Response& response)); - void use(std::string path, Router *router); + void use(std::string path, Router* router); void use(std::unique_ptr middleware); - void handleRequest(expresso::messages::Request &request, - expresso::messages::Response &response); + void handleRequest(expresso::messages::Request& request, + expresso::messages::Response& response); }; } // namespace core diff --git a/include/expresso/core/server.h b/include/expresso/core/server.h index bfce4a5..6b48998 100644 --- a/include/expresso/core/server.h +++ b/include/expresso/core/server.h @@ -21,13 +21,14 @@ class Server : public Router { size_t maxConnections; struct sockaddr_in address; - mochios::enums::method getMethodFromString(const std::string& method) noexcept(false); + mochios::enums::method getMethodFromString( + const std::string& method) noexcept(false); void setupMiddlewares(); void acceptConnections(); void handleConnection(int clientSocket); - expresso::messages::Request makeRequest(std::string &request) noexcept(false); + expresso::messages::Request makeRequest(std::string& request) noexcept(false); nexus::pool threadPool; public: diff --git a/include/expresso/enums/status_code.h b/include/expresso/enums/status_code.h index 2125c5b..62bf6ce 100644 --- a/include/expresso/enums/status_code.h +++ b/include/expresso/enums/status_code.h @@ -120,4 +120,4 @@ enum STATUS_CODE { } // namespace enums -} // namespace expresso +} // namespace expresso \ No newline at end of file diff --git a/include/expresso/helpers/response.h b/include/expresso/helpers/response.h index 7222b12..24b63f7 100644 --- a/include/expresso/helpers/response.h +++ b/include/expresso/helpers/response.h @@ -13,13 +13,13 @@ namespace helpers { static const short CHUNK_SIZE = 1024; -std::string getAvailableFile(const std::string &path); +std::string getAvailableFile(const std::string& path); -const std::string generateETag(const std::string &data); +const std::string generateETag(const std::string& data); -bool sendChunkedData(const int &socket, const std::string &data); +bool sendChunkedData(const int& socket, const std::string& data); -bool sendFileInChunks(const int &socket, const std::string &path); +bool sendFileInChunks(const int& socket, const std::string& path); } // namespace helpers diff --git a/include/expresso/messages/cookie.h b/include/expresso/messages/cookie.h index 5eb69d6..066b96d 100644 --- a/include/expresso/messages/cookie.h +++ b/include/expresso/messages/cookie.h @@ -9,7 +9,7 @@ namespace messages { class Cookie : public mochios::messages::Cookie { public: Cookie(); - Cookie(const std::string &data); + Cookie(const std::string& data); ~Cookie(); }; diff --git a/include/expresso/messages/request.h b/include/expresso/messages/request.h index 4f394b2..9b35615 100644 --- a/include/expresso/messages/request.h +++ b/include/expresso/messages/request.h @@ -11,7 +11,7 @@ namespace messages { class Request : public mochios::messages::Request { private: public: - Request(const std::string &path); + Request(const std::string& path); ~Request(); bool xhr; @@ -24,13 +24,13 @@ class Request : public mochios::messages::Request { // tempPath used internally for referencing. DO NOT USE IT! Use `path` // instead. std::string tempPath; - std::vector cookies; + std::vector cookies; - expresso::messages::Response *res; + expresso::messages::Response* res; const void print() const override; }; } // namespace messages -} // namespace expresso +} // namespace expresso \ No newline at end of file diff --git a/include/expresso/messages/response.h b/include/expresso/messages/response.h index fe2d9d0..d776a12 100644 --- a/include/expresso/messages/response.h +++ b/include/expresso/messages/response.h @@ -25,7 +25,7 @@ class Response : public mochios::messages::Response { int socket; std::string message; - std::vector cookies; + std::vector cookies; void sendToClient(); void sendHeaders(); @@ -35,17 +35,17 @@ class Response : public mochios::messages::Response { ~Response(); void set(std::string headerName, std::string headerValue); - void setCookie(Cookie *cookie); + void setCookie(Cookie* cookie); std::string get(std::string headerName); - Response &status(expresso::enums::STATUS_CODE code); - Response &send(std::string response); - Response &json(std::string response); - Response &json(json::object response); + Response& status(expresso::enums::STATUS_CODE code); + Response& send(std::string response); + Response& json(std::string response); + Response& json(json::object response); - void sendFile(const std::string &path, int64_t start = -1, int64_t end = -1); - void sendFiles(const std::set &paths, - const std::string &zipFileName = "download.zip"); + void sendFile(const std::string& path, int64_t start = -1, int64_t end = -1); + void sendFiles(const std::set& paths, + const std::string& zipFileName = "download.zip"); void sendNotFound(); void sendInvalidRange(); diff --git a/include/expresso/middleware/cacher.h b/include/expresso/middleware/cacher.h index 4b0ef32..62a2658 100644 --- a/include/expresso/middleware/cacher.h +++ b/include/expresso/middleware/cacher.h @@ -17,8 +17,8 @@ class Cacher : public Middleware { Cacher(uint32_t maxAge = 3600, bool isPrivate = false); ~Cacher(); - bool use(expresso::messages::Request &req, - expresso::messages::Response &res) override; + bool use(expresso::messages::Request& req, + expresso::messages::Response& res) override; }; } // namespace middleware diff --git a/include/expresso/middleware/cookie_parser.h b/include/expresso/middleware/cookie_parser.h index 075e062..9fbe655 100644 --- a/include/expresso/middleware/cookie_parser.h +++ b/include/expresso/middleware/cookie_parser.h @@ -12,8 +12,8 @@ class CookieParser : public Middleware { CookieParser(); ~CookieParser(); - bool use(expresso::messages::Request &req, - expresso::messages::Response &res) override; + bool use(expresso::messages::Request& req, + expresso::messages::Response& res) override; }; } // namespace middleware diff --git a/include/expresso/middleware/cors.h b/include/expresso/middleware/cors.h index 2c700cd..d7403a6 100644 --- a/include/expresso/middleware/cors.h +++ b/include/expresso/middleware/cors.h @@ -27,8 +27,8 @@ class Cors : public Middleware { void allowHeader(std::string header); void allowCredentials(bool credentials); - bool use(expresso::messages::Request &req, - expresso::messages::Response &res) override; + bool use(expresso::messages::Request& req, + expresso::messages::Response& res) override; }; } // namespace middleware diff --git a/include/expresso/middleware/date.h b/include/expresso/middleware/date.h index 4ebdd09..74a1c2d 100644 --- a/include/expresso/middleware/date.h +++ b/include/expresso/middleware/date.h @@ -1,3 +1,5 @@ +#pragma once + #include #include diff --git a/include/expresso/middleware/middleware.h b/include/expresso/middleware/middleware.h index 8219463..29a4cce 100644 --- a/include/expresso/middleware/middleware.h +++ b/include/expresso/middleware/middleware.h @@ -12,10 +12,10 @@ class Middleware { Middleware(); virtual ~Middleware() = default; - virtual bool use(expresso::messages::Request &req, - expresso::messages::Response &res) = 0; + virtual bool use(expresso::messages::Request& req, + expresso::messages::Response& res) = 0; }; } // namespace middleware -} // namespace expresso +} // namespace expresso \ No newline at end of file diff --git a/include/expresso/middleware/static_serve.h b/include/expresso/middleware/static_serve.h index aa4efd7..c5500e6 100644 --- a/include/expresso/middleware/static_serve.h +++ b/include/expresso/middleware/static_serve.h @@ -12,16 +12,16 @@ class StaticServe : public Middleware { std::string dirname; - std::pair getRange(const std::string &range); - std::string getFolderHTML(expresso::messages::Request &req, - const std::string &localPath); + std::pair getRange(const std::string& range); + std::string getFolderHTML(expresso::messages::Request& req, + const std::string& localPath); public: StaticServe(std::string dirname, bool showListing = false); ~StaticServe(); - bool use(expresso::messages::Request &req, - expresso::messages::Response &res) override; + bool use(expresso::messages::Request& req, + expresso::messages::Response& res) override; }; } // namespace middleware diff --git a/include/expresso/middleware/version.h b/include/expresso/middleware/version.h index b11a180..5c6aaee 100644 --- a/include/expresso/middleware/version.h +++ b/include/expresso/middleware/version.h @@ -1,3 +1,5 @@ +#pragma once + #include #include @@ -13,8 +15,8 @@ class Version : public Middleware { Version(); ~Version(); - bool use(expresso::messages::Request &request, - expresso::messages::Response &response) override; + bool use(expresso::messages::Request& request, + expresso::messages::Response& response) override; }; } // namespace middleware diff --git a/src/core/router.cpp b/src/core/router.cpp index f967a91..ec56738 100644 --- a/src/core/router.cpp +++ b/src/core/router.cpp @@ -7,7 +7,7 @@ expresso::core::Router::~Router() { delete this->paramRouter; } - for (const std::pair &router : this->routerMap) { + for (const std::pair& router : this->routerMap) { delete router.second; } @@ -23,48 +23,48 @@ expresso::core::Router::~Router() { } void expresso::core::Router::get( - std::string path, void (*handler)(expresso::messages::Request &request, - expresso::messages::Response &response)) { + std::string path, void (*handler)(expresso::messages::Request& request, + expresso::messages::Response& response)) { this->addRoute(mochios::enums::method::GET, path, handler); return; } void expresso::core::Router::post( - std::string path, void (*handler)(expresso::messages::Request &request, - expresso::messages::Response &response)) { + std::string path, void (*handler)(expresso::messages::Request& request, + expresso::messages::Response& response)) { this->addRoute(mochios::enums::method::POST, path, handler); return; } void expresso::core::Router::put( - std::string path, void (*handler)(expresso::messages::Request &request, - expresso::messages::Response &response)) { + std::string path, void (*handler)(expresso::messages::Request& request, + expresso::messages::Response& response)) { this->addRoute(mochios::enums::method::PUT, path, handler); return; } void expresso::core::Router::patch( - std::string path, void (*handler)(expresso::messages::Request &request, - expresso::messages::Response &response)) { + std::string path, void (*handler)(expresso::messages::Request& request, + expresso::messages::Response& response)) { this->addRoute(mochios::enums::method::PATCH, path, handler); return; } void expresso::core::Router::del( - std::string path, void (*handler)(expresso::messages::Request &request, - expresso::messages::Response &response)) { + std::string path, void (*handler)(expresso::messages::Request& request, + expresso::messages::Response& response)) { this->addRoute(mochios::enums::method::DELETE, path, handler); return; } void expresso::core::Router::options( - std::string path, void (*handler)(expresso::messages::Request &request, - expresso::messages::Response &response)) { + std::string path, void (*handler)(expresso::messages::Request& request, + expresso::messages::Response& response)) { this->addRoute(mochios::enums::method::OPTIONS, path, handler); return; } -void expresso::core::Router::use(std::string path, Router *router) { +void expresso::core::Router::use(std::string path, Router* router) { if (path[0] != '/') { logger::error( "Router path must start with a '/', given: " + path, @@ -87,8 +87,8 @@ void expresso::core::Router::use( } void expresso::core::Router::handleRequest( - expresso::messages::Request &request, - expresso::messages::Response &response) { + expresso::messages::Request& request, + expresso::messages::Response& response) { if (!this->handleMiddlewares(request, response)) { return; } @@ -97,19 +97,19 @@ void expresso::core::Router::handleRequest( request.tempPath = request.tempPath.substr(1, request.tempPath.size()); } - std::map &map = + std::map& map = this->fetchMapFromMethod(request.method); if (map.find(request.tempPath) != map.end()) { return map[request.tempPath](request, response); } - for (const std::pair &x : this->routerMap) { + for (const std::pair& x : this->routerMap) { if (request.tempPath.size() < x.first.size()) continue; if ((request.tempPath + "/") - .compare(0, (x.first + "/").size(), (x.first + "/")) == 0) { + .compare(0, (x.first + "/").size(), (x.first + "/")) == 0) { if (request.tempPath == x.first) { request.tempPath = ""; } else { @@ -141,9 +141,9 @@ void expresso::core::Router::handleRequest( } bool expresso::core::Router::handleMiddlewares( - expresso::messages::Request &request, - expresso::messages::Response &response) { - for (const std::unique_ptr &middleware : + expresso::messages::Request& request, + expresso::messages::Response& response) { + for (const std::unique_ptr& middleware : this->middlewares) { if (!middleware->use(request, response)) { response.end(); @@ -155,38 +155,39 @@ bool expresso::core::Router::handleMiddlewares( } std::map & + void (*)(expresso::messages::Request& request, + expresso::messages::Response& response)>& expresso::core::Router::fetchMapFromMethod(mochios::enums::method method) { switch (method) { - case mochios::enums::method::GET: - return this->getMap; - case mochios::enums::method::POST: - return this->postMap; - case mochios::enums::method::PUT: - return this->putMap; - case mochios::enums::method::PATCH: - - return this->patchMap; - case mochios::enums::method::DELETE: - return this->deleteMap; - case mochios::enums::method::OPTIONS: - return this->optionsMap; - default: - logger::error("Invalid method: " + std::to_string(static_cast(method)), - "std::map " - "&expresso::core::Router::fetchRouterFromMethod(expresso::" - "enums::method method)"); - return this->getMap; + case mochios::enums::method::GET: + return this->getMap; + case mochios::enums::method::POST: + return this->postMap; + case mochios::enums::method::PUT: + return this->putMap; + case mochios::enums::method::PATCH: + + return this->patchMap; + case mochios::enums::method::DELETE: + return this->deleteMap; + case mochios::enums::method::OPTIONS: + return this->optionsMap; + default: + logger::error( + "Invalid method: " + std::to_string(static_cast(method)), + "std::map " + "&expresso::core::Router::fetchRouterFromMethod(expresso::" + "enums::method method)"); + return this->getMap; } } void expresso::core::Router::addRoute( mochios::enums::method method, std::string path, - void (*handler)(expresso::messages::Request &request, - expresso::messages::Response &response)) { + void (*handler)(expresso::messages::Request& request, + expresso::messages::Response& response)) { if (path[0] != '/') { logger::error("Router path must start with a '/', given: " + path, "void expresso::core::Router::put(std::string path, void " @@ -195,8 +196,8 @@ void expresso::core::Router::addRoute( return; } - std::map &map = + std::map& map = this->fetchMapFromMethod(method); map[path.substr(1, path.size())] = handler; return; diff --git a/src/core/server.cpp b/src/core/server.cpp index 6eb7f71..afcda5a 100644 --- a/src/core/server.cpp +++ b/src/core/server.cpp @@ -1,7 +1,7 @@ #include expresso::core::Server::Server(size_t maxConnections, size_t maxThreads) - : maxConnections(maxConnections), threadPool(maxThreads) { + : maxConnections(maxConnections), threadPool(maxThreads) { signal(SIGPIPE, SIG_IGN); brewtils::sys::exitIf(SIGINT); brewtils::sys::exitIf(SIGTERM); @@ -36,7 +36,7 @@ void expresso::core::Server::listen(int port, std::function callback) { pid_t pid = getpid(); logger::info("Server started with PID " + std::to_string(pid)); - if (brewtils::sys::bind(this->socket, (struct sockaddr *)&this->address, + if (brewtils::sys::bind(this->socket, (struct sockaddr*)&this->address, sizeof(this->address)) < 0) { logger::error("Unable to bind socket!", "void expresso::core::Server::run(int port)"); @@ -55,16 +55,18 @@ void expresso::core::Server::listen(int port, std::function callback) { return; } -mochios::enums::method expresso::core::Server::getMethodFromString(const std::string &method) noexcept(false) { - if (method == "GET") return mochios::enums::method::GET; - else if (method == "POST") return mochios::enums::method::POST; - else if (method == "PUT") return mochios::enums::method::PUT; - else if (method == "PATCH") return mochios::enums::method::PATCH; - else if (method == "DELETE") return mochios::enums::method::DELETE; - else if (method == "OPTIONS") return mochios::enums::method::OPTIONS; - else if (method == "HEAD") return mochios::enums::method::HEAD; - else logger::error("Unsupported HTTP method: " + method, - "expresso::core::Server::getMethodFromString(std::string &method) noexcept(false)"); +mochios::enums::method expresso::core::Server::getMethodFromString( + const std::string& method) noexcept(false) { + if (method == "GET") return mochios::enums::method::GET; + else if (method == "POST") return mochios::enums::method::POST; + else if (method == "PUT") return mochios::enums::method::PUT; + else if (method == "PATCH") return mochios::enums::method::PATCH; + else if (method == "DELETE") return mochios::enums::method::DELETE; + else if (method == "OPTIONS") return mochios::enums::method::OPTIONS; + else if (method == "HEAD") return mochios::enums::method::HEAD; + else + logger::error("Unsupported HTTP method: " + method, + "expresso::core::Server::getMethodFromString(std::string &method) noexcept(false)"); } void expresso::core::Server::setupMiddlewares() { @@ -76,7 +78,7 @@ void expresso::core::Server::acceptConnections() { while (true) { struct sockaddr_in clientAddress; socklen_t clientAddressLength = sizeof(clientAddress); - int clientSocket = accept(this->socket, (struct sockaddr *)&clientAddress, + int clientSocket = accept(this->socket, (struct sockaddr*)&clientAddress, &clientAddressLength); if (clientSocket < 0) { logger::error("Client connection not accepted!", @@ -121,7 +123,7 @@ void expresso::core::Server::handleConnection(int clientSocket) { return; } - expresso::messages::Response *res = + expresso::messages::Response* res = new expresso::messages::Response(clientSocket); try { @@ -129,7 +131,7 @@ void expresso::core::Server::handleConnection(int clientSocket) { req.res = res; this->handleRequest(req, *res); delete res; - } catch (const std::exception &e) { + } catch (const std::exception& e) { logger::error( e.what(), "void expresso::core::Server::handleConnection(int clientSocket)"); @@ -141,7 +143,7 @@ void expresso::core::Server::handleConnection(int clientSocket) { } expresso::messages::Request -expresso::core::Server::makeRequest(std::string &request) noexcept(false) { +expresso::core::Server::makeRequest(std::string& request) noexcept(false) { std::string line; std::istringstream stream(request); std::getline(stream, line); @@ -232,7 +234,7 @@ expresso::core::Server::makeRequest(std::string &request) noexcept(false) { std::string key; std::string value; req.body = json::object(std::map()); - for (const std::string &str : parts) { + for (const std::string& str : parts) { key = brewtils::url::decode(brewtils::string::split(str, "=")[0]); value = brewtils::url::decode(brewtils::string::split(str, "=")[1]); req.body[key] = json::object(value); @@ -246,7 +248,7 @@ expresso::core::Server::makeRequest(std::string &request) noexcept(false) { std::string key; std::string value; req.body = json::object(std::map()); - for (const std::string &str : parts) { + for (const std::string& str : parts) { data = brewtils::string::split(str, "Content-Disposition: form-data; name=\""); if (data.size() == 2) { @@ -260,4 +262,4 @@ expresso::core::Server::makeRequest(std::string &request) noexcept(false) { } return req; -} +} \ No newline at end of file diff --git a/src/helpers/response.cpp b/src/helpers/response.cpp index 73eb935..d519832 100644 --- a/src/helpers/response.cpp +++ b/src/helpers/response.cpp @@ -1,6 +1,6 @@ #include -std::string expresso::helpers::getAvailableFile(const std::string &path) { +std::string expresso::helpers::getAvailableFile(const std::string& path) { if (brewtils::os::file::exists(path)) { return path; } @@ -18,7 +18,7 @@ std::string expresso::helpers::getAvailableFile(const std::string &path) { return ""; } -const std::string expresso::helpers::generateETag(const std::string &data) { +const std::string expresso::helpers::generateETag(const std::string& data) { const std::string availableFile = expresso::helpers::getAvailableFile(data); uint32_t crc = zippuccino::crc::compute(availableFile); std::ostringstream etag; @@ -26,8 +26,8 @@ const std::string expresso::helpers::generateETag(const std::string &data) { return etag.str(); } -bool expresso::helpers::sendChunkedData(const int &socket, - const std::string &data) { +bool expresso::helpers::sendChunkedData(const int& socket, + const std::string& data) { std::ostringstream dataSizeHex; dataSizeHex << std::hex << data.length(); std::string dataSize = dataSizeHex.str() + "\r\n"; @@ -45,8 +45,8 @@ bool expresso::helpers::sendChunkedData(const int &socket, return true; } -bool expresso::helpers::sendFileInChunks(const int &socket, - const std::string &path) { +bool expresso::helpers::sendFileInChunks(const int& socket, + const std::string& path) { std::fstream file(path, std::ios::in | std::ios::binary); char buffer[expresso::helpers::CHUNK_SIZE]; @@ -64,9 +64,9 @@ bool expresso::helpers::sendFileInChunks(const int &socket, return false; } } - } catch (const std::exception &e) { + } catch (const std::exception& e) { logger::error(e.what(), "bool sendFileInChunks(const int &socket, const " - "std::string &path)"); + "std::string &path)"); return false; } if (file.is_open()) { diff --git a/src/messages/cookie.cpp b/src/messages/cookie.cpp index 794dfae..4e1d0b6 100644 --- a/src/messages/cookie.cpp +++ b/src/messages/cookie.cpp @@ -2,8 +2,8 @@ expresso::messages::Cookie::Cookie() : mochios::messages::Cookie() { return; } -expresso::messages::Cookie::Cookie(const std::string &data) - : mochios::messages::Cookie(data) { +expresso::messages::Cookie::Cookie(const std::string& data) + : mochios::messages::Cookie(data) { return; } diff --git a/src/messages/request.cpp b/src/messages/request.cpp index 3d4822d..f8c1f96 100644 --- a/src/messages/request.cpp +++ b/src/messages/request.cpp @@ -1,8 +1,8 @@ #include -expresso::messages::Request::Request(const std::string &path) - : xhr(false), res(nullptr), contentLength(0), - mochios::messages::Request(path) { +expresso::messages::Request::Request(const std::string& path) + : xhr(false), res(nullptr), contentLength(0), + mochios::messages::Request(path) { return; } @@ -20,22 +20,22 @@ const void expresso::messages::Request::print() const { logger::info(this->body.dumps(2, 2)); logger::info(" cookies: "); - for (expresso::messages::Cookie *cookie : this->cookies) { + for (expresso::messages::Cookie* cookie : this->cookies) { logger::info(" " + cookie->serialize()); } logger::info(" headers: "); - for (const std::pair &header : this->headers) { + for (const std::pair& header : this->headers) { logger::info(" " + header.first + ": " + header.second); } logger::info(" params: "); - for (const std::pair ¶m : this->params) { + for (const std::pair& param : this->params) { logger::info(" " + param.first + ": " + param.second); } logger::info(" queries: "); - for (const std::pair &query : this->queries) { + for (const std::pair& query : this->queries) { logger::info(" " + query.first + ": " + query.second); } diff --git a/src/messages/response.cpp b/src/messages/response.cpp index 7b1fa76..295929f 100644 --- a/src/messages/response.cpp +++ b/src/messages/response.cpp @@ -2,7 +2,7 @@ #include expresso::messages::Response::Response(int clientSocket) - : hasEnded(false), socket(clientSocket), message("") { + : hasEnded(false), socket(clientSocket), message("") { this->set("connection", "close"); this->statusCode = expresso::enums::STATUS_CODE::OK; @@ -14,7 +14,7 @@ expresso::messages::Response::~Response() { this->sendToClient(); } - for (expresso::messages::Cookie *cookie : this->cookies) { + for (expresso::messages::Cookie* cookie : this->cookies) { delete cookie; } @@ -28,7 +28,7 @@ void expresso::messages::Response::set(std::string headerName, return; } -void expresso::messages::Response::setCookie(Cookie *cookie) { +void expresso::messages::Response::setCookie(Cookie* cookie) { this->cookies.push_back(cookie); return; @@ -43,14 +43,14 @@ std::string expresso::messages::Response::get(std::string headerName) { } } -expresso::messages::Response & +expresso::messages::Response& expresso::messages::Response::status(expresso::enums::STATUS_CODE code) { this->statusCode = code; return *this; } -expresso::messages::Response & +expresso::messages::Response& expresso::messages::Response::send(std::string response) { this->message = brewtils::string::replace(response, "\n", "\r\n"); this->message += "\r\n"; @@ -59,7 +59,7 @@ expresso::messages::Response::send(std::string response) { return *this; } -expresso::messages::Response & +expresso::messages::Response& expresso::messages::Response::json(std::string response) { this->message = response; this->set("content-type", "application/json"); @@ -67,7 +67,7 @@ expresso::messages::Response::json(std::string response) { return *this; } -expresso::messages::Response & +expresso::messages::Response& expresso::messages::Response::json(json::object response) { this->message = response.dumps(0); this->set("content-type", "application/json"); @@ -75,7 +75,7 @@ expresso::messages::Response::json(json::object response) { return *this; } -void expresso::messages::Response::sendFile(const std::string &path, +void expresso::messages::Response::sendFile(const std::string& path, int64_t start, int64_t end) { std::string availableFile = expresso::helpers::getAvailableFile(path); if (availableFile.empty() || !brewtils::os::file::exists(availableFile)) { @@ -109,8 +109,8 @@ void expresso::messages::Response::sendFile(const std::string &path, this->status(expresso::enums::STATUS_CODE::PARTIAL_CONTENT); this->set("content-length", std::to_string(end - start + 1)); this->set("content-range", "bytes " + std::to_string(start) + "-" + - std::to_string(end) + "/" + - std::to_string(fileSize)); + std::to_string(end) + "/" + + std::to_string(fileSize)); } this->sendHeaders(); @@ -130,9 +130,9 @@ void expresso::messages::Response::sendFile(const std::string &path, this->hasEnded = true; } } - } catch (const std::exception &e) { + } catch (const std::exception& e) { logger::error(e.what(), "void expresso::messages::Response::sendFile(const " - "std::string &path, int64_t start, int64_t end)"); + "std::string &path, int64_t start, int64_t end)"); } if (file.is_open()) { file.close(); @@ -141,8 +141,8 @@ void expresso::messages::Response::sendFile(const std::string &path, return; } -void expresso::messages::Response::sendFiles(const std::set &paths, - const std::string &zipFileName) { +void expresso::messages::Response::sendFiles(const std::set& paths, + const std::string& zipFileName) { this->headers.erase("content-length"); this->set("transfer-encoding", "chunked"); this->set("content-type", brewtils::os::file::getMimeType(zipFileName)); @@ -151,7 +151,7 @@ void expresso::messages::Response::sendFiles(const std::set &paths, this->sendHeaders(); zippuccino::Zipper zipper; - for (const std::string &path : paths) { + for (const std::string& path : paths) { zipper.add(path); } zipper.zip(); @@ -177,7 +177,7 @@ void expresso::messages::Response::sendFiles(const std::set &paths, if (brewtils::sys::send(this->socket, "0\r\n\r\n", 5, 0) == -1) { this->hasEnded = true; } - } catch (const std::exception &e) { + } catch (const std::exception& e) { logger::error(e.what(), "void expresso::messages::Response::sendFiles(const " "std::set &paths, const std::string " @@ -214,7 +214,7 @@ const void expresso::messages::Response::print() const { logger::info("Response: "); logger::info(" statusCode: " + std::to_string(this->statusCode)); logger::info(" headers: "); - for (const std::pair &header : + for (const std::pair& header : this->headers) { logger::info(" " + header.first + ": " + header.second); } @@ -241,7 +241,7 @@ void expresso::messages::Response::sendHeaders() { for (std::pair it : this->headers) { header += it.first + ": " + it.second + "\r\n"; } - for (Cookie *cookie : this->cookies) { + for (Cookie* cookie : this->cookies) { header += "set-cookie: " + cookie->serialize() + "\r\n"; } header += "\r\n"; @@ -250,4 +250,4 @@ void expresso::messages::Response::sendHeaders() { this->hasEnded = true; } return; -} +} \ No newline at end of file diff --git a/src/middleware/cacher.cpp b/src/middleware/cacher.cpp index 77faddc..9e6bb5e 100644 --- a/src/middleware/cacher.cpp +++ b/src/middleware/cacher.cpp @@ -1,7 +1,7 @@ #include expresso::middleware::Cacher::Cacher(uint32_t maxAge, bool isPrivate) - : isPrivate(isPrivate), maxAge(maxAge) { + : isPrivate(isPrivate), maxAge(maxAge) { this->serialized = "max-age=" + std::to_string(maxAge); if (isPrivate) { this->serialized += ", private"; @@ -12,8 +12,8 @@ expresso::middleware::Cacher::Cacher(uint32_t maxAge, bool isPrivate) expresso::middleware::Cacher::~Cacher() { return; } -bool expresso::middleware::Cacher::use(expresso::messages::Request &req, - expresso::messages::Response &res) { +bool expresso::middleware::Cacher::use(expresso::messages::Request& req, + expresso::messages::Response& res) { res.set("cache-control", this->serialized); return true; } \ No newline at end of file diff --git a/src/middleware/cookie_parser.cpp b/src/middleware/cookie_parser.cpp index d78715d..87ef5c0 100644 --- a/src/middleware/cookie_parser.cpp +++ b/src/middleware/cookie_parser.cpp @@ -5,7 +5,7 @@ expresso::middleware::CookieParser::CookieParser() { return; } expresso::middleware::CookieParser::~CookieParser() { return; } bool expresso::middleware::CookieParser::use( - expresso::messages::Request &req, expresso::messages::Response &res) { + expresso::messages::Request& req, expresso::messages::Response& res) { std::string cookieString = req.headers["cookie"]; if (cookieString.empty()) { return true; @@ -13,8 +13,8 @@ bool expresso::middleware::CookieParser::use( std::vector cookies = brewtils::string::split(cookieString, ";"); std::vector cookiePair; - for (std::string &cookieStr : cookies) { - expresso::messages::Cookie *cookie = new expresso::messages::Cookie(); + for (std::string& cookieStr : cookies) { + expresso::messages::Cookie* cookie = new expresso::messages::Cookie(); cookiePair = brewtils::string::split(cookieStr, "="); cookie->name = brewtils::string::trim(cookiePair[0]); cookie->value = brewtils::string::trim(cookiePair[1]); diff --git a/src/middleware/cors.cpp b/src/middleware/cors.cpp index e834c7c..842f508 100644 --- a/src/middleware/cors.cpp +++ b/src/middleware/cors.cpp @@ -2,7 +2,7 @@ #include expresso::middleware::Cors::Cors() - : credentials(false), allowAllOrigins(false), allowedHeaders("") { + : credentials(false), allowAllOrigins(false), allowedHeaders("") { for (std::string _header : expresso::constants::cors::headers) { this->headers.insert(_header); } @@ -37,7 +37,7 @@ void expresso::middleware::Cors::allowMethod(std::string method) { } this->methods.insert(static_cast( - std::distance(mochios::enums::methods.begin(), methodIter) - 1)); + std::distance(mochios::enums::methods.begin(), methodIter) - 1)); return; } @@ -57,8 +57,8 @@ void expresso::middleware::Cors::allowCredentials(bool credentials) { return; } -bool expresso::middleware::Cors::use(expresso::messages::Request &req, - expresso::messages::Response &res) { +bool expresso::middleware::Cors::use(expresso::messages::Request& req, + expresso::messages::Response& res) { if (this->allowAllOrigins) { return true; } @@ -67,7 +67,7 @@ bool expresso::middleware::Cors::use(expresso::messages::Request &req, if (requestOrigin == "") { res.set("access-control-allow-origin", "null"); res.status(expresso::enums::STATUS_CODE::FORBIDDEN) - .send(expresso::constants::cors::forbidden); + .send(expresso::constants::cors::forbidden); return false; } @@ -83,7 +83,7 @@ bool expresso::middleware::Cors::use(expresso::messages::Request &req, if (!isOriginPresent) { res.set("access-control-allow-origin", "null"); res.status(expresso::enums::STATUS_CODE::FORBIDDEN) - .send(expresso::constants::cors::forbidden); + .send(expresso::constants::cors::forbidden); return false; } diff --git a/src/middleware/date.cpp b/src/middleware/date.cpp index cb889f4..53c8a91 100644 --- a/src/middleware/date.cpp +++ b/src/middleware/date.cpp @@ -4,8 +4,8 @@ expresso::middleware::Date::Date() { return; } expresso::middleware::Date::~Date() { return; } -bool expresso::middleware::Date::use(expresso::messages::Request &req, - expresso::messages::Response &res) { +bool expresso::middleware::Date::use(expresso::messages::Request& req, + expresso::messages::Response& res) { res.set("date", brewtils::date::getCurrentUTC()); return true; } \ No newline at end of file diff --git a/src/middleware/middleware.cpp b/src/middleware/middleware.cpp index 8ef715e..a3b9baa 100644 --- a/src/middleware/middleware.cpp +++ b/src/middleware/middleware.cpp @@ -1,3 +1,3 @@ #include -expresso::middleware::Middleware::Middleware() { return; } +expresso::middleware::Middleware::Middleware() { return; } \ No newline at end of file diff --git a/src/middleware/static_serve.cpp b/src/middleware/static_serve.cpp index 2c064e8..74302f5 100644 --- a/src/middleware/static_serve.cpp +++ b/src/middleware/static_serve.cpp @@ -3,14 +3,14 @@ expresso::middleware::StaticServe::StaticServe(std::string dirname, bool showListing) - : dirname(std::move(dirname)), showListing(showListing) { + : dirname(std::move(dirname)), showListing(showListing) { return; } expresso::middleware::StaticServe::~StaticServe() { return; } -bool expresso::middleware::StaticServe::use(expresso::messages::Request &req, - expresso::messages::Response &res) { +bool expresso::middleware::StaticServe::use(expresso::messages::Request& req, + expresso::messages::Response& res) { if (req.method != mochios::enums::method::GET) { return true; } @@ -25,8 +25,8 @@ bool expresso::middleware::StaticServe::use(expresso::messages::Request &req, } if (this->showListing && brewtils::os::dir::exists(brewtils::os::joinPath( - this->dirname, filePath))) { - const std::string &tempPath = + this->dirname, filePath))) { + const std::string& tempPath = brewtils::os::joinPath(this->dirname, filePath); if (!brewtils::os::dir::exists(tempPath)) { return true; @@ -42,7 +42,7 @@ bool expresso::middleware::StaticServe::use(expresso::messages::Request &req, } std::pair -expresso::middleware::StaticServe::getRange(const std::string &range) { +expresso::middleware::StaticServe::getRange(const std::string& range) { int64_t start = -1; int64_t end = -1; const std::vector parts = @@ -69,23 +69,24 @@ expresso::middleware::StaticServe::getRange(const std::string &range) { } std::string -expresso::middleware::StaticServe::getFolderHTML(expresso::messages::Request &req, - const std::string &localPath) { +expresso::middleware::StaticServe::getFolderHTML( + expresso::messages::Request& req, + const std::string& localPath) { std::ostringstream oss; const std::string urlPath = req.path; oss << "Index of /" + urlPath + - "

Index of /" + - brewtils::url::decode(urlPath) + "