github.com/Unheilbar/quorum@v1.0.0/qlight/api.go (about) 1 package qlight 2 3 import "github.com/ethereum/go-ethereum/rpc" 4 5 type RunningPeerAuthUpdater interface { 6 UpdateTokenForRunningQPeers(token string) error 7 } 8 9 type PrivateQLightAPI struct { 10 tokenHolder *TokenHolder 11 peerUpdater RunningPeerAuthUpdater 12 rpcClient *rpc.Client 13 } 14 15 // NewPublicEthereumAPI creates a new Ethereum protocol API for full nodes. 16 func NewPrivateQLightAPI(peerUpdater RunningPeerAuthUpdater, rpcClient *rpc.Client) *PrivateQLightAPI { 17 return &PrivateQLightAPI{peerUpdater: peerUpdater, rpcClient: rpcClient} 18 } 19 20 func (p *PrivateQLightAPI) SetCurrentToken(token string) { 21 p.tokenHolder.SetCurrentToken(token) 22 p.peerUpdater.UpdateTokenForRunningQPeers(token) 23 if p.rpcClient != nil { 24 if len(token) > 0 { 25 p.rpcClient.WithHTTPCredentials(p.tokenHolder.HttpCredentialsProvider) 26 } else { 27 p.rpcClient.WithHTTPCredentials(nil) 28 } 29 } 30 } 31 32 func (p *PrivateQLightAPI) GetCurrentToken() string { 33 return p.tokenHolder.CurrentToken() 34 } 35 36 func (p *PrivateQLightAPI) ReloadPlugin() error { 37 return p.tokenHolder.ReloadPlugin() 38 }