package org.apereo.cas.support.openid.web.mvc;
import org.apache.commons.io.IOUtils;
import org.apereo.cas.configuration.CasConfigurationProperties;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.io.Resource;
import org.springframework.core.io.ResourceLoader;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import javax.servlet.http.HttpServletResponse;
import java.io.StringWriter;
import java.io.Writer;
import java.nio.charset.StandardCharsets;
/**
* This is {@link YadisController}.
*
* @author Misagh Moayyed
* @since 5.1.0
*/
@Controller("yadisController")
public class YadisController {
private static final Logger LOGGER = LoggerFactory.getLogger(YadisController.class);
@Autowired
private CasConfigurationProperties casProperties;
@Autowired
private ResourceLoader resourceLoader;
/**
* Generates the Yadis XML snippet.
*
* @param response the response
* @throws Exception the exception
*/
@GetMapping(path = "/yadis.xml")
public void yadis(final HttpServletResponse response) throws Exception {
final Resource template = this.resourceLoader.getResource("classpath:/yadis.template");
try (StringWriter writer = new StringWriter()) {
IOUtils.copy(template.getInputStream(), writer, StandardCharsets.UTF_8);
final String yadis = writer.toString().replace("$casLoginUrl", casProperties.getServer().getLoginUrl());
response.setContentType("application/xrds+xml");
final Writer respWriter = response.getWriter();
respWriter.write(yadis);
respWriter.flush();
}
}
}