UNPKG

ghost

Version:

The professional publishing platform

51 lines (41 loc) 1.76 kB
const LinkClickRepository = require('./LinkClickRepository'); const PostLinkRepository = require('./PostLinkRepository'); const errors = require('@tryghost/errors'); const urlUtils = require('../../../shared/url-utils'); class LinkTrackingServiceWrapper { async init() { if (this.service) { // Already done return; } const linkRedirection = require('../link-redirection'); if (!linkRedirection.service) { throw new errors.InternalServerError({message: 'LinkRedirectionService should be initialised before LinkTrackingService'}); } // Wire up all the dependencies const models = require('../../models'); const {MemberLinkClickEvent} = require('../../../shared/events'); const DomainEvents = require('@tryghost/domain-events'); const LinkClickTrackingService = require('./LinkClickTrackingService'); const postLinkRepository = new PostLinkRepository({ LinkRedirect: models.Redirect, linkRedirectRepository: linkRedirection.linkRedirectRepository }); this.linkClickRepository = new LinkClickRepository({ MemberLinkClickEventModel: models.MemberClickEvent, Member: models.Member, MemberLinkClickEvent: MemberLinkClickEvent, DomainEvents }); // Expose the service this.service = new LinkClickTrackingService({ linkRedirectService: linkRedirection.service, linkClickRepository: this.linkClickRepository, postLinkRepository, DomainEvents, urlUtils }); await this.service.init(); } } module.exports = new LinkTrackingServiceWrapper();