Skip to content

Commit

Permalink
relayer client: update options to easier pass projectAccessKey (#106)
Browse files Browse the repository at this point in the history
  • Loading branch information
pkieltyka authored Jan 23, 2024
1 parent 4dd663b commit bb16c0f
Show file tree
Hide file tree
Showing 7 changed files with 31 additions and 10 deletions.
2 changes: 2 additions & 0 deletions api/api.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@ type Options struct {
APIServiceURL string
}

// NewAPI creates a new Sequence API client instance. Please see https://sequence.build to
// get a `projectAccessKey`.
func NewAPI(projectAccessKey string, options ...Options) API {
opts := Options{}
if len(options) > 0 {
Expand Down
6 changes: 4 additions & 2 deletions indexer/indexer.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,9 @@ type Options struct {
JWTAuthToken string
}

func NewIndexer(indexerServiceURL string, projectAccessKey string, options ...Options) Indexer {
// NewIndexer creates a new Sequence Indexer client instance. See https://docs.sequence.xyz for a list of
// indexer urls, and please see https://sequence.build to get a `projectAccessKey`.
func NewIndexer(indexerURL string, projectAccessKey string, options ...Options) Indexer {
opts := Options{}
if len(options) > 0 {
opts = options[0]
Expand All @@ -27,7 +29,7 @@ func NewIndexer(indexerServiceURL string, projectAccessKey string, options ...Op
client.jwtAuthHeader = fmt.Sprintf("BEARER %s", opts.JWTAuthToken)
}

return NewIndexerClient(indexerServiceURL, client)
return NewIndexerClient(indexerURL, client)
}

type httpclient struct {
Expand Down
2 changes: 2 additions & 0 deletions metadata/metadata.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@ type Options struct {
MetadataServiceURL string
}

// NewMetadata creates a new Sequence Metadata client instance. Please see
// https://sequence.build to get a `projectAccessKey`.
func NewMetadata(projectAccessKey string, options ...Options) Metadata {
opts := Options{}
if len(options) > 0 {
Expand Down
6 changes: 4 additions & 2 deletions relayer/proto/relayer.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,9 @@ type Options struct {
JWTAuthToken string
}

func NewRelayer(relayerServiceURL string, projectAccessKey string, options ...Options) Relayer {
// NewRpcRelayer creates a new Sequence Relayer client instance. See https://docs.sequence.xyz for a list of
// relayer urls, and please see https://sequence.build to get a `projectAccessKey`.
func NewRelayer(relayerURL string, projectAccessKey string, options ...Options) Relayer {
opts := Options{}
if len(options) > 0 {
opts = options[0]
Expand All @@ -29,7 +31,7 @@ func NewRelayer(relayerServiceURL string, projectAccessKey string, options ...Op
client.jwtAuthHeader = fmt.Sprintf("BEARER %s", opts.JWTAuthToken)
}

return NewRelayerClient(relayerServiceURL, client)
return NewRelayerClient(relayerURL, client)
}

type httpclient struct {
Expand Down
16 changes: 12 additions & 4 deletions relayer/rpc_relayer.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,13 +29,21 @@ type RpcRelayer struct {

var _ sequence.Relayer = &RpcRelayer{}

func NewRpcRelayer(provider *ethrpc.Provider, receiptListener *ethreceipts.ReceiptsListener, rpcRelayerURL string, httpClient proto.HTTPClient) (*RpcRelayer, error) {
_, err := url.Parse(rpcRelayerURL)
type Options = proto.Options

// NewRpcRelayer creates a new Sequence Relayer client instance. See https://docs.sequence.xyz for a list of
// relayer urls, and please see https://sequence.build to get a `projectAccessKey`.
func NewRpcRelayer(relayerURL string, projectAccessKey string, provider *ethrpc.Provider, receiptListener *ethreceipts.ReceiptsListener, options ...Options) (*RpcRelayer, error) {
// TODO: move receiptListener to Options, and if unspecified, use the Sequence Indexer
// for the receipts listener instead. Or, we can also have the receipts filter method
// on the relayer service too.

_, err := url.Parse(relayerURL)
if err != nil {
return nil, fmt.Errorf("rpcRelayerURL is invalid: %w", err)
return nil, fmt.Errorf("relayerURL is invalid: %w", err)
}

service := proto.NewRelayerClient(rpcRelayerURL, httpClient)
service := proto.NewRelayer(relayerURL, projectAccessKey, options...)

return &RpcRelayer{
provider: provider,
Expand Down
3 changes: 1 addition & 2 deletions testutil/testutil.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ import (
"fmt"
"log"
"math/big"
"net/http"
"testing"
"time"

Expand Down Expand Up @@ -163,7 +162,7 @@ func (c *TestChain) V2SequenceContext() sequence.WalletContext {
}

func (c *TestChain) SetRpcRelayer(relayerURL string) error {
rpcRelayer, err := relayer.NewRpcRelayer(c.Provider, c.ReceiptsListener, relayerURL, http.DefaultClient)
rpcRelayer, err := relayer.NewRpcRelayer(relayerURL, "", c.Provider, c.ReceiptsListener)
if err != nil {
return err
}
Expand Down
6 changes: 6 additions & 0 deletions wallet.go
Original file line number Diff line number Diff line change
Expand Up @@ -131,14 +131,20 @@ func GenericNewWalletSingleOwner[C core.WalletConfig](owner Signer, optContext .
}
}

// V1NewWalletSingleOwner creates a new Sequence v1 wallet with a single owner.
//
// Deprecated: use NewWalletSingleOwner instead. V1NewWalletSingleOwner is kept for historical
// compatibility and should not be used.
func V1NewWalletSingleOwner(owner Signer, optContext ...WalletContext) (*Wallet[*v1.WalletConfig], error) {
return GenericNewWalletSingleOwner[*v1.WalletConfig](owner, optContext...)
}

// V2NewWalletSingleOwner creates a new Sequence v2 wallet with a single owner.
func V2NewWalletSingleOwner(owner Signer, optContext ...WalletContext) (*Wallet[*v2.WalletConfig], error) {
return GenericNewWalletSingleOwner[*v2.WalletConfig](owner, optContext...)
}

// NewWalletSingleOwner creates a new Sequence v2 wallet with a single owner.
func NewWalletSingleOwner(owner Signer, optContext ...WalletContext) (*Wallet[*v2.WalletConfig], error) {
return V2NewWalletSingleOwner(owner, optContext...)
}
Expand Down

0 comments on commit bb16c0f

Please sign in to comment.