You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
bathyscaphe/internal/event/event.go

56 lines
1.6 KiB
Go

package event
//go:generate mockgen -destination=../event_mock/event_mock.go -package=event_mock . Publisher,Subscriber
import "time"
const (
// NewURLExchange is the exchange used when an URL is schedule for crawling
NewURLExchange = "url.new"
// TimeoutURLExchange is the exchange used when a crawling fail because of timeout
TimeoutURLExchange = "url.timeout"
// NewResourceExchange is the exchange used when a new resource has been crawled
NewResourceExchange = "resource.new"
// ConfigExchange is the exchange used to dispatch new configuration
ConfigExchange = "config"
)
// Event represent a event
type Event interface {
// Exchange returns the exchange where event should be push
Exchange() string
}
// NewURLEvent represent an URL to crawl
type NewURLEvent struct {
URL string `json:"url"`
}
// Exchange returns the exchange where event should be push
func (msg *NewURLEvent) Exchange() string {
return NewURLExchange
}
// TimeoutURLEvent represent a failed crawling because of timeout
type TimeoutURLEvent struct {
URL string `json:"url"`
}
// Exchange returns the exchange where event should be push
func (msg *TimeoutURLEvent) Exchange() string {
return TimeoutURLExchange
}
// NewResourceEvent represent a crawled resource
type NewResourceEvent struct {
URL string `json:"url"`
Body string `json:"body"`
Headers map[string]string `json:"headers"`
Time time.Time `json:"time"`
}
// Exchange returns the exchange where event should be push
func (msg *NewResourceEvent) Exchange() string {
return NewResourceExchange
}