Skip to content

Commit

Permalink
feat(rpc_user_agent)_: Added application version to the RPC user client
Browse files Browse the repository at this point in the history
  • Loading branch information
Samyoul committed Aug 15, 2024
1 parent c257874 commit 0e882f1
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 16 deletions.
28 changes: 14 additions & 14 deletions rpc/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,14 @@ import (
"net/http"
"net/url"
"reflect"
"runtime"
"sync"
"time"

"github.com/ethereum/go-ethereum/ethclient"
"github.com/ethereum/go-ethereum/log"
gethrpc "github.com/ethereum/go-ethereum/rpc"

appCommon "github.com/status-im/status-go/common"
"github.com/status-im/status-go/params"
"github.com/status-im/status-go/rpc/chain"
"github.com/status-im/status-go/rpc/network"
Expand All @@ -34,13 +34,16 @@ const (
providerInfura = "infura"
ProviderStatusProxy = "status-proxy"

mobile = "mobile"
desktop = "desktop"

// rpcUserAgentFormat 'procurator': *an agent representing others*, aka a "proxy"
// allows for the rpc client to have a dedicated user agent, which is useful for the proxy server logs.
rpcUserAgentFormat = "procuratee-%s/1.0"
rpcUserAgentFormat = "procuratee-%s/%s"

// rpcUserAgentUpstreamFormat a separate user agent format for upstream, because we should not be using upstream
// if we see this user agent in the logs that means parts of the application are using a malconfigured http client
rpcUserAgentUpstreamFormat = "procuratee-%s-upstream/1.0"
rpcUserAgentUpstreamFormat = "procuratee-%s-upstream/%s"
)

// List of RPC client errors.
Expand All @@ -50,20 +53,17 @@ var (

var (
// rpcUserAgentName the user agent
rpcUserAgentName = fmt.Sprintf(rpcUserAgentFormat, "no-GOOS")
rpcUserAgentUpstreamName = fmt.Sprintf(rpcUserAgentUpstreamFormat, "no-GOOS")
rpcUserAgentName = fmt.Sprintf(rpcUserAgentFormat, "no-GOOS", params.Version)
rpcUserAgentUpstreamName = fmt.Sprintf(rpcUserAgentUpstreamFormat, "no-GOOS", params.Version)
)

func init() {
switch runtime.GOOS {
case "android", "ios":
mobile := "mobile"
rpcUserAgentName = fmt.Sprintf(rpcUserAgentFormat, mobile)
rpcUserAgentUpstreamName = fmt.Sprintf(rpcUserAgentUpstreamFormat, mobile)
default:
desktop := "desktop"
rpcUserAgentName = fmt.Sprintf(rpcUserAgentFormat, desktop)
rpcUserAgentUpstreamName = fmt.Sprintf(rpcUserAgentUpstreamFormat, desktop)
if appCommon.IsMobilePlatform() {
rpcUserAgentName = fmt.Sprintf(rpcUserAgentFormat, mobile, params.Version)
rpcUserAgentUpstreamName = fmt.Sprintf(rpcUserAgentUpstreamFormat, mobile, params.Version)
} else {
rpcUserAgentName = fmt.Sprintf(rpcUserAgentFormat, desktop, params.Version)
rpcUserAgentUpstreamName = fmt.Sprintf(rpcUserAgentUpstreamFormat, desktop, params.Version)
}
}

Expand Down
4 changes: 2 additions & 2 deletions rpc/client_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -198,6 +198,6 @@ func TestGetClientsUsingCache(t *testing.T) {
}

func TestUserAgent(t *testing.T) {
require.Equal(t, "procuratee-desktop/1.0", rpcUserAgentName)
require.Equal(t, "procuratee-desktop-upstream/1.0", rpcUserAgentUpstreamName)
require.Equal(t, "procuratee-desktop/", rpcUserAgentName)
require.Equal(t, "procuratee-desktop-upstream/", rpcUserAgentUpstreamName)
}

0 comments on commit 0e882f1

Please sign in to comment.