From b8e3398d612de0618b4fe098b1752abd2bb366d7 Mon Sep 17 00:00:00 2001 From: Matheus Ferreira <49689776+Matfn@users.noreply.github.com> Date: Fri, 8 May 2026 15:54:45 -0300 Subject: [PATCH] Enhance Swagger JSON with security definitions Added security handling to Swagger JSON generation. --- Source/Swag.Doc.pas | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/Source/Swag.Doc.pas b/Source/Swag.Doc.pas index a6b82b5..f2fb03d 100644 --- a/Source/Swag.Doc.pas +++ b/Source/Swag.Doc.pas @@ -160,6 +160,7 @@ TSwagDoc = class(TObject) c_SwagBasePath = 'basePath'; c_SwagTags = 'tags'; c_SwagSchemes = 'schemes'; + c_SwagSecurity = 'security'; c_SwagSecurityDefinitions = 'securityDefinitions'; c_SwagSecurityDefinitionsType = 'type'; c_SwagConsumes = 'consumes'; @@ -314,7 +315,9 @@ function TSwagDoc.GenerateSecurityDefinitionsJsonObject: TJSONObject; procedure TSwagDoc.GenerateSwaggerJson; var - vJsonObject: TJsonObject; + vJsonObject, lSecurity: TJsonObject; + I: integer; + lArraySecurity: TJSONArray; begin vJsonObject := TJsonObject.Create; @@ -343,9 +346,21 @@ procedure TSwagDoc.GenerateSwaggerJson; if (fParameters.Count > 0) then vJsonObject.AddPair(c_SwagParameters, GenerateParametersJsonObject); - if (fSecurityDefinitions.Count > 0) then + if (fSecurityDefinitions.Count > 0) then begin vJsonObject.AddPair(c_SwagSecurityDefinitions, GenerateSecurityDefinitionsJsonObject); + lArraySecurity := TJSONArray.Create; + + for I := 0 to Pred(fSecurityDefinitions.Count) do begin + lSecurity := TJsonObject.Create; + lSecurity.AddPair(fSecurityDefinitions.Items[I].SchemeName, TJSONArray.Create); + + lArraySecurity.AddElement(lSecurity); + end; + + vJsonObject.AddPair(c_SwagSecurity, lArraySecurity); + end; + if (fDefinitions.Count > 0) then vJsonObject.AddPair(c_SwagDefinitions, GenerateDefinitionsJsonObject);