/* * Copyright 2000-2013 Enonic AS * http://www.enonic.com/license */ package com.enonic.cms.framework.freemarker; import java.io.UnsupportedEncodingException; import java.util.List; import org.apache.commons.codec.binary.Base64; import freemarker.template.TemplateMethodModel; import freemarker.template.TemplateModelException; /** * This is a class representing a Freemarker function. */ @SuppressWarnings({"UnusedDeclaration"}) public class Base64Function implements TemplateMethodModel { public Object exec( List arguments ) throws TemplateModelException { if ( arguments.size() != 1 ) { throw new TemplateModelException( "This function requires one argument." ); } Object argument = arguments.get( 0 ); if ( argument instanceof String ) { String argumentAsString = (String) argument; return encodeAsBase64( argumentAsString ); } else { throw new TemplateModelException( "This function requires one argument that is a string." ); } } private Object encodeAsBase64( String input ) { try { return new String( Base64.encodeBase64( input.getBytes( "UTF-8" ) ) ); } catch ( UnsupportedEncodingException e ) { throw new RuntimeException( "Failed to encode string: ", e ); } } }