forked from mirror/go-ethereum
Merge branch 'feature/clientid' of https://github.com/ethersphere/eth-go into ethersphere-feature/clientid
commit
db60ebbbd7
@ -0,0 +1,54 @@ |
|||||||
|
package ethwire |
||||||
|
|
||||||
|
import ( |
||||||
|
"fmt" |
||||||
|
"runtime" |
||||||
|
) |
||||||
|
|
||||||
|
// should be used in Peer handleHandshake, incorporate Caps, ProtocolVersion, Pubkey etc.
|
||||||
|
type ClientIdentity interface { |
||||||
|
String() string |
||||||
|
} |
||||||
|
|
||||||
|
type SimpleClientIdentity struct { |
||||||
|
clientString string |
||||||
|
clientIdentifier string |
||||||
|
version string |
||||||
|
customIdentifier string |
||||||
|
os string |
||||||
|
implementation string |
||||||
|
} |
||||||
|
|
||||||
|
func NewSimpleClientIdentity(clientIdentifier string, version string, customIdentifier string) *SimpleClientIdentity { |
||||||
|
clientIdentity := &SimpleClientIdentity{ |
||||||
|
clientIdentifier: clientIdentifier, |
||||||
|
version: version, |
||||||
|
customIdentifier: customIdentifier, |
||||||
|
os: runtime.GOOS, |
||||||
|
implementation: "Go", |
||||||
|
} |
||||||
|
clientIdentity.init() |
||||||
|
return clientIdentity |
||||||
|
} |
||||||
|
|
||||||
|
func (c *SimpleClientIdentity) init() { |
||||||
|
c.clientString = fmt.Sprintf("%s/v%s/%s/%s/%s", |
||||||
|
c.clientIdentifier, |
||||||
|
c.version, |
||||||
|
c.customIdentifier, |
||||||
|
c.os, |
||||||
|
c.implementation) |
||||||
|
} |
||||||
|
|
||||||
|
func (c *SimpleClientIdentity) String() string { |
||||||
|
return c.clientString |
||||||
|
} |
||||||
|
|
||||||
|
func (c *SimpleClientIdentity) SetCustomIdentifier(customIdentifier string) { |
||||||
|
c.customIdentifier = customIdentifier |
||||||
|
c.init() |
||||||
|
} |
||||||
|
|
||||||
|
func (c *SimpleClientIdentity) GetCustomIdentifier() string { |
||||||
|
return c.customIdentifier |
||||||
|
} |
@ -0,0 +1,30 @@ |
|||||||
|
package ethwire |
||||||
|
|
||||||
|
import ( |
||||||
|
"fmt" |
||||||
|
"runtime" |
||||||
|
"testing" |
||||||
|
) |
||||||
|
|
||||||
|
func TestClientIdentity(t *testing.T) { |
||||||
|
clientIdentity := NewSimpleClientIdentity("Ethereum(G)", "0.5.16", "test") |
||||||
|
clientString := clientIdentity.String() |
||||||
|
expected := fmt.Sprintf("Ethereum(G)/v0.5.16/test/%s/Go", runtime.GOOS) |
||||||
|
if clientString != expected { |
||||||
|
t.Error("Expected clientIdentity to be %v, got %v", expected, clientString) |
||||||
|
} |
||||||
|
customIdentifier := clientIdentity.GetCustomIdentifier() |
||||||
|
if customIdentifier != "test" { |
||||||
|
t.Error("Expected clientIdentity.GetCustomIdentifier() to be 'test', got %v", customIdentifier) |
||||||
|
} |
||||||
|
clientIdentity.SetCustomIdentifier("test2") |
||||||
|
customIdentifier = clientIdentity.GetCustomIdentifier() |
||||||
|
if customIdentifier != "test2" { |
||||||
|
t.Error("Expected clientIdentity.GetCustomIdentifier() to be 'test2', got %v", customIdentifier) |
||||||
|
} |
||||||
|
clientString = clientIdentity.String() |
||||||
|
expected = fmt.Sprintf("Ethereum(G)/v0.5.16/test2/%s/Go", runtime.GOOS) |
||||||
|
if clientString != expected { |
||||||
|
t.Error("Expected clientIdentity to be %v, got %v", expected, clientString) |
||||||
|
} |
||||||
|
} |
Loading…
Reference in new issue