Files
sonr/x/vault/internal/embed.go
T

114 lines
2.6 KiB
Go
Raw Normal View History

2024-09-21 21:42:51 -04:00
package vault
2024-09-07 18:12:58 -04:00
import (
2024-09-21 21:42:51 -04:00
"bytes"
"context"
2024-09-07 18:12:58 -04:00
_ "embed"
2024-09-18 02:22:17 -04:00
"encoding/json"
2024-09-07 18:12:58 -04:00
2024-09-21 21:42:51 -04:00
"github.com/a-h/templ"
2024-09-07 18:12:58 -04:00
"github.com/ipfs/boxo/files"
2024-09-18 02:22:17 -04:00
"github.com/onsonr/sonr/config/dwn"
2024-09-07 18:12:58 -04:00
)
2024-09-18 02:22:17 -04:00
//go:embed app.wasm
2024-09-07 18:12:58 -04:00
var dwnWasmData []byte
2024-09-21 21:42:51 -04:00
//go:embed motr.mjs
var motrMJSData []byte
2024-09-18 02:22:17 -04:00
2024-09-11 15:10:54 -04:00
//go:embed sw.js
var swJSData []byte
2024-09-22 01:26:15 -04:00
var (
dwnWasmFile = files.NewBytesFile(dwnWasmData)
motrMJSFile = files.NewBytesFile(motrMJSData)
swJSFile = files.NewBytesFile(swJSData)
)
2024-09-21 21:42:51 -04:00
// NewConfig uses the config template to generate the dwn config file
func NewConfig(keyshareJSON string, adddress string, chainID string, schema *dwn.Schema) *dwn.Config {
2024-09-18 02:22:17 -04:00
dwnCfg := &dwn.Config{
2024-09-21 21:42:51 -04:00
Motr: createMotrConfig(keyshareJSON, adddress, "sonr.id"),
Ipfs: defaultIPFSConfig(),
Sonr: defaultSonrConfig(chainID),
Schema: schema,
2024-09-18 02:22:17 -04:00
}
2024-09-21 21:42:51 -04:00
return dwnCfg
}
2024-09-22 01:26:15 -04:00
// NewVaultDirectory creates a new directory with the default files
func NewVaultDirectory(cnfg *dwn.Config) (files.Node, error) {
dwnJSON, err := json.Marshal(cnfg)
if err != nil {
return nil, err
}
dwnStr, err := templ.JSONString(cnfg)
if err != nil {
return nil, err
}
w := bytes.NewBuffer(nil)
err = indexFile(dwnStr).Render(context.Background(), w)
if err != nil {
return nil, err
}
fileMap := map[string]files.Node{
"config.json": files.NewBytesFile(dwnJSON),
"motr.mjs": motrMJSFile,
"sw.js": swJSFile,
"app.wasm": dwnWasmFile,
"index.html": files.NewBytesFile(w.Bytes()),
}
return files.NewMapDirectory(fileMap), nil
}
2024-09-21 21:42:51 -04:00
// Use IndexHTML template to generate the index file
func IndexHTMLFile(c *dwn.Config) (files.Node, error) {
str, err := templ.JSONString(c)
if err != nil {
return nil, err
}
w := bytes.NewBuffer(nil)
err = indexFile(str).Render(context.Background(), w)
if err != nil {
return nil, err
}
indexData := w.Bytes()
return files.NewBytesFile(indexData), nil
}
// MarshalConfigFile uses the config template to generate the dwn config file
func MarshalConfigFile(c *dwn.Config) (files.Node, error) {
dwnConfigData, err := json.Marshal(c)
2024-09-18 02:22:17 -04:00
if err != nil {
return nil, err
}
return files.NewBytesFile(dwnConfigData), nil
}
2024-09-19 02:04:22 -04:00
func createMotrConfig(keyshareJSON string, adddress string, origin string) *dwn.Motr {
return &dwn.Motr{
Keyshare: keyshareJSON,
Address: adddress,
Origin: origin,
}
}
2024-09-18 02:22:17 -04:00
func defaultIPFSConfig() *dwn.IPFS {
return &dwn.IPFS{
ApiUrl: "https://api.sonr-ipfs.land",
GatewayUrl: "https://ipfs.sonr.land",
}
}
2024-09-19 02:04:22 -04:00
func defaultSonrConfig(chainID string) *dwn.Sonr {
2024-09-18 02:22:17 -04:00
return &dwn.Sonr{
ApiUrl: "https://api.sonr.land",
GrpcUrl: "https://grpc.sonr.land",
RpcUrl: "https://rpc.sonr.land",
WebSocketUrl: "wss://rpc.sonr.land/ws",
2024-09-19 02:04:22 -04:00
ChainId: chainID,
2024-09-18 02:22:17 -04:00
}
}