| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- const OError = require('@overleaf/o-error')
- const url = require('url')
- const settings = require('@overleaf/settings')
- const logger = require('logger-sharelatex')
- const V1Api = require('../V1/V1Api')
- const sanitizeHtml = require('sanitize-html')
- module.exports = {
- getBrandVariationById,
- }
- function getBrandVariationById(brandVariationId, callback) {
- if (brandVariationId == null || brandVariationId === '') {
- return callback(new Error('Branding variation id not provided'))
- }
- logger.log({ brandVariationId }, 'fetching brand variation details from v1')
- V1Api.request(
- {
- uri: `/api/v2/brand_variations/${brandVariationId}`,
- },
- function (error, response, brandVariationDetails) {
- if (error != null) {
- OError.tag(error, 'error getting brand variation details', {
- brandVariationId,
- })
- return callback(error)
- }
- formatBrandVariationDetails(brandVariationDetails)
- sanitizeBrandVariationDetails(brandVariationDetails)
- callback(null, brandVariationDetails)
- }
- )
- }
- function formatBrandVariationDetails(details) {
- if (details.export_url != null) {
- details.export_url = setV1AsHostIfRelativeURL(details.export_url)
- }
- if (details.home_url != null) {
- details.home_url = setV1AsHostIfRelativeURL(details.home_url)
- }
- if (details.logo_url != null) {
- details.logo_url = setV1AsHostIfRelativeURL(details.logo_url)
- }
- if (details.journal_guidelines_url != null) {
- details.journal_guidelines_url = setV1AsHostIfRelativeURL(
- details.journal_guidelines_url
- )
- }
- if (details.journal_cover_url != null) {
- details.journal_cover_url = setV1AsHostIfRelativeURL(
- details.journal_cover_url
- )
- }
- if (details.submission_confirmation_page_logo_url != null) {
- details.submission_confirmation_page_logo_url = setV1AsHostIfRelativeURL(
- details.submission_confirmation_page_logo_url
- )
- }
- if (details.publish_menu_icon != null) {
- details.publish_menu_icon = setV1AsHostIfRelativeURL(
- details.publish_menu_icon
- )
- }
- }
- function sanitizeBrandVariationDetails(details) {
- if (details.submit_button_html) {
- details.submit_button_html = sanitizeHtml(
- details.submit_button_html,
- settings.modules.sanitize.options
- )
- }
- }
- function setV1AsHostIfRelativeURL(urlString) {
- // The first argument is the base URL to resolve against if the second argument is not absolute.
- // As it only applies if the second argument is not absolute, we can use it to transform relative URLs into
- // absolute ones using v1 as the host. If the URL is absolute (e.g. a filepicker one), then the base
- // argument is just ignored
- return url.resolve(settings.apis.v1.url, urlString)
- }
|