basic app

This commit is contained in:
nquidox 2025-10-02 20:35:53 +03:00
parent 0a6e246a5c
commit 8d6c2b6687
30 changed files with 1469 additions and 0 deletions

View file

@ -0,0 +1,7 @@
package network
type Network struct{}
func NewHandler() *Network {
return &Network{}
}

View file

@ -0,0 +1,12 @@
package network
import (
"context"
"parsing-service/internal/shared"
pb "parsing-service/proto/taskProcessor"
)
type Handler interface {
RequestTasks(ctx context.Context, client pb.TaskProcessorClient) []shared.TaskResponse
SendResult(client pb.TaskProcessorClient, tasksDone []shared.TaskResult)
}

View file

@ -0,0 +1,38 @@
package network
import (
"context"
log "github.com/sirupsen/logrus"
"google.golang.org/protobuf/types/known/emptypb"
"io"
"parsing-service/internal/shared"
pb "parsing-service/proto/taskProcessor"
)
func (n *Network) RequestTasks(ctx context.Context, client pb.TaskProcessorClient) []shared.TaskResponse {
var tasksList []shared.TaskResponse
stream, err := client.RequestTask(ctx, &emptypb.Empty{})
if err != nil {
log.WithField("err", err).Error("Error calling Request Tasks")
return nil
}
for {
response, err := stream.Recv()
if err == io.EOF {
break
}
if err != nil {
log.WithField("err", err).Error("Error receiving response")
return nil
}
tasksList = append(tasksList, shared.TaskResponse{
MerchUuid: response.MerchUuid,
OriginSurugayaLink: response.OriginSurugayaLink,
OriginMandarakeLink: response.OriginMandarakeLink,
})
log.WithField("entry added", response.MerchUuid).Debug("gRPC Receive")
}
return tasksList
}

35
internal/network/send.go Normal file
View file

@ -0,0 +1,35 @@
package network
import (
"context"
log "github.com/sirupsen/logrus"
"parsing-service/internal/shared"
pb "parsing-service/proto/taskProcessor"
)
func (n *Network) SendResult(client pb.TaskProcessorClient, tasksDone []shared.TaskResult) {
stream, err := client.SendResult(context.Background())
if err != nil {
log.Fatalf("Error calling PostMerch: %v", err)
}
merchResponses := make([]pb.Result, len(tasksDone))
for i, task := range tasksDone {
merchResponses[i] = pb.Result{
MerchUuid: task.MerchUuid,
OriginName: task.Origin,
Price: task.Price,
}
}
for i := range merchResponses {
response := &merchResponses[i]
if err = stream.Send(response); err != nil {
log.Fatalf("Error sending request: %v", err)
}
}
if err = stream.CloseSend(); err != nil {
log.Fatalf("Error closing stream: %v", err)
}
}