V2 #2
@ -3,43 +3,62 @@ package plug
|
|||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"log"
|
||||||
|
"net"
|
||||||
|
|
||||||
"git.dragse.it/anthrove/otter-space-sdk/v2/pkg/database"
|
"git.dragse.it/anthrove/otter-space-sdk/v2/pkg/database"
|
||||||
"git.dragse.it/anthrove/otter-space-sdk/v2/pkg/models"
|
"git.dragse.it/anthrove/otter-space-sdk/v2/pkg/models"
|
||||||
"net"
|
|
||||||
|
|
||||||
pb "git.dragse.it/anthrove/plug-sdk/pkg/grpc"
|
pb "git.dragse.it/anthrove/plug-sdk/pkg/grpc"
|
||||||
"google.golang.org/grpc"
|
"google.golang.org/grpc"
|
||||||
)
|
)
|
||||||
|
|
||||||
type TaskExecution func(ctx context.Context, graph database.OtterSpace, sourceUsername string, anthroveUser models.User, deepScrape bool, cancelFunction func()) error
|
type TaskExecution func(ctx context.Context, database database.OtterSpace, sourceUsername string, anthroveUser models.User, deepScrape bool, apiKey string, cancelFunction func()) error
|
||||||
|
type SendMessageExecution func(ctx context.Context, userSourceID string, message string)
|
||||||
|
|
||||||
type Server struct {
|
type Plug struct {
|
||||||
address string
|
address string
|
||||||
port string
|
port string
|
||||||
ctx context.Context
|
ctx context.Context
|
||||||
database database.OtterSpace
|
database database.OtterSpace
|
||||||
taskExecutionFunction TaskExecution
|
taskExecutionFunction TaskExecution
|
||||||
|
sendMessageExecution SendMessageExecution
|
||||||
|
source models.Source
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewServer(ctx context.Context, address string, port string) Server {
|
func NewPlug(ctx context.Context, address string, port string, source models.Source) Plug {
|
||||||
return Server{
|
return Plug{
|
||||||
ctx: ctx,
|
ctx: ctx,
|
||||||
address: address,
|
address: address,
|
||||||
port: port,
|
port: port,
|
||||||
|
source: source,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Server) Listen() error {
|
func (p *Plug) Listen() error {
|
||||||
var err error
|
var err error
|
||||||
|
|
||||||
lis, err := net.Listen("tcp", fmt.Sprintf("%s:%s", s.address, s.port))
|
plugSource, err := p.database.GetSourceByDomain(p.ctx, models.AnthroveSourceDomain(p.source.Domain))
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
if plugSource == nil {
|
||||||
|
log.Printf("no source found for domain %p, initilazing source!", p.source.Domain)
|
||||||
|
err := p.database.CreateSource(p.ctx, &p.source)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
lis, err := net.Listen("tcp", fmt.Sprintf("%p:%p", p.address, p.port))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
grpcServer := grpc.NewServer()
|
grpcServer := grpc.NewServer()
|
||||||
|
|
||||||
pb.RegisterPlugConnectorServer(grpcServer, NewGrpcServer(s.database, s.taskExecutionFunction))
|
pb.RegisterPlugConnectorServer(grpcServer, NewGrpcServer(p.database, p.taskExecutionFunction))
|
||||||
|
|
||||||
err = grpcServer.Serve(lis)
|
err = grpcServer.Serve(lis)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -49,10 +68,14 @@ func (s *Server) Listen() error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Server) WithGraphConnection(graph database.OtterSpace) {
|
func (p *Plug) WithOtterSpace(graph database.OtterSpace) {
|
||||||
s.database = graph
|
p.database = graph
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Server) TaskExecutionFunction(function TaskExecution) {
|
func (p *Plug) TaskExecutionFunction(function TaskExecution) {
|
||||||
s.taskExecutionFunction = function
|
p.taskExecutionFunction = function
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p *Plug) SendMessageExecution(function SendMessageExecution) {
|
||||||
|
p.sendMessageExecution = function
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user