yao/openapi/openapi.go
Max 8523170992 Implement system store management and enhance store loading functionality
- Introduced a new system store management feature, allowing for the loading of predefined system stores such as cache and OAuth client stores.
- Added a `loadSystemStores` function to handle the loading of system stores with variable replacement for configuration paths.
- Enhanced the `Load` function to include the loading of system stores, improving the overall store management process.
- Updated test utilities to support loading system stores for testing, ensuring comprehensive coverage and functionality.
- Refactored the `replaceVars` function to facilitate variable replacement in JSON strings, enhancing flexibility in store configurations.
2025-07-20 11:23:00 +08:00

52 lines
1.2 KiB
Go

package openapi
import (
"path/filepath"
"github.com/yaoapp/gou/application"
"github.com/yaoapp/yao/config"
"github.com/yaoapp/yao/openapi/oauth"
"github.com/yaoapp/yao/openapi/oauth/types"
)
// Server is the OpenAPI server
var Server *OpenAPI = nil
// OpenAPI is the OpenAPI server
type OpenAPI struct {
Config *Config // OpenAPI configuration
OAuth types.OAuth // OAuth service interface
}
// Load loads the OpenAPI server from the configuration
func Load(appConfig *config.Config) (*OpenAPI, error) {
var configPath string = filepath.Join("openapi", "openapi.yao")
var configRaw, err = application.App.Read(configPath)
if err != nil {
return nil, err
}
// Parse the configuration
var config Config
err = application.Parse(configPath, configRaw, &config)
if err != nil {
return nil, err
}
// Convert the configuration to an OAuth configuration
oauthConfig, err := config.OAuthConfig(appConfig)
if err != nil {
return nil, err
}
// Create the OAuth service
oauthService, err := oauth.NewService(oauthConfig)
if err != nil {
return nil, err
}
// Create the OpenAPI server
Server = &OpenAPI{Config: &config, OAuth: oauthService}
return Server, nil
}