Skip to main content
Glama
validator.go1.64 kB
package validation import ( "fmt" "lunar/engine/streams" "lunar/engine/utils/environment" "os" "github.com/rs/zerolog/log" "gopkg.in/yaml.v2" ) type Validator struct { dryRunStream *streams.Stream validationDir string } func NewValidator() *Validator { return &Validator{} } func (v *Validator) WithValidationDir(dir string) *Validator { v.validationDir = dir return v } func (v *Validator) Validate() (err error) { v.dryRunStream, err = streams.NewValidationStream(v.validationDir) if err != nil { return err } log.Trace().Msg("Starting flows validation") if err := v.dryRunStream.Initialize(); err != nil { return err } if err := v.ValidateGatewayConfig(); err != nil { return err } log.Trace().Msg("Flows validation completed") return nil } func (v *Validator) ValidateGatewayConfig() error { log.Trace().Msg("Starting gateway config validation") var configPath string if v.validationDir != "" { configPath = environment.GetCustomGatewayConfigPath(v.validationDir) } if configPath == "" { configPath = environment.GetGatewayConfigPath() } log.Trace().Msgf("Gateway config file path: %s", configPath) file, _ := os.Open(configPath) if file == nil { log.Trace().Msg("Gateway config file not found") return nil } defer file.Close() fileInfo, err := file.Stat() if err != nil { return err } // Check if the file is empty if fileInfo.Size() == 0 { return nil } var configData map[string]interface{} decoder := yaml.NewDecoder(file) if err := decoder.Decode(&configData); err != nil { return fmt.Errorf("failed to validate gateway config: %w", err) } return nil }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/TheLunarCompany/lunar'

If you have feedback or need assistance with the MCP directory API, please join our Discord server