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  }