This repository has been archived on 2023-04-18. You can view files and clone it, but cannot push or open issues or pull requests.
notificationarr/internal/service/radarr.go

57 lines
1.3 KiB
Go

package service
import (
"context"
"fmt"
"gitea.dwysokinski.me/Kichiyaki/notificationarr/internal/domain"
)
type Radarr struct {
publisher Publisher
}
func NewRadarr(publisher Publisher) *Radarr {
return &Radarr{
publisher: publisher,
}
}
func (s *Radarr) Process(ctx context.Context, payload domain.RadarrWebhookPayload) error {
title, err := s.buildTitle(payload.EventType, payload.Movie)
if err != nil {
return fmt.Errorf("buildTitle: %w", err)
}
msg, err := s.buildMessage(payload.EventType, payload.Movie)
if err != nil {
return fmt.Errorf("buildMessage: %w", err)
}
if err := s.publisher.Publish(ctx, title, msg); err != nil {
return fmt.Errorf("Publisher.Publish: %w", err)
}
return nil
}
func (s *Radarr) buildTitle(evType domain.RadarrEventType, _ domain.RadarrMovie) (string, error) {
switch evType {
case domain.RadarrEventTypeDownload,
domain.RadarrEventTypeTest:
return "New movie available (Radarr)", nil
default:
return "", domain.ErrUnsupportedRadarrEventType
}
}
func (s *Radarr) buildMessage(evType domain.RadarrEventType, movie domain.RadarrMovie) (string, error) {
switch evType {
case domain.RadarrEventTypeDownload,
domain.RadarrEventTypeTest:
return movie.Title, nil
default:
return "", domain.ErrUnsupportedRadarrEventType
}
}