aboutsummaryrefslogtreecommitdiff
path: root/juick-spring-www/src/main/java/com/juick/www/HelpService.java
diff options
context:
space:
mode:
Diffstat (limited to 'juick-spring-www/src/main/java/com/juick/www/HelpService.java')
-rw-r--r--juick-spring-www/src/main/java/com/juick/www/HelpService.java51
1 files changed, 51 insertions, 0 deletions
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();
+ }
+}