Search in sources :

Example 1 with AttachmentUrlParams

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);
}
Also used : AttachmentUrlParams(com.enonic.xp.portal.url.AttachmentUrlParams) Test(org.junit.jupiter.api.Test)

Example 2 with AttachmentUrlParams

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;
}
Also used : PortalUrlService(com.enonic.xp.portal.url.PortalUrlService) ImmutableSet(com.google.common.collect.ImmutableSet) ImageStyle(com.enonic.xp.style.ImageStyle) ImmutableMap(com.google.common.collect.ImmutableMap) Collectors(java.util.stream.Collectors) PageUrlParams(com.enonic.xp.portal.url.PageUrlParams) ApplicationKey(com.enonic.xp.app.ApplicationKey) Objects(java.util.Objects) AttachmentUrlParams(com.enonic.xp.portal.url.AttachmentUrlParams) StyleDescriptors(com.enonic.xp.style.StyleDescriptors) List(java.util.List) Site(com.enonic.xp.site.Site) Matcher(java.util.regex.Matcher) ImmutableList(com.google.common.collect.ImmutableList) PortalRequest(com.enonic.xp.portal.PortalRequest) ImageUrlParams(com.enonic.xp.portal.url.ImageUrlParams) StyleDescriptorService(com.enonic.xp.style.StyleDescriptorService) Map(java.util.Map) Pattern(java.util.regex.Pattern) Collections(java.util.Collections) Splitter(com.google.common.base.Splitter) ApplicationKeys(com.enonic.xp.app.ApplicationKeys) Matcher(java.util.regex.Matcher) PageUrlParams(com.enonic.xp.portal.url.PageUrlParams) AttachmentUrlParams(com.enonic.xp.portal.url.AttachmentUrlParams) ImageStyle(com.enonic.xp.style.ImageStyle) ImageUrlParams(com.enonic.xp.portal.url.ImageUrlParams)

Example 3 with AttachmentUrlParams

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);
}
Also used : AttachmentUrlParams(com.enonic.xp.portal.url.AttachmentUrlParams) Test(org.junit.jupiter.api.Test)

Example 4 with AttachmentUrlParams

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);
}
Also used : AttachmentUrlParams(com.enonic.xp.portal.url.AttachmentUrlParams) Test(org.junit.jupiter.api.Test)

Example 5 with AttachmentUrlParams

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);
}
Also used : AttachmentUrlParams(com.enonic.xp.portal.url.AttachmentUrlParams) Test(org.junit.jupiter.api.Test)

Aggregations

AttachmentUrlParams (com.enonic.xp.portal.url.AttachmentUrlParams)8 Test (org.junit.jupiter.api.Test)7 ApplicationKey (com.enonic.xp.app.ApplicationKey)1 ApplicationKeys (com.enonic.xp.app.ApplicationKeys)1 PortalRequest (com.enonic.xp.portal.PortalRequest)1 ImageUrlParams (com.enonic.xp.portal.url.ImageUrlParams)1 PageUrlParams (com.enonic.xp.portal.url.PageUrlParams)1 PortalUrlService (com.enonic.xp.portal.url.PortalUrlService)1 Site (com.enonic.xp.site.Site)1 ImageStyle (com.enonic.xp.style.ImageStyle)1 StyleDescriptorService (com.enonic.xp.style.StyleDescriptorService)1 StyleDescriptors (com.enonic.xp.style.StyleDescriptors)1 Splitter (com.google.common.base.Splitter)1 ImmutableList (com.google.common.collect.ImmutableList)1 ImmutableMap (com.google.common.collect.ImmutableMap)1 ImmutableSet (com.google.common.collect.ImmutableSet)1 Collections (java.util.Collections)1 List (java.util.List)1 Map (java.util.Map)1 Objects (java.util.Objects)1