package eu.eudat.controllers; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.env.Environment; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.util.List; import java.util.stream.Collectors; import java.util.stream.Stream; @RestController @CrossOrigin @RequestMapping(value = {"/api/userguide/"}) public class UserGuideController { private Environment environment; @Autowired public UserGuideController(Environment environment) { this.environment = environment; } @RequestMapping(path = "current", method = RequestMethod.GET ) public ResponseEntity getUserGuide() throws IOException { Stream walk = Files.walk(Paths.get(this.environment.getProperty("userguide.path"))); List result = walk.filter(Files::isRegularFile) .map(Path::toString).collect(Collectors.toList()); String fileName = result.get(0); InputStream is = new FileInputStream(fileName); HttpHeaders responseHeaders = new HttpHeaders(); responseHeaders.setContentLength(is.available()); responseHeaders.setContentType(MediaType.TEXT_HTML); responseHeaders.set("Content-Disposition", "attachment;filename=" + fileName); responseHeaders.set("Access-Control-Expose-Headers", "Content-Disposition"); responseHeaders.get("Access-Control-Expose-Headers").add("Content-Type"); byte[] content = new byte[is.available()]; is.read(content); is.close(); return new ResponseEntity<>(content, responseHeaders, HttpStatus.OK); } }