Add working Crawler, Scraper and Indexer
This commit is contained in:
@@ -15,34 +15,22 @@ var (
|
||||
ErrInvalidURL = errors.New("error: invalid or empty URL")
|
||||
)
|
||||
|
||||
func GetLinks(url string) (linkCh chan string, errCh chan error) {
|
||||
linkCh = make(chan string)
|
||||
errCh = make(chan error)
|
||||
|
||||
func GetLinks(url string) (links chan string, err error) {
|
||||
if url == "" {
|
||||
errCh <- ErrInvalidURL
|
||||
return
|
||||
return nil, ErrInvalidURL
|
||||
}
|
||||
|
||||
match, err := regexp.MatchString(`^https?://.*`, url)
|
||||
if err != nil {
|
||||
log.WithError(err).Error("error parsing url")
|
||||
errCh <- fmt.Errorf("error parsing url %s: %w", url, err)
|
||||
return
|
||||
return nil, fmt.Errorf("error parsing url %s: %w", url, err)
|
||||
}
|
||||
|
||||
if !match {
|
||||
errCh <- ErrInvalidURL
|
||||
return
|
||||
return nil, ErrInvalidURL
|
||||
}
|
||||
|
||||
scrapedLinks := FindLinks(url)
|
||||
|
||||
for link := range scrapedLinks {
|
||||
linkCh <- link
|
||||
}
|
||||
|
||||
return
|
||||
return FindLinks(url), nil
|
||||
}
|
||||
|
||||
func FindLinks(url string) chan string {
|
||||
|
||||
Reference in New Issue
Block a user