github.com/status-im/status-go@v1.1.0/services/peer/api.go (about) 1 package peer 2 3 import ( 4 "context" 5 "errors" 6 ) 7 8 var ( 9 // ErrInvalidTopic error returned when the requested topic is not valid. 10 ErrInvalidTopic = errors.New("topic not valid") 11 12 // ErrInvalidRange error returned when max-min range is not valid. 13 ErrInvalidRange = errors.New("invalid range, Min should be lower or equal to Max") 14 15 // ErrDiscovererNotProvided error when discoverer is not being provided. 16 ErrDiscovererNotProvided = errors.New("discoverer not provided") 17 ) 18 19 // PublicAPI represents a set of APIs from the `web3.peer` namespace. 20 type PublicAPI struct { 21 s *Service 22 } 23 24 // NewAPI creates an instance of the peer API. 25 func NewAPI(s *Service) *PublicAPI { 26 return &PublicAPI{s: s} 27 } 28 29 // DiscoverRequest json request for peer_discover. 30 type DiscoverRequest struct { 31 Topic string `json:"topic"` 32 Max int `json:"max"` 33 Min int `json:"min"` 34 } 35 36 // Discover is an implementation of `peer_discover` or `web3.peer.discover` API. 37 func (api *PublicAPI) Discover(context context.Context, req DiscoverRequest) (err error) { 38 if api.s.d == nil { 39 return ErrDiscovererNotProvided 40 } 41 if len(req.Topic) == 0 { 42 return ErrInvalidTopic 43 } 44 if req.Max < req.Min { 45 return ErrInvalidRange 46 } 47 return api.s.d.Discover(req.Topic, req.Max, req.Min) 48 }