54 lines
1.4 KiB
Go
54 lines
1.4 KiB
Go
package cmd
|
|
|
|
import (
|
|
"github.com/go-playground/validator/v10"
|
|
"github.com/spf13/viper"
|
|
"libre.sh/scim/pkg/supplier"
|
|
)
|
|
|
|
type ProviderType string
|
|
|
|
const (
|
|
RocketChat ProviderType = "rocketchat"
|
|
Nextcloud ProviderType = "nextcloud"
|
|
)
|
|
|
|
type Config struct {
|
|
Client Client `validate:"required"`
|
|
Provider Provider `validate:"required"`
|
|
}
|
|
|
|
type Client struct {
|
|
supplier.ServiceProviderConfig `validate:"required"`
|
|
Realm string `validate:"required"`
|
|
}
|
|
|
|
type Provider struct {
|
|
supplier.ServiceProviderConfig `validate:"required"`
|
|
Name string `validate:"required"`
|
|
Type ProviderType `validate:"required"`
|
|
}
|
|
|
|
func GetConfig() (Config, error) {
|
|
config := Config{
|
|
Client: Client{
|
|
Realm: viper.GetString("client.realm"),
|
|
ServiceProviderConfig: supplier.ServiceProviderConfig{
|
|
Host: viper.GetString("client.host"),
|
|
Username: viper.GetString("client.username"),
|
|
Password: viper.GetString("client.password"),
|
|
},
|
|
},
|
|
Provider: Provider{
|
|
Name: viper.GetString("provider.name"),
|
|
Type: ProviderType(viper.GetString("provider.type")),
|
|
ServiceProviderConfig: supplier.ServiceProviderConfig{
|
|
Host: viper.GetString("provider.host"),
|
|
Username: viper.GetString("provider.username"),
|
|
Password: viper.GetString("provider.password"),
|
|
},
|
|
},
|
|
}
|
|
validate := validator.New()
|
|
return config, validate.Struct(config)
|
|
}
|