Files
warmbly/internal/api/handler/handler.go
T
Matthew Meszaros 43d24bc3d7 feat: customer-defined warmup routing rules on premium pool
new warmup_routing_rules table + repo + REST endpoints under /warmup/
routing. each rule matches a (sender, recipient) pair by domain, TLD,
provider bucket, or any wildcard, with a weight multiplier on the
selector. weight > 1 prefers the pairing, < 1 discourages, 0 excludes.
rules are evaluated in priority order (ascending) and combined with the
existing domain-diversity weighting. example use case: a customer can
say 'send Gmail-recipient warmup only from Google-classified senders'
with one rule; or 'never send to acme.com from this org's mailboxes'
with weight=0. premium pool only — free pool ignores rules.
2026-05-25 15:42:50 +00:00

120 lines
4.1 KiB
Go

package handler
import (
"github.com/warmbly/warmbly/internal/app/admin"
"github.com/warmbly/warmbly/internal/app/advanced"
"github.com/warmbly/warmbly/internal/app/analytics"
"github.com/warmbly/warmbly/internal/app/apikey"
"github.com/warmbly/warmbly/internal/app/audit"
"github.com/warmbly/warmbly/internal/app/auth"
"github.com/warmbly/warmbly/internal/app/campaign"
"github.com/warmbly/warmbly/internal/app/contact"
"github.com/warmbly/warmbly/internal/app/crm"
"github.com/warmbly/warmbly/internal/app/dangerzone"
"github.com/warmbly/warmbly/internal/app/email"
"github.com/warmbly/warmbly/internal/app/emailsend"
"github.com/warmbly/warmbly/internal/app/feature"
"github.com/warmbly/warmbly/internal/app/group"
"github.com/warmbly/warmbly/internal/app/organization"
"github.com/warmbly/warmbly/internal/app/ratelimit"
"github.com/warmbly/warmbly/internal/app/releases"
"github.com/warmbly/warmbly/internal/app/sequence"
"github.com/warmbly/warmbly/internal/app/socket"
"github.com/warmbly/warmbly/internal/app/stripe"
"github.com/warmbly/warmbly/internal/app/subscription"
"github.com/warmbly/warmbly/internal/app/template"
"github.com/warmbly/warmbly/internal/app/token"
"github.com/warmbly/warmbly/internal/app/trial"
"github.com/warmbly/warmbly/internal/app/tz"
"github.com/warmbly/warmbly/internal/app/unibox"
"github.com/warmbly/warmbly/internal/app/user"
"github.com/warmbly/warmbly/internal/app/warmup"
"github.com/warmbly/warmbly/internal/app/worker"
"github.com/warmbly/warmbly/internal/app/worker_orchestrator"
"github.com/warmbly/warmbly/internal/infrastructure/storage"
"github.com/warmbly/warmbly/internal/notify"
"github.com/warmbly/warmbly/internal/repository"
"github.com/warmbly/warmbly/internal/tasks"
)
type Handler struct {
AuthService auth.AuthService
TokenService token.TokenService
UserService user.UserService
EmailService email.EmailService
CampaignService campaign.CampaignService
ContactService contact.ContactService
SequenceService sequence.SequenceService
UniboxService unibox.UniboxService
FolderService group.GroupService
TagService group.GroupService
CategoryService group.GroupService
TzService tz.TzService
SocketService socket.SocketService
TasksService tasks.TasksService
// New services
APIKeyService apikey.APIKeyService
AnalyticsService analytics.AnalyticsService
AuditService audit.AuditService
RateLimitService ratelimit.RateLimitService
// Subscription & billing
SubscriptionService subscription.SubscriptionService
StripeService stripe.StripeService
// Trial & feature gates
TrialService trial.TrialService
FeatureGateService feature.FeatureGateService
WorkerAssignmentService worker.WorkerAssignmentService
// Organization & IAM
OrganizationService organization.OrganizationService
// CRM
CRMService crm.CRMService
// Email send & templates
TemplateService template.TemplateService
EmailSendService emailsend.EmailSendService
// Admin
AdminService admin.AdminService
// Worker orchestration (SSH-driven lifecycle for admin-managed workers)
WorkerOrchestrator *worker_orchestrator.Orchestrator
WorkerRepo repository.WorkerRepository
CredentialsRepo repository.CredentialsRepository
ReleasesService *releases.Service
// Notifications
EmailNotificationService notify.EmailNotificationService
// Advanced outreach controls
AdvancedService advanced.Service
// Warmup health
WarmupService warmup.Service
// Warmup routing rules — customer-defined preferences for premium-pool
// partner selection (e.g. Gmail recipients from Google Workspace senders).
WarmupRoutingRepo repository.WarmupRoutingRepository
// Public websocket URL used by frontend clients
WebsocketURI string
// Object storage for user-uploaded artifacts (avatars, etc.).
Storage *storage.Client
// Direct repositories used by handlers that don't yet have a
// service layer (avatars, etc.). Keep narrow and add a service
// only when business logic accumulates.
UserRepo repository.UserRepository
OrgRepo repository.OrganizationRepository
// Danger zone (delayed deletions for orgs & user accounts)
DangerZoneService dangerzone.Service
}