6
1
mirror of https://git.mills.io/saltyim/saltyim.git synced 2024-06-30 18:51:03 +00:00
prologic-saltyim/internal/tasks.go
James Mills 801d6b93bb Add support for client and server (broker) registration (#43)
Co-authored-by: James Mills <prologic@shortcircuit.net.au>
Reviewed-on: https://git.mills.io/prologic/saltyim/pulls/43
2022-03-22 22:59:09 +00:00

48 lines
950 B
Go

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
}