From 2243cb78fe142cfe8f55d0f6a76c3cfdb1cd2835 Mon Sep 17 00:00:00 2001 From: Alexander Alexeev Date: Sun, 11 Dec 2016 04:41:47 +0700 Subject: caching help --- .../src/main/java/com/juick/www/HelpService.java | 51 ++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 juick-spring-www/src/main/java/com/juick/www/HelpService.java (limited to 'juick-spring-www/src/main/java/com/juick/www/HelpService.java') diff --git a/juick-spring-www/src/main/java/com/juick/www/HelpService.java b/juick-spring-www/src/main/java/com/juick/www/HelpService.java new file mode 100644 index 00000000..a3bee60a --- /dev/null +++ b/juick-spring-www/src/main/java/com/juick/www/HelpService.java @@ -0,0 +1,51 @@ +package com.juick.www; + +import org.springframework.cache.annotation.Cacheable; +import org.springframework.core.io.ClassPathResource; + +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.regex.Pattern; + +/** + * Created by aalexeev on 12/11/16. + */ +public class HelpService { + private static final Pattern LANG_PATTERN = Pattern.compile("[a-z]{2}"); + + private static final Pattern PAGE_PATTERN = Pattern.compile("[a-zA-Z0-9\\-_]+"); + + private final String helpPath; + + + public HelpService(String helpPath) { + this.helpPath = helpPath; + } + + @Cacheable("help") + public String getHelp(final String page, final String lang) { + if (canPage(page) && canLang(lang)) { + try { + Path file = Paths.get(helpPath, lang, page); + String path =file.toString(); + file = Paths.get(new ClassPathResource(path).getURI()); + + if (Files.isReadable(file)) + return new String(Files.readAllBytes(file)); + } catch (IOException e) { + } + } + + return null; + } + + public boolean canPage(final String anything) { + return anything != null && PAGE_PATTERN.matcher(anything).matches(); + } + + public boolean canLang(final String anything) { + return anything != null && LANG_PATTERN.matcher(anything).matches(); + } +} -- cgit v1.2.3