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  }