api.go 1.0 KB

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