mirror of https://github.com/h44z/wg-portal.git
				
				
				
			
		
			
				
	
	
		
			121 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			121 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Go
		
	
	
	
package backend
 | 
						|
 | 
						|
import (
 | 
						|
	"context"
 | 
						|
	"io"
 | 
						|
 | 
						|
	"github.com/h44z/wg-portal/internal/config"
 | 
						|
	"github.com/h44z/wg-portal/internal/domain"
 | 
						|
)
 | 
						|
 | 
						|
// region dependencies
 | 
						|
 | 
						|
type PeerServicePeerManager interface {
 | 
						|
	GetPeer(ctx context.Context, id domain.PeerIdentifier) (*domain.Peer, error)
 | 
						|
	GetUserPeers(ctx context.Context, id domain.UserIdentifier) ([]domain.Peer, error)
 | 
						|
	GetInterfaceAndPeers(ctx context.Context, id domain.InterfaceIdentifier) (*domain.Interface, []domain.Peer, error)
 | 
						|
	PreparePeer(ctx context.Context, id domain.InterfaceIdentifier) (*domain.Peer, error)
 | 
						|
	CreatePeer(ctx context.Context, peer *domain.Peer) (*domain.Peer, error)
 | 
						|
	UpdatePeer(ctx context.Context, peer *domain.Peer) (*domain.Peer, error)
 | 
						|
	DeletePeer(ctx context.Context, id domain.PeerIdentifier) error
 | 
						|
	CreateMultiplePeers(
 | 
						|
		ctx context.Context,
 | 
						|
		interfaceId domain.InterfaceIdentifier,
 | 
						|
		r *domain.PeerCreationRequest,
 | 
						|
	) ([]domain.Peer, error)
 | 
						|
	GetPeerStats(ctx context.Context, id domain.InterfaceIdentifier) ([]domain.PeerStatus, error)
 | 
						|
}
 | 
						|
 | 
						|
type PeerServiceConfigFileManager interface {
 | 
						|
	GetPeerConfig(ctx context.Context, id domain.PeerIdentifier, style string) (io.Reader, error)
 | 
						|
	GetPeerConfigQrCode(ctx context.Context, id domain.PeerIdentifier, style string) (io.Reader, error)
 | 
						|
}
 | 
						|
 | 
						|
type PeerServiceMailManager interface {
 | 
						|
	SendPeerEmail(ctx context.Context, linkOnly bool, style string, peers ...domain.PeerIdentifier) error
 | 
						|
}
 | 
						|
 | 
						|
// endregion dependencies
 | 
						|
 | 
						|
type PeerService struct {
 | 
						|
	cfg *config.Config
 | 
						|
 | 
						|
	peers      PeerServicePeerManager
 | 
						|
	configFile PeerServiceConfigFileManager
 | 
						|
	mailer     PeerServiceMailManager
 | 
						|
}
 | 
						|
 | 
						|
func NewPeerService(
 | 
						|
	cfg *config.Config,
 | 
						|
	peers PeerServicePeerManager,
 | 
						|
	configFile PeerServiceConfigFileManager,
 | 
						|
	mailer PeerServiceMailManager,
 | 
						|
) *PeerService {
 | 
						|
	return &PeerService{
 | 
						|
		cfg:        cfg,
 | 
						|
		peers:      peers,
 | 
						|
		configFile: configFile,
 | 
						|
		mailer:     mailer,
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func (p PeerService) GetInterfaceAndPeers(ctx context.Context, id domain.InterfaceIdentifier) (
 | 
						|
	*domain.Interface,
 | 
						|
	[]domain.Peer,
 | 
						|
	error,
 | 
						|
) {
 | 
						|
	return p.peers.GetInterfaceAndPeers(ctx, id)
 | 
						|
}
 | 
						|
 | 
						|
func (p PeerService) PreparePeer(ctx context.Context, id domain.InterfaceIdentifier) (*domain.Peer, error) {
 | 
						|
	return p.peers.PreparePeer(ctx, id)
 | 
						|
}
 | 
						|
 | 
						|
func (p PeerService) GetPeer(ctx context.Context, id domain.PeerIdentifier) (*domain.Peer, error) {
 | 
						|
	return p.peers.GetPeer(ctx, id)
 | 
						|
}
 | 
						|
 | 
						|
func (p PeerService) CreatePeer(ctx context.Context, peer *domain.Peer) (*domain.Peer, error) {
 | 
						|
	return p.peers.CreatePeer(ctx, peer)
 | 
						|
}
 | 
						|
 | 
						|
func (p PeerService) CreateMultiplePeers(
 | 
						|
	ctx context.Context,
 | 
						|
	interfaceId domain.InterfaceIdentifier,
 | 
						|
	r *domain.PeerCreationRequest,
 | 
						|
) ([]domain.Peer, error) {
 | 
						|
	return p.peers.CreateMultiplePeers(ctx, interfaceId, r)
 | 
						|
}
 | 
						|
 | 
						|
func (p PeerService) UpdatePeer(ctx context.Context, peer *domain.Peer) (*domain.Peer, error) {
 | 
						|
	return p.peers.UpdatePeer(ctx, peer)
 | 
						|
}
 | 
						|
 | 
						|
func (p PeerService) DeletePeer(ctx context.Context, id domain.PeerIdentifier) error {
 | 
						|
	return p.peers.DeletePeer(ctx, id)
 | 
						|
}
 | 
						|
 | 
						|
func (p PeerService) GetPeerConfig(ctx context.Context, id domain.PeerIdentifier, style string) (io.Reader, error) {
 | 
						|
	return p.configFile.GetPeerConfig(ctx, id, style)
 | 
						|
}
 | 
						|
 | 
						|
func (p PeerService) GetPeerConfigQrCode(ctx context.Context, id domain.PeerIdentifier, style string) (
 | 
						|
	io.Reader,
 | 
						|
	error,
 | 
						|
) {
 | 
						|
	return p.configFile.GetPeerConfigQrCode(ctx, id, style)
 | 
						|
}
 | 
						|
 | 
						|
func (p PeerService) SendPeerEmail(
 | 
						|
	ctx context.Context,
 | 
						|
	linkOnly bool,
 | 
						|
	style string,
 | 
						|
	peers ...domain.PeerIdentifier,
 | 
						|
) error {
 | 
						|
	return p.mailer.SendPeerEmail(ctx, linkOnly, style, peers...)
 | 
						|
}
 | 
						|
 | 
						|
func (p PeerService) GetPeerStats(ctx context.Context, id domain.InterfaceIdentifier) ([]domain.PeerStatus, error) {
 | 
						|
	return p.peers.GetPeerStats(ctx, id)
 | 
						|
}
 |