github.com/MetalBlockchain/metalgo@v1.11.9/ids/galiasreader/alias_reader_client.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 _ ids.AliaserReader = (*Client)(nil)
    15  
    16  // Client implements alias lookups that talk over RPC.
    17  type Client struct {
    18  	client aliasreaderpb.AliasReaderClient
    19  }
    20  
    21  // NewClient returns an alias lookup instance connected to a remote alias lookup
    22  // instance
    23  func NewClient(client aliasreaderpb.AliasReaderClient) *Client {
    24  	return &Client{client: client}
    25  }
    26  
    27  func (c *Client) Lookup(alias string) (ids.ID, error) {
    28  	resp, err := c.client.Lookup(context.Background(), &aliasreaderpb.Alias{
    29  		Alias: alias,
    30  	})
    31  	if err != nil {
    32  		return ids.Empty, err
    33  	}
    34  	return ids.ToID(resp.Id)
    35  }
    36  
    37  func (c *Client) PrimaryAlias(id ids.ID) (string, error) {
    38  	resp, err := c.client.PrimaryAlias(context.Background(), &aliasreaderpb.ID{
    39  		Id: id[:],
    40  	})
    41  	if err != nil {
    42  		return "", err
    43  	}
    44  	return resp.Alias, nil
    45  }
    46  
    47  func (c *Client) Aliases(id ids.ID) ([]string, error) {
    48  	resp, err := c.client.Aliases(context.Background(), &aliasreaderpb.ID{
    49  		Id: id[:],
    50  	})
    51  	if err != nil {
    52  		return nil, err
    53  	}
    54  	return resp.Aliases, nil
    55  }