indieauth-server/internal/config/config.go
Dan Anglin 7d0336d3db
All checks were successful
CI / Tests (pull_request) Successful in 14s
CI / Style (pull_request) Successful in 9s
feat: add metadata endpoint
Add the metadata endpoint so that clients can get the server's
authorization and token endpoints.

Changes:

- Add a config object to allow administrators to configure the binding
  address, binding port and domain name.
- Add a target in the magefiles and a step in the CI workflow to run
  go vet.
- Add the Dockerfile.
- Replace the --address flag with the --config flag.
- Add the metadata endpoint to the router to return a JSON document
  containing the URLs to the metadata and token endpoints.
2024-10-15 18:22:55 +01:00

38 lines
611 B
Go

package config
import (
"encoding/json"
"fmt"
"os"
"path/filepath"
)
type Config struct {
BindAddress string `json:"bindAddress"`
Port int32 `json:"port"`
Domain string `json:"domain"`
}
func NewConfig(path string) (Config, error) {
path = filepath.Clean(path)
data, err := os.ReadFile(path)
if err != nil {
return Config{}, fmt.Errorf(
"unable to read the config from %q: %w",
path,
err,
)
}
var cfg Config
if err := json.Unmarshal(data, &cfg); err != nil {
return Config{}, fmt.Errorf(
"unable to decode the JSON data: %w",
err,
)
}
return cfg, nil
}