package internal import ( "encoding/json" "fmt" "os" "path/filepath" "go.mills.io/saltyim" ) const ( wellknownPath = ".well-known/salty" ) func CreateConfig(conf *Config, addr saltyim.Addr, key string) error { p := filepath.Join(conf.Data, wellknownPath) fn := filepath.Join(p, fmt.Sprintf("%s.json", addr.Hash())) if err := os.MkdirAll(p, 0755); err != nil { return fmt.Errorf("error creating config paths %s: %w", p, err) } ulid, err := saltyim.GenerateULID() if err != nil { return fmt.Errorf("error generating ulid") } endpointURL := *conf.baseURL endpointURL.Path = fmt.Sprintf("/inbox/%s", ulid) config := saltyim.Config{ Endpoint: endpointURL.String(), Key: key, } data, err := json.Marshal(config) if err != nil { return fmt.Errorf("error serializing config") } if err := os.WriteFile(fn, data, 0644); err != nil { return fmt.Errorf("error writing config to %s: %w", fn, err) } return nil }