diff options
author | Vitaly Takmazov | 2017-03-27 16:31:22 +0300 |
---|---|---|
committer | Vitaly Takmazov | 2017-03-28 14:52:51 +0300 |
commit | d25ab2c9f881aad6acce16b9150ed884472f3dc8 (patch) | |
tree | e5c9e784a2870f74e6ad2566be6e1ba6be2d0f9b | |
parent | 77aa3f0080575c583fdbd27ce6d216016d764574 (diff) |
juick-api: Messenger bot webhook
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); + } +} |