BrandVariationsHandler.coffee 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. url = require "url"
  2. settings = require "settings-sharelatex"
  3. logger = require "logger-sharelatex"
  4. V1Api = require "../V1/V1Api"
  5. module.exports = BrandVariationsHandler =
  6. getBrandVariationById: (brandVariationId, callback = (error, brandVariationDetails) ->)->
  7. if !brandVariationId? or brandVariationId == ""
  8. return callback(new Error("Branding variation id not provided"))
  9. logger.log brandVariationId: brandVariationId, "fetching brand variation details from v1"
  10. V1Api.request {
  11. uri: "/api/v2/brand_variations/#{brandVariationId}"
  12. }, (error, response, brandVariationDetails) ->
  13. if error?
  14. logger.err { brandVariationId, error}, "error getting brand variation details"
  15. return callback(error)
  16. _formatBrandVariationDetails brandVariationDetails
  17. callback(null, brandVariationDetails)
  18. _formatBrandVariationDetails = (details) ->
  19. if details.export_url?
  20. details.export_url = _setV1AsHostIfRelativeURL details.export_url
  21. if details.home_url?
  22. details.home_url = _setV1AsHostIfRelativeURL details.home_url
  23. if details.logo_url?
  24. details.logo_url = _setV1AsHostIfRelativeURL details.logo_url
  25. if details.journal_guidelines_url?
  26. details.journal_guidelines_url = _setV1AsHostIfRelativeURL details.journal_guidelines_url
  27. if details.journal_cover_url?
  28. details.journal_cover_url = _setV1AsHostIfRelativeURL details.journal_cover_url
  29. if details.submission_confirmation_page_logo_url?
  30. details.submission_confirmation_page_logo_url = _setV1AsHostIfRelativeURL details.submission_confirmation_page_logo_url
  31. if details.publish_menu_icon?
  32. details.publish_menu_icon = _setV1AsHostIfRelativeURL details.publish_menu_icon
  33. _setV1AsHostIfRelativeURL = (urlString) ->
  34. # The first argument is the base URL to resolve against if the second argument is not absolute.
  35. # As it only applies if the second argument is not absolute, we can use it to transform relative URLs into
  36. # absolute ones using v1 as the host. If the URL is absolute (e.g. a filepicker one), then the base
  37. # argument is just ignored
  38. url.resolve settings?.apis?.v1?.url, urlString