/host-common/src/main/java/com/atlassian/plugin/remotable/host/common/service/DefaultRenderContext.java

https://bitbucket.org/rodogu/remotable-plugins · Java · 158 lines · 137 code · 21 blank · 0 comment · 3 complexity · 749c81f489bc2294b1c61b79b614a83a MD5 · raw file

  1. package com.atlassian.plugin.remotable.host.common.service;
  2. import com.atlassian.plugin.remotable.api.service.RenderContext;
  3. import com.atlassian.plugin.remotable.api.service.SignedRequestHandler;
  4. import com.atlassian.plugin.remotable.api.service.http.bigpipe.BigPipeManager;
  5. import com.atlassian.plugin.remotable.api.service.http.bigpipe.ConsumableBigPipe;
  6. import com.atlassian.plugin.remotable.host.common.service.http.DefaultRequestContext;
  7. import com.atlassian.plugin.util.PluginUtils;
  8. import com.atlassian.sal.api.message.I18nResolver;
  9. import com.atlassian.sal.api.message.LocaleResolver;
  10. import com.google.common.base.Function;
  11. import javax.annotation.Nullable;
  12. import java.net.URI;
  13. import java.util.Collections;
  14. import java.util.HashMap;
  15. import java.util.Locale;
  16. import java.util.Map;
  17. public class DefaultRenderContext implements RenderContext
  18. {
  19. public static final String HOST_RESOURCE_PATH = "/remotable-plugins";
  20. private final boolean devMode = Boolean.getBoolean(PluginUtils.ATLASSIAN_DEV_MODE);
  21. private DefaultRequestContext requestContext;
  22. private SignedRequestHandler signedRequestHandler;
  23. private final LocaleResolver localeResolver;
  24. private final I18nResolver i18nResolver;
  25. private final BigPipeManager bigPipeManager;
  26. public DefaultRenderContext(DefaultRequestContext requestContext,
  27. SignedRequestHandler signedRequestHandler,
  28. LocaleResolver localeResolver,
  29. I18nResolver i18nResolver,
  30. BigPipeManager bigPipeManager)
  31. {
  32. this.requestContext = requestContext;
  33. this.signedRequestHandler = signedRequestHandler;
  34. this.localeResolver = localeResolver;
  35. this.i18nResolver = i18nResolver;
  36. this.bigPipeManager = bigPipeManager;
  37. }
  38. @Override
  39. public String getLocalBaseUrl()
  40. {
  41. return signedRequestHandler.getLocalBaseUrl();
  42. }
  43. @Override
  44. public String getHostContextPath()
  45. {
  46. String url = getHostBaseUrl();
  47. return url != null ? URI.create(url).getPath() : null;
  48. }
  49. @Override
  50. public String getHostBaseUrl()
  51. {
  52. return requestContext.getHostBaseUrl();
  53. }
  54. @Override
  55. public String getHostBaseResourceUrl()
  56. {
  57. String url = getHostBaseUrl();
  58. return url != null ? url + HOST_RESOURCE_PATH : null;
  59. }
  60. @Override
  61. public String getHostStylesheetUrl()
  62. {
  63. return getHostResourceUrl("all", "css");
  64. }
  65. @Override
  66. public String getHostScriptUrl()
  67. {
  68. return getHostResourceUrl("all", "js");
  69. }
  70. @Override
  71. public String getClientKey()
  72. {
  73. return requestContext.getClientKey();
  74. }
  75. @Override
  76. public String getUserId()
  77. {
  78. return requestContext.getUserId();
  79. }
  80. @Override
  81. public String getAuthState()
  82. {
  83. return AuthenticationInfo.encode(new AuthenticationInfo(getClientKey(), getUserId()));
  84. }
  85. @Override
  86. public String getBigPipeRequestId()
  87. {
  88. return bigPipeManager.getConsumableBigPipe().map(new Function<ConsumableBigPipe, String>()
  89. {
  90. @Override
  91. public String apply(ConsumableBigPipe input)
  92. {
  93. return input.getRequestId();
  94. }
  95. }).getOrNull();
  96. }
  97. @Override
  98. public boolean getBigPipeActivated()
  99. {
  100. return !bigPipeManager.getConsumableBigPipe().isEmpty();
  101. }
  102. @Override
  103. public Locale getLocale()
  104. {
  105. return localeResolver.getLocale(requestContext.getRequest());
  106. }
  107. @Override
  108. public I18nResolver getI18n()
  109. {
  110. return i18nResolver;
  111. }
  112. @Override
  113. public Map<String, Object> toContextMap()
  114. {
  115. return Collections.unmodifiableMap(new HashMap<String, Object>()
  116. {{
  117. put("localBaseUrl", getLocalBaseUrl());
  118. put("hostContextPath", getHostContextPath());
  119. put("hostBaseUrl", getHostBaseUrl());
  120. put("hostBaseResourceUrl", getHostBaseResourceUrl());
  121. put("hostStylesheetUrl", getHostStylesheetUrl());
  122. put("hostScriptUrl", getHostScriptUrl());
  123. put("userId", getUserId());
  124. put("clientKey", getClientKey());
  125. put("authState", getAuthState());
  126. put("bigPipeRequestId", getBigPipeRequestId());
  127. put("bigPipeActivated", getBigPipeActivated());
  128. put("locale", getLocale());
  129. put("i18n", getI18n());
  130. }});
  131. }
  132. private String getHostResourceUrl(String name, String ext)
  133. {
  134. String url = getHostBaseResourceUrl();
  135. return url != null ? url + "/" + name + (devMode ? "-debug" : "") + "." + ext : null;
  136. }
  137. }