diff options
author | Vitaly Takmazov | 2016-12-28 22:38:21 +0300 |
---|---|---|
committer | Vitaly Takmazov | 2017-01-10 12:08:35 +0300 |
commit | 2f682b5e3cfc3fc5f961b60129be7bc90e0d6a03 (patch) | |
tree | 840aea9eb94d5c1f667a710d3298135854bc5002 /juick-www/src/main/java/com/juick/www/HelpService.java | |
parent | eb440ea4f120115613880e340b010eed5397e72c (diff) |
juick-www: now on spring-webmvc
Diffstat (limited to 'juick-www/src/main/java/com/juick/www/HelpService.java')
-rw-r--r-- | juick-www/src/main/java/com/juick/www/HelpService.java | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/juick-www/src/main/java/com/juick/www/HelpService.java b/juick-www/src/main/java/com/juick/www/HelpService.java new file mode 100644 index 00000000..8ece4cfb --- /dev/null +++ b/juick-www/src/main/java/com/juick/www/HelpService.java @@ -0,0 +1,48 @@ +package com.juick.www; + +import org.apache.commons.io.IOUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.cache.annotation.Cacheable; + +import java.io.IOException; +import java.io.InputStream; +import java.nio.charset.StandardCharsets; +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 (canBePage(page) && canBeLang(lang)) { + String path = StringUtils.joinWith("/", helpPath, lang, page); + + try (InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream(path)) { + if (is != null) + return IOUtils.toString(is, StandardCharsets.UTF_8); + } catch (IOException e) { + } + } + return null; + } + + public boolean canBePage(final String anything) { + return anything != null && PAGE_PATTERN.matcher(anything).matches(); + } + + public boolean canBeLang(final String anything) { + return anything != null && LANG_PATTERN.matcher(anything).matches(); + } +} |