use of com.enonic.xp.portal.url.AttachmentUrlParams in project xp by enonic.
the class PortalUrlServiceImpl_attachmentUrlTest method createUrl_absolute.
@Test
public void createUrl_absolute() {
this.portalRequest.setContent(createContent());
final AttachmentUrlParams params = new AttachmentUrlParams().type(UrlTypeConstants.ABSOLUTE).portalRequest(this.portalRequest).param("a", 3);
when(req.getServerName()).thenReturn("localhost");
when(req.getScheme()).thenReturn("http");
when(req.getServerPort()).thenReturn(80);
final String url = this.service.attachmentUrl(params);
assertEquals("http://localhost/site/default/draft/a/b/mycontent/_/attachment/inline/123456:binaryHash2/a2.jpg?a=3", url);
}
use of com.enonic.xp.portal.url.AttachmentUrlParams in project xp by enonic.
the class HtmlLinkProcessor method process.
public String process(final String text, final String urlType, final PortalRequest portalRequest, final List<Integer> imageWidths, final String imageSizes) {
String processedHtml = text;
final ImmutableMap<String, ImageStyle> imageStyleMap = getImageStyleMap(portalRequest);
final Matcher contentMatcher = CONTENT_PATTERN.matcher(text);
while (contentMatcher.find()) {
if (contentMatcher.groupCount() >= NB_GROUPS) {
final String tagName = contentMatcher.group(TAG_NAME_INDEX);
final String attr = contentMatcher.group(ATTR_INDEX);
final String attrValue = contentMatcher.group(ATTR_VALUE_INDEX);
final String link = contentMatcher.group(LINK_INDEX);
final String type = contentMatcher.group(TYPE_INDEX);
final String mode = contentMatcher.group(MODE_INDEX);
final String id = contentMatcher.group(ID_INDEX);
final String urlParamsString = contentMatcher.groupCount() == PARAMS_INDEX ? contentMatcher.group(PARAMS_INDEX) : null;
switch(type) {
case CONTENT_TYPE:
PageUrlParams pageUrlParams = new PageUrlParams().type(urlType).id(id).portalRequest(portalRequest);
final String pageUrl = portalUrlService.pageUrl(pageUrlParams);
processedHtml = processedHtml.replaceFirst(Pattern.quote(attrValue), "\"" + pageUrl + "\"");
break;
case IMAGE_TYPE:
final Map<String, String> urlParams = extractUrlParams(urlParamsString);
ImageStyle imageStyle = getImageStyle(imageStyleMap, urlParams);
ImageUrlParams imageUrlParams = new ImageUrlParams().type(urlType).id(id).scale(getScale(imageStyle, urlParams, null)).filter(getFilter(imageStyle)).portalRequest(portalRequest);
final String imageUrl = portalUrlService.imageUrl(imageUrlParams);
final StringBuilder replacement = new StringBuilder("\"" + imageUrl + "\"");
if ("img".equals(tagName) && "src".equals(attr)) {
final String srcsetValues = Objects.requireNonNullElse(imageWidths, List.<Integer>of()).stream().map(imageWidth -> {
final ImageUrlParams imageParams = new ImageUrlParams().type(urlType).id(id).scale(getScale(imageStyle, urlParams, imageWidth)).filter(getFilter(imageStyle)).portalRequest(portalRequest);
return portalUrlService.imageUrl(imageParams) + " " + imageWidth + "w";
}).collect(Collectors.joining(","));
if (!srcsetValues.isEmpty()) {
replacement.append(" srcset=\"").append(srcsetValues).append("\"");
}
if (imageSizes != null && !imageSizes.isBlank()) {
replacement.append(" sizes=\"").append(imageSizes).append("\"");
}
}
processedHtml = processedHtml.replaceFirst(Pattern.quote(attrValue), replacement.toString());
break;
default:
AttachmentUrlParams attachmentUrlParams = new AttachmentUrlParams().type(urlType).id(id).download(DOWNLOAD_MODE.equals(mode)).portalRequest(portalRequest);
final String attachmentUrl = portalUrlService.attachmentUrl(attachmentUrlParams);
processedHtml = processedHtml.replaceFirst(Pattern.quote(attrValue), "\"" + attachmentUrl + "\"");
break;
}
}
}
return processedHtml;
}
use of com.enonic.xp.portal.url.AttachmentUrlParams in project xp by enonic.
the class PortalUrlServiceImpl_attachmentUrlTest method createUrl_withLabel.
@Test
public void createUrl_withLabel() {
this.portalRequest.setContent(createContent());
final AttachmentUrlParams params = new AttachmentUrlParams().portalRequest(this.portalRequest).label("thumb");
final String url = this.service.attachmentUrl(params);
assertEquals("/site/default/draft/a/b/mycontent/_/attachment/inline/123456:binaryHash1/a1.jpg", url);
}
use of com.enonic.xp.portal.url.AttachmentUrlParams in project xp by enonic.
the class PortalUrlServiceImpl_attachmentUrlTest method createUrl_withPath.
@Test
public void createUrl_withPath() {
createContent();
final AttachmentUrlParams params = new AttachmentUrlParams().path("/a/b/mycontent").name("a1.jpg").portalRequest(this.portalRequest);
final String url = this.service.attachmentUrl(params);
assertEquals("/site/default/draft/context/path/_/attachment/inline/123456:binaryHash1/a1.jpg", url);
}
use of com.enonic.xp.portal.url.AttachmentUrlParams in project xp by enonic.
the class PortalUrlServiceImpl_attachmentUrlTest method createUrl_withId.
@Test
public void createUrl_withId() {
createContent();
final AttachmentUrlParams params = new AttachmentUrlParams().id("123456").name("a1.jpg").portalRequest(this.portalRequest);
final String url = this.service.attachmentUrl(params);
assertEquals("/site/default/draft/context/path/_/attachment/inline/123456:binaryHash1/a1.jpg", url);
}
Aggregations