Added improved affiliate URL logic for entities.
This commit is contained in:
@@ -1,5 +1,4 @@
|
||||
import config from 'config';
|
||||
import util from 'util'; /* eslint-disable-line no-unused-vars */
|
||||
import { MerkleJson } from 'merkle-json';
|
||||
|
||||
import { knexQuery as knex, knexOwner, knexManticore } from './knex.js';
|
||||
@@ -15,57 +14,11 @@ import escape from '../utils/escape-manticore.js';
|
||||
import promiseProps from '../utils/promise-props.js';
|
||||
import initLogger from './logger.js';
|
||||
import { curateRevision } from './revisions.js';
|
||||
import { getAffiliateSceneUrl } from './affiliates.js';
|
||||
|
||||
const logger = initLogger();
|
||||
const mj = new MerkleJson();
|
||||
|
||||
function getWatchUrl(scene) {
|
||||
if (scene.url) {
|
||||
return scene.url;
|
||||
}
|
||||
|
||||
if (scene.channel && (scene.channel.isIndependent || scene.channel.type === 'network')) {
|
||||
return scene.channel.url;
|
||||
}
|
||||
|
||||
if (scene.network) {
|
||||
return scene.network.url;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
function getAffiliateUrl(scene) {
|
||||
const watchUrl = getWatchUrl(scene);
|
||||
|
||||
if (!watchUrl) {
|
||||
return null;
|
||||
}
|
||||
|
||||
if (!scene.affiliate) {
|
||||
return watchUrl;
|
||||
}
|
||||
|
||||
if (scene.affiliate.url?.includes('/track')
|
||||
&& scene.affiliate.parameters.scene !== false
|
||||
&& (!scene.channel.isIndependent || scene.channel.id === scene.affiliate.entityId)) { // standard NATS redirect
|
||||
const { pathname, search } = new URL(watchUrl);
|
||||
|
||||
return `${scene.affiliate.url}${pathname.replace(/^\/trial/, '')}${search}`; // replace needed for Jules Jordan, verify behavior on other sites
|
||||
}
|
||||
|
||||
if (scene.affiliate.parameters.query) { // used by e.g. Bang
|
||||
const newParams = new URLSearchParams({
|
||||
...Object.fromEntries(new URL(watchUrl).searchParams),
|
||||
...Object.fromEntries(new URLSearchParams(scene.affiliate.parameters.query)),
|
||||
});
|
||||
|
||||
return `${watchUrl}?${newParams.toString()}`;
|
||||
}
|
||||
|
||||
return watchUrl;
|
||||
}
|
||||
|
||||
function curateScene(rawScene, assets) {
|
||||
if (!rawScene) {
|
||||
return null;
|
||||
@@ -164,7 +117,7 @@ function curateScene(rawScene, assets) {
|
||||
isNew: assets.lastBatchId === rawScene.created_batch_id,
|
||||
};
|
||||
|
||||
curatedScene.watchUrl = getAffiliateUrl(curatedScene);
|
||||
curatedScene.watchUrl = getAffiliateSceneUrl(curatedScene);
|
||||
|
||||
return curatedScene;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user