Skip to content
edgesync Artifact [3dfd9c735b]
Login

Artifact [3dfd9c735b]

Artifact 3dfd9c735b31d2e4e39051b9651431010eba7769b2159fab8ef12093fdb77e8e:


package bridge

import (
	"fmt"

	libfossil "github.com/danmestas/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
}