Skip to content
edgesync Artifact [33fa389173]
Login

Artifact [33fa389173]

Artifact 33fa38917372cd3cce9b864ceb28a0a63493b42ffe5da1fc5114770b4939aa35:


package bridge

import (
	"fmt"

	libfossil "github.com/danmestas/go-libfossil"
)

// Config holds the settings for a Bridge instance.
type Config struct {
	NATSUrl       string // default "nats://localhost:4222"
	FossilURL     string // required (unless Upstream is set)
	ProjectCode   string // required
	SubjectPrefix string // default "fossil"

	// Upstream is the transport to the Fossil server. Nil defaults to
	// HTTPTransport using FossilURL. Set for simulation or testing.
	Upstream libfossil.Transport

	// Buggify is an optional fault injection checker. Nil in production.
	Buggify libfossil.BuggifyChecker
}

func (c *Config) applyDefaults() {
	if c.NATSUrl == "" {
		c.NATSUrl = "nats://localhost:4222"
	}
	if c.SubjectPrefix == "" {
		c.SubjectPrefix = "fossil"
	}
}

func (c *Config) validate() error {
	if c.FossilURL == "" && c.Upstream == nil {
		return fmt.Errorf("bridge: FossilURL is required (unless Upstream is set)")
	}
	if c.ProjectCode == "" {
		return fmt.Errorf("bridge: ProjectCode is required")
	}
	return nil
}