aboutsummaryrefslogtreecommitdiff
path: root/juick-api/src
diff options
context:
space:
mode:
authorGravatar Vitaly Takmazov2017-03-27 16:31:22 +0300
committerGravatar Vitaly Takmazov2017-03-28 14:52:51 +0300
commitd25ab2c9f881aad6acce16b9150ed884472f3dc8 (patch)
treee5c9e784a2870f74e6ad2566be6e1ba6be2d0f9b /juick-api/src
parent77aa3f0080575c583fdbd27ce6d216016d764574 (diff)
juick-api: Messenger bot webhook
Diffstat (limited to 'juick-api/src')
-rw-r--r--juick-api/src/main/java/com/juick/api/MessengerBot.java16
-rw-r--r--juick-api/src/main/java/com/juick/api/configuration/ApiAppConfiguration.java8
-rw-r--r--juick-api/src/main/java/com/juick/api/configuration/ApiSecurityConfig.java2
-rw-r--r--juick-api/src/main/java/com/juick/api/controllers/MessengerWebhook.java42
4 files changed, 67 insertions, 1 deletions
diff --git a/juick-api/src/main/java/com/juick/api/MessengerBot.java b/juick-api/src/main/java/com/juick/api/MessengerBot.java
new file mode 100644
index 00000000..639adb12
--- /dev/null
+++ b/juick-api/src/main/java/com/juick/api/MessengerBot.java
@@ -0,0 +1,16 @@
+package com.juick.api;
+
+/**
+ * Created by vitalyster on 27.03.2017.
+ */
+public class MessengerBot {
+ private String verifyToken;
+
+ public String getVerifyToken() {
+ return verifyToken;
+ }
+
+ public void setVerifyToken(String verifyToken) {
+ this.verifyToken = verifyToken;
+ }
+}
diff --git a/juick-api/src/main/java/com/juick/api/configuration/ApiAppConfiguration.java b/juick-api/src/main/java/com/juick/api/configuration/ApiAppConfiguration.java
index 5ca1def1..382b3df5 100644
--- a/juick-api/src/main/java/com/juick/api/configuration/ApiAppConfiguration.java
+++ b/juick-api/src/main/java/com/juick/api/configuration/ApiAppConfiguration.java
@@ -1,6 +1,7 @@
package com.juick.api.configuration;
import com.juick.api.ApiServer;
+import com.juick.api.MessengerBot;
import com.juick.api.TGBot;
import org.apache.commons.lang3.StringUtils;
import org.springframework.context.annotation.Bean;
@@ -33,6 +34,13 @@ public class ApiAppConfiguration {
return new TGBot(env.getProperty("telegram_token", StringUtils.EMPTY));
}
+ @Bean
+ public MessengerBot fbBot() {
+ MessengerBot bot = new MessengerBot();
+ bot.setVerifyToken(env.getProperty("fb_verify_token", StringUtils.EMPTY));
+ return bot;
+ }
+
private static final String WS_URI = "wss://ws.juick.com/";
@Bean
diff --git a/juick-api/src/main/java/com/juick/api/configuration/ApiSecurityConfig.java b/juick-api/src/main/java/com/juick/api/configuration/ApiSecurityConfig.java
index 48d79e27..a8dacb03 100644
--- a/juick-api/src/main/java/com/juick/api/configuration/ApiSecurityConfig.java
+++ b/juick-api/src/main/java/com/juick/api/configuration/ApiSecurityConfig.java
@@ -44,7 +44,7 @@ public class ApiSecurityConfig extends WebSecurityConfigurerAdapter {
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers(HttpMethod.OPTIONS).permitAll()
- .antMatchers("/messages", "/users", "/thread", "/tags", "/tlgmbtwbhk").permitAll()
+ .antMatchers("/messages", "/users", "/thread", "/tags", "/tlgmbtwbhk", "/fbwbhk").permitAll()
.anyRequest().hasRole("USER")
.and().httpBasic().authenticationEntryPoint(getJuickAuthenticationEntryPoint())
.and().anonymous()
diff --git a/juick-api/src/main/java/com/juick/api/controllers/MessengerWebhook.java b/juick-api/src/main/java/com/juick/api/controllers/MessengerWebhook.java
new file mode 100644
index 00000000..f03a3633
--- /dev/null
+++ b/juick-api/src/main/java/com/juick/api/controllers/MessengerWebhook.java
@@ -0,0 +1,42 @@
+package com.juick.api.controllers;
+
+import com.juick.api.MessengerBot;
+import com.juick.server.util.HttpForbiddenException;
+import org.apache.commons.io.IOUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+
+import javax.inject.Inject;
+import javax.servlet.http.HttpServletRequest;
+import java.io.IOException;
+import java.nio.charset.StandardCharsets;
+
+/**
+ * Created by vitalyster on 27.03.2017.
+ */
+@RestController
+public class MessengerWebhook {
+ private static Logger logger = LoggerFactory.getLogger(MessengerWebhook.class);
+
+ @Inject
+ MessengerBot fbBot;
+
+ @RequestMapping(value = "/fbwbhk", method = RequestMethod.GET)
+ public ResponseEntity<Integer> verifyHook(@RequestParam(name = "hub.mode") String hubMode,
+ @RequestParam(name = "hub.challenge") Integer hubChallenge,
+ @RequestParam(name = "hub.verify_token") String verifyToken) {
+ if (hubMode.equals("subscribe") && verifyToken.equals(fbBot.getVerifyToken())) {
+ return new ResponseEntity<>(hubChallenge, HttpStatus.OK);
+ }
+ throw new HttpForbiddenException();
+ }
+ @RequestMapping(value = "/fbwbhk", method = RequestMethod.POST)
+ @ResponseStatus(value = HttpStatus.OK)
+ public void processUpdate(HttpServletRequest req) throws IOException {
+ String data = IOUtils.toString(req.getInputStream(), StandardCharsets.UTF_8);
+ logger.info("got data: {}", data);
+ }
+}