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 }