huge refactor
This commit is contained in:
parent
8d6c2b6687
commit
38829c0179
23 changed files with 544 additions and 141 deletions
|
|
@ -1,18 +1,71 @@
|
|||
package parsers
|
||||
|
||||
import (
|
||||
"context"
|
||||
log "github.com/sirupsen/logrus"
|
||||
"parsing-service/internal/appState"
|
||||
"parsing-service/internal/shared"
|
||||
"io"
|
||||
"task-processor/internal/appState"
|
||||
"task-processor/internal/shared"
|
||||
sc "task-processor/proto/surugayaScrapper"
|
||||
)
|
||||
|
||||
type SurugayaParser struct{}
|
||||
|
||||
func NewSurugayaParser() *SurugayaParser {
|
||||
return &SurugayaParser{}
|
||||
type SurugayaParser struct {
|
||||
scrapper sc.SurugayaScrapperClient
|
||||
ctx context.Context
|
||||
}
|
||||
|
||||
func (s *SurugayaParser) HandleTask(task shared.Task, sender chan shared.TaskResult, state *appState.State) error {
|
||||
log.Debug("Handling Surugaya Task")
|
||||
return nil
|
||||
func NewSurugayaParser(ctx context.Context, scrapper sc.SurugayaScrapperClient) *SurugayaParser {
|
||||
log.Debug("Surugaya parser init")
|
||||
return &SurugayaParser{
|
||||
scrapper: scrapper,
|
||||
ctx: ctx,
|
||||
}
|
||||
}
|
||||
|
||||
func (s *SurugayaParser) HandleTasks(task []shared.Task, sender chan shared.TaskResult, state *appState.State) {
|
||||
log.WithField("count", len(task)).Debug("Handling Surugaya Tasks")
|
||||
|
||||
stream, err := s.scrapper.ProcessTasks(s.ctx)
|
||||
if err != nil {
|
||||
log.WithField("err", err).Error("Error creating stream")
|
||||
return
|
||||
}
|
||||
|
||||
for _, t := range task {
|
||||
if err = stream.Send(&sc.Task{
|
||||
MerchUuid: t.MerchUuid,
|
||||
Link: t.Link,
|
||||
}); err != nil {
|
||||
log.WithField("err", err).Error("Error sending task")
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
if err = stream.CloseSend(); err != nil {
|
||||
log.WithError(err).Warn("Failed to close send stream")
|
||||
}
|
||||
|
||||
counter := 0
|
||||
for {
|
||||
result, err := stream.Recv()
|
||||
|
||||
if err == io.EOF {
|
||||
break
|
||||
}
|
||||
|
||||
if err != nil {
|
||||
log.WithError(err).Error("Error receiving result")
|
||||
return
|
||||
}
|
||||
|
||||
sender <- shared.TaskResult{
|
||||
MerchUuid: result.GetMerchUuid(),
|
||||
Origin: shared.OriginSurugaya,
|
||||
Price: result.GetPrice(),
|
||||
}
|
||||
counter++
|
||||
}
|
||||
|
||||
log.WithField("count", counter).Debug("All Surugaya results received")
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue