From 13ce1d551bf5e5ce85cbeaa236d5460322607493 Mon Sep 17 00:00:00 2001 From: Marvin Zhang Date: Tue, 18 Mar 2025 18:01:22 +0800 Subject: [PATCH] refactor: enhance OpenAPI integration and security handling - Updated GetOpenAPI function to improve clarity by storing the Fizz instance in a variable. - Added security middleware to FizzWrapper for API token authentication, enhancing security measures. - Configured sorting of tags in the OpenAPI generator to maintain consistency in API documentation. - Improved comments for better understanding of the changes made in the OpenAPI wrapper. --- core/controllers/openapi.go | 5 ++++- core/openapi/wrapper.go | 16 ++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/core/controllers/openapi.go b/core/controllers/openapi.go index 2685b039..bdd90422 100644 --- a/core/controllers/openapi.go +++ b/core/controllers/openapi.go @@ -6,11 +6,14 @@ import ( ) func GetOpenAPI(c *gin.Context) { + f := globalWrapper.GetFizz() + info := &openapi.Info{ Title: "Crawlab API", Description: "REST API for Crawlab", Version: "0.7.0", } - handleFunc := globalWrapper.GetFizz().OpenAPI(info, "json") + + handleFunc := f.OpenAPI(info, "json") handleFunc(c) } diff --git a/core/openapi/wrapper.go b/core/openapi/wrapper.go index f75b7615..494cc9c6 100644 --- a/core/openapi/wrapper.go +++ b/core/openapi/wrapper.go @@ -2,6 +2,7 @@ package openapi import ( "fmt" + "github.com/crawlab-team/fizz/openapi" "sync" "github.com/crawlab-team/crawlab/core/interfaces" @@ -23,6 +24,21 @@ type FizzWrapper struct { func newFizzWrapper(engine *gin.Engine) *FizzWrapper { // Create a new Fizz instance using the existing Gin engine f := fizz.NewFromEngine(engine) + + // Add security middleware + f.Generator().SetSecuritySchemes(map[string]*openapi.SecuritySchemeOrRef{ + "apiToken": { + SecurityScheme: &openapi.SecurityScheme{ + Type: "apiKey", + Name: "API Token", + In: "header", + }, + }, + }) + + // Sort tags + f.Generator().SetSortTags(false) + return &FizzWrapper{ fizz: f, gin: engine,