Add the proxing to metadata-agregator
This commit is contained in:
@@ -34,6 +34,10 @@ type Config struct {
|
||||
Username string `yaml:"username"`
|
||||
Password string `yaml:"password"`
|
||||
} `yaml:"torrent"`
|
||||
|
||||
Metadata struct {
|
||||
Endpoint string `yaml:"endpoint"`
|
||||
} `yaml:"metadata"`
|
||||
}
|
||||
|
||||
func (t *IndexerType) UnmarshalYAML(unmarshal func(any) error) error {
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
package metadata
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/rs/zerolog/log"
|
||||
"google.golang.org/grpc"
|
||||
"google.golang.org/grpc/credentials/insecure"
|
||||
|
||||
pb "homelab.lan/music-agregator/gen/metadata/v1"
|
||||
)
|
||||
|
||||
func newMetadataClient(endpoint string) (pb.MetadataServiceClient, *grpc.ClientConn, error) {
|
||||
log.Trace().Str("endpoint", endpoint).Msg("connecting to metadata service")
|
||||
|
||||
conn, err := grpc.NewClient(endpoint, grpc.WithTransportCredentials(insecure.NewCredentials()))
|
||||
if err != nil {
|
||||
return nil, nil, fmt.Errorf("connecting to metadata service: %w", err)
|
||||
}
|
||||
|
||||
log.Info().Str("endpoint", endpoint).Msg("metadata service connected")
|
||||
|
||||
return pb.NewMetadataServiceClient(conn), conn, nil
|
||||
}
|
||||
@@ -0,0 +1,72 @@
|
||||
package metadata
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/rs/zerolog/log"
|
||||
"google.golang.org/grpc"
|
||||
|
||||
pb "homelab.lan/music-agregator/gen/metadata/v1"
|
||||
"homelab.lan/music-agregator/internal/config"
|
||||
)
|
||||
|
||||
type MetadataServer struct {
|
||||
client pb.MetadataServiceClient
|
||||
conn *grpc.ClientConn
|
||||
pb.UnimplementedMetadataServiceServer
|
||||
}
|
||||
|
||||
func NewMetadataServer(cfg config.Config) (*MetadataServer, error) {
|
||||
client, conn, err := newMetadataClient(cfg.Metadata.Endpoint)
|
||||
if err != nil {
|
||||
log.Err(err).Msg("failed to initialize MetadataServer")
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &MetadataServer{client: client, conn: conn}, nil
|
||||
}
|
||||
|
||||
func (s *MetadataServer) Close() {
|
||||
if s.conn != nil {
|
||||
s.conn.Close()
|
||||
}
|
||||
}
|
||||
|
||||
func (s *MetadataServer) Register(server *grpc.Server) {
|
||||
pb.RegisterMetadataServiceServer(server, s)
|
||||
}
|
||||
|
||||
func (s *MetadataServer) GetArtist(ctx context.Context, req *pb.GetArtistRequest) (*pb.Artist, error) {
|
||||
log.Debug().Msg("metadata GetArtist")
|
||||
return s.client.GetArtist(ctx, req)
|
||||
}
|
||||
|
||||
func (s *MetadataServer) SearchArtists(ctx context.Context, req *pb.SearchArtistsRequest) (*pb.SearchArtistsResponse, error) {
|
||||
log.Debug().Str("query", req.GetQuery()).Int32("limit", req.GetLimit()).Msg("metadata SearchArtists")
|
||||
return s.client.SearchArtists(ctx, req)
|
||||
}
|
||||
|
||||
func (s *MetadataServer) GetAlbum(ctx context.Context, req *pb.GetAlbumRequest) (*pb.Album, error) {
|
||||
log.Debug().Msg("metadata GetAlbum")
|
||||
return s.client.GetAlbum(ctx, req)
|
||||
}
|
||||
|
||||
func (s *MetadataServer) GetArtistAlbums(ctx context.Context, req *pb.GetArtistAlbumsRequest) (*pb.GetArtistAlbumsResponse, error) {
|
||||
log.Debug().Str("artist_id", req.GetArtistId()).Msg("metadata GetArtistAlbums")
|
||||
return s.client.GetArtistAlbums(ctx, req)
|
||||
}
|
||||
|
||||
func (s *MetadataServer) GetTrack(ctx context.Context, req *pb.GetTrackRequest) (*pb.Track, error) {
|
||||
log.Debug().Msg("metadata GetTrack")
|
||||
return s.client.GetTrack(ctx, req)
|
||||
}
|
||||
|
||||
func (s *MetadataServer) GetAlbumTracks(ctx context.Context, req *pb.GetAlbumTracksRequest) (*pb.GetAlbumTracksResponse, error) {
|
||||
log.Debug().Str("album_id", req.GetAlbumId()).Msg("metadata GetAlbumTracks")
|
||||
return s.client.GetAlbumTracks(ctx, req)
|
||||
}
|
||||
|
||||
func (s *MetadataServer) SyncArtist(ctx context.Context, req *pb.SyncArtistRequest) (*pb.SyncArtistResponse, error) {
|
||||
log.Debug().Msg("metadata SyncArtist")
|
||||
return s.client.SyncArtist(ctx, req)
|
||||
}
|
||||
Reference in New Issue
Block a user