2 * Copyright (c) 2010-2024 Contributors to the openHAB project
4 * See the NOTICE file(s) distributed with this work for additional
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
11 * SPDX-License-Identifier: EPL-2.0
13 package org.openhab.binding.mercedesme.internal.server;
15 import java.io.IOException;
17 import javax.servlet.ServletException;
18 import javax.servlet.http.HttpServlet;
19 import javax.servlet.http.HttpServletRequest;
20 import javax.servlet.http.HttpServletResponse;
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;
28 * The {@link CallbackServlet} class provides authentication callback endpoint
30 * @author Bernd Weymann - Initial contribution
32 @SuppressWarnings("serial")
34 public class CallbackServlet extends HttpServlet {
35 private final Logger logger = LoggerFactory.getLogger(CallbackServlet.class);
38 protected void doGet(HttpServletRequest request, HttpServletResponse response)
39 throws ServletException, IOException {
40 String code = request.getParameter(Constants.CODE);
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\"}");
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>");
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>");
70 logger.debug("Call from {}:{} parameters {}", request.getLocalAddr(), request.getLocalPort(),
71 request.getParameterMap());