Spaces:
Runtime error
Runtime error
| package peers | |
| import ( | |
| "crypto/rsa" | |
| "crypto/x509" | |
| "encoding/pem" | |
| "github.com/arpinfidel/p2p-llm/config" | |
| "github.com/arpinfidel/p2p-llm/db" | |
| ) | |
| type PeerService struct { | |
| cfg *config.Config | |
| repo db.PeerRepository | |
| } | |
| func NewPeerService(cfg *config.Config, repo db.PeerRepository) *PeerService { | |
| return &PeerService{ | |
| cfg: cfg, | |
| repo: repo, | |
| } | |
| } | |
| func (s *PeerService) ListTrustedPeers() ([]config.Peer, error) { | |
| // Get peers from config | |
| peers := s.cfg.TrustedPeers | |
| // Get peers from database | |
| dbPeers, err := s.repo.ListTrustedPeers() | |
| if err != nil { | |
| return nil, err | |
| } | |
| // Convert database peers to config.Peer format | |
| for _, dbPeer := range dbPeers { | |
| block, _ := pem.Decode([]byte(dbPeer.PublicKey)) | |
| if block == nil { | |
| continue | |
| } | |
| pubKey, err := x509.ParsePKIXPublicKey(block.Bytes) | |
| if err != nil { | |
| continue | |
| } | |
| peers = append(peers, config.Peer{ | |
| URL: dbPeer.URL, | |
| PublicKey: pubKey.(*rsa.PublicKey), | |
| }) | |
| } | |
| return peers, nil | |
| } | |