46 lines
1.3 KiB
Go
46 lines
1.3 KiB
Go
package proto
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/tech/sendico/pkg/merrors"
|
|
"github.com/tech/sendico/pkg/model"
|
|
chainv1 "github.com/tech/sendico/pkg/proto/gateway/chain/v1"
|
|
)
|
|
|
|
func Network2Proto(network model.ChainNetwork) (chainv1.ChainNetwork, error) {
|
|
switch network {
|
|
case model.ChainNetworkARB:
|
|
return chainv1.ChainNetwork_CHAIN_NETWORK_ARBITRUM_ONE, nil
|
|
case model.ChainNetworkEthMain:
|
|
return chainv1.ChainNetwork_CHAIN_NETWORK_ETHEREUM_MAINNET, nil
|
|
case model.ChainNetworkTronMain:
|
|
return chainv1.ChainNetwork_CHAIN_NETWORK_TRON_MAINNET, nil
|
|
case model.ChainNetworkTronNile:
|
|
return chainv1.ChainNetwork_CHAIN_NETWORK_TRON_NILE, nil
|
|
case model.ChainNetworkUnspecified:
|
|
return chainv1.ChainNetwork_CHAIN_NETWORK_UNSPECIFIED, nil
|
|
default:
|
|
return chainv1.ChainNetwork_CHAIN_NETWORK_UNSPECIFIED, merrors.InvalidArgument(fmt.Sprintf("Unkwnown chain network value '%s'", network), "network")
|
|
}
|
|
}
|
|
|
|
func Asset2Proto(asset *model.ChainAsset) (*chainv1.Asset, error) {
|
|
if asset == nil {
|
|
return nil, merrors.InvalidArgument("Asset must be provided", "asset")
|
|
}
|
|
netw, err := Network2Proto(asset.Chain)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
var contract string
|
|
if asset.ContractAddress != nil {
|
|
contract = *asset.ContractAddress
|
|
}
|
|
return &chainv1.Asset{
|
|
Chain: netw,
|
|
TokenSymbol: asset.TokenSymbol,
|
|
ContractAddress: contract,
|
|
}, nil
|
|
}
|