mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-11-26 00:43:20 +00:00
114 lines
2.9 KiB
Go
114 lines
2.9 KiB
Go
// Code generated by github.com/atombender/go-jsonschema, DO NOT EDIT.
|
|
|
|
package schema
|
|
|
|
import "encoding/json"
|
|
import "fmt"
|
|
|
|
type Config struct {
|
|
// List of addresses to listen on for libp2p traffic.
|
|
ListenAddresses []string `json:"listenAddresses,omitempty"`
|
|
|
|
// Trusted peers in the network.
|
|
Peers []ConfigPeersElem `json:"peers,omitempty"`
|
|
|
|
// This node's private key.
|
|
PrivateKey string `json:"privateKey"`
|
|
|
|
// The services this node provides via the Service Network.
|
|
Services ConfigServices `json:"services,omitempty"`
|
|
}
|
|
|
|
type ConfigPeersElem struct {
|
|
// PeerID of this peer.
|
|
Id string `json:"id"`
|
|
|
|
// Friendly name for this peer. (optional)
|
|
Name string `json:"name,omitempty"`
|
|
|
|
// Networks to route to this peer. (optional)
|
|
Routes []ConfigPeersElemRoutesElem `json:"routes,omitempty"`
|
|
}
|
|
|
|
type ConfigPeersElemRoutesElem struct {
|
|
// Network specification.
|
|
Net string `json:"net"`
|
|
}
|
|
|
|
// UnmarshalJSON implements json.Unmarshaler.
|
|
func (j *ConfigPeersElemRoutesElem) UnmarshalJSON(b []byte) error {
|
|
var raw map[string]interface{}
|
|
if err := json.Unmarshal(b, &raw); err != nil {
|
|
return err
|
|
}
|
|
if _, ok := raw["net"]; raw != nil && !ok {
|
|
return fmt.Errorf("field net in ConfigPeersElemRoutesElem: required")
|
|
}
|
|
type Plain ConfigPeersElemRoutesElem
|
|
var plain Plain
|
|
if err := json.Unmarshal(b, &plain); err != nil {
|
|
return err
|
|
}
|
|
*j = ConfigPeersElemRoutesElem(plain)
|
|
return nil
|
|
}
|
|
|
|
// UnmarshalJSON implements json.Unmarshaler.
|
|
func (j *ConfigPeersElem) UnmarshalJSON(b []byte) error {
|
|
var raw map[string]interface{}
|
|
if err := json.Unmarshal(b, &raw); err != nil {
|
|
return err
|
|
}
|
|
if _, ok := raw["id"]; raw != nil && !ok {
|
|
return fmt.Errorf("field id in ConfigPeersElem: required")
|
|
}
|
|
type Plain ConfigPeersElem
|
|
var plain Plain
|
|
if err := json.Unmarshal(b, &plain); err != nil {
|
|
return err
|
|
}
|
|
if v, ok := raw["name"]; !ok || v == nil {
|
|
plain.Name = ""
|
|
}
|
|
if v, ok := raw["routes"]; !ok || v == nil {
|
|
plain.Routes = []ConfigPeersElemRoutesElem{}
|
|
}
|
|
*j = ConfigPeersElem(plain)
|
|
return nil
|
|
}
|
|
|
|
// The services this node provides via the Service Network.
|
|
type ConfigServices map[string]string
|
|
|
|
// UnmarshalJSON implements json.Unmarshaler.
|
|
func (j *Config) UnmarshalJSON(b []byte) error {
|
|
var raw map[string]interface{}
|
|
if err := json.Unmarshal(b, &raw); err != nil {
|
|
return err
|
|
}
|
|
if _, ok := raw["privateKey"]; raw != nil && !ok {
|
|
return fmt.Errorf("field privateKey in Config: required")
|
|
}
|
|
type Plain Config
|
|
var plain Plain
|
|
if err := json.Unmarshal(b, &plain); err != nil {
|
|
return err
|
|
}
|
|
if v, ok := raw["listenAddresses"]; !ok || v == nil {
|
|
plain.ListenAddresses = []string{
|
|
"/ip4/0.0.0.0/tcp/8001",
|
|
"/ip4/0.0.0.0/udp/8001/quic-v1",
|
|
"/ip6/::/tcp/8001",
|
|
"/ip6/::/udp/8001/quic-v1",
|
|
}
|
|
}
|
|
if v, ok := raw["peers"]; !ok || v == nil {
|
|
plain.Peers = []ConfigPeersElem{}
|
|
}
|
|
if v, ok := raw["services"]; !ok || v == nil {
|
|
plain.Services = map[string]string{}
|
|
}
|
|
*j = Config(plain)
|
|
return nil
|
|
}
|