github.com/MetalBlockchain/metalgo@v1.11.9/ids/galiasreader/alias_reader_server.go (about) 1 // Copyright (C) 2019-2024, Ava Labs, Inc. All rights reserved. 2 // See the file LICENSE for licensing terms. 3 4 package galiasreader 5 6 import ( 7 "context" 8 9 "github.com/MetalBlockchain/metalgo/ids" 10 11 aliasreaderpb "github.com/MetalBlockchain/metalgo/proto/pb/aliasreader" 12 ) 13 14 var _ aliasreaderpb.AliasReaderServer = (*Server)(nil) 15 16 // Server enables alias lookups over RPC. 17 type Server struct { 18 aliasreaderpb.UnsafeAliasReaderServer 19 aliaser ids.AliaserReader 20 } 21 22 // NewServer returns an alias lookup connected to a remote alias lookup 23 func NewServer(aliaser ids.AliaserReader) *Server { 24 return &Server{aliaser: aliaser} 25 } 26 27 func (s *Server) Lookup( 28 _ context.Context, 29 req *aliasreaderpb.Alias, 30 ) (*aliasreaderpb.ID, error) { 31 id, err := s.aliaser.Lookup(req.Alias) 32 if err != nil { 33 return nil, err 34 } 35 return &aliasreaderpb.ID{ 36 Id: id[:], 37 }, nil 38 } 39 40 func (s *Server) PrimaryAlias( 41 _ context.Context, 42 req *aliasreaderpb.ID, 43 ) (*aliasreaderpb.Alias, error) { 44 id, err := ids.ToID(req.Id) 45 if err != nil { 46 return nil, err 47 } 48 alias, err := s.aliaser.PrimaryAlias(id) 49 return &aliasreaderpb.Alias{ 50 Alias: alias, 51 }, err 52 } 53 54 func (s *Server) Aliases( 55 _ context.Context, 56 req *aliasreaderpb.ID, 57 ) (*aliasreaderpb.AliasList, error) { 58 id, err := ids.ToID(req.Id) 59 if err != nil { 60 return nil, err 61 } 62 aliases, err := s.aliaser.Aliases(id) 63 return &aliasreaderpb.AliasList{ 64 Aliases: aliases, 65 }, err 66 }