41 lines
835 B
Go
41 lines
835 B
Go
|
|
package scrapper
|
||
|
|
|
||
|
|
import (
|
||
|
|
"context"
|
||
|
|
"sync"
|
||
|
|
"time"
|
||
|
|
)
|
||
|
|
|
||
|
|
const (
|
||
|
|
originName = "mandarake"
|
||
|
|
zeroPrice int32 = 0
|
||
|
|
taxMultiplier float64 = 1.1
|
||
|
|
pkgLogHeader = "Scrapper |"
|
||
|
|
logWorker = "worker:"
|
||
|
|
logTaskWarning = "task warning:"
|
||
|
|
logGetPrice = "get price:"
|
||
|
|
)
|
||
|
|
|
||
|
|
type Scrapper struct {
|
||
|
|
externalBrowser string
|
||
|
|
goroutinesNumber int
|
||
|
|
taskTimeout time.Duration
|
||
|
|
poolCancel context.CancelFunc
|
||
|
|
allocCancel context.CancelFunc
|
||
|
|
wg sync.WaitGroup
|
||
|
|
}
|
||
|
|
|
||
|
|
type Deps struct {
|
||
|
|
ExternalBrowser string
|
||
|
|
GoroutinesNumber int
|
||
|
|
TaskTimeout int
|
||
|
|
}
|
||
|
|
|
||
|
|
func New(deps Deps) PriceScrapper {
|
||
|
|
return &Scrapper{
|
||
|
|
externalBrowser: deps.ExternalBrowser,
|
||
|
|
goroutinesNumber: deps.GoroutinesNumber,
|
||
|
|
taskTimeout: time.Second * time.Duration(deps.TaskTimeout),
|
||
|
|
}
|
||
|
|
}
|