Add working Crawler, Scraper and Indexer

This commit is contained in:
James Mills
2021-02-01 22:38:17 +10:00
parent 753aff61a1
commit b398a3a709
8 changed files with 328 additions and 21 deletions

View File

@@ -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 {