]> git.basschouten.com Git - openhab-addons.git/blob
32c35a355a1958e845171cadc779e976f3674787
[openhab-addons.git] /
1 /**
2  * Copyright (c) 2010-2023 Contributors to the openHAB project
3  *
4  * See the NOTICE file(s) distributed with this work for additional
5  * information.
6  *
7  * This program and the accompanying materials are made available under the
8  * terms of the Eclipse Public License 2.0 which is available at
9  * http://www.eclipse.org/legal/epl-2.0
10  *
11  * SPDX-License-Identifier: EPL-2.0
12  */
13 package org.openhab.binding.mercedesme.internal.server;
14
15 import java.io.IOException;
16
17 import javax.servlet.ServletException;
18 import javax.servlet.http.HttpServlet;
19 import javax.servlet.http.HttpServletRequest;
20 import javax.servlet.http.HttpServletResponse;
21
22 import org.eclipse.jdt.annotation.NonNullByDefault;
23 import org.openhab.binding.mercedesme.internal.Constants;
24 import org.slf4j.Logger;
25 import org.slf4j.LoggerFactory;
26
27 /**
28  * The {@link CallbackServlet} class provides authentication callback endpoint
29  *
30  * @author Bernd Weymann - Initial contribution
31  */
32 @SuppressWarnings("serial")
33 @NonNullByDefault
34 public class CallbackServlet extends HttpServlet {
35     private final Logger logger = LoggerFactory.getLogger(CallbackServlet.class);
36
37     @Override
38     protected void doGet(HttpServletRequest request, HttpServletResponse response)
39             throws ServletException, IOException {
40         String code = request.getParameter(Constants.CODE);
41         if (code != null) {
42             CallbackServer.callback(request.getLocalPort(), code);
43             logger.trace("Code successfully extracted {}", request.getParameterMap());
44             response.setContentType("application/json");
45             response.setStatus(HttpServletResponse.SC_OK);
46             response.getWriter().println(request.getParameterMap());
47             response.getWriter().println("{ \"status\": \"ok\"}");
48         } else {
49             response.setContentType("text/html");
50             response.setStatus(HttpServletResponse.SC_OK);
51             response.getWriter().println("<HTML>");
52             response.getWriter().println("<BODY>");
53             response.getWriter().println("<B>Call Parameters</B>");
54             response.getWriter().println("<BR>");
55             response.getWriter().println(request.getParameterMap());
56             response.getWriter().println("<BR><BR>");
57             response.getWriter().println("<B>Configured scopes</B><BR>");
58             String[] scopes = CallbackServer.getScope(request.getLocalPort()).split(Constants.SPACE);
59             for (int i = 0; i < scopes.length; i++) {
60                 response.getWriter().println(scopes[i] + "<BR>");
61             }
62             response.getWriter().println("<BR><BR>");
63             response.getWriter().println("<B>Get your access token for openHAB MercedesMe Binding</B>");
64             response.getWriter().println("<BR>");
65             response.getWriter().println("<a href=\"" + CallbackServer.getAuthorizationUrl(request.getLocalPort())
66                     + "\">Start Authorization</a>");
67             response.getWriter().println("</BODY>");
68             response.getWriter().println("</HTML>");
69         }
70         logger.debug("Call from {}:{} parameters {}", request.getLocalAddr(), request.getLocalPort(),
71                 request.getParameterMap());
72     }
73 }