com.rometools.certiorem.web.AbstractHubServlet Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of rome-certiorem Show documentation
Show all versions of rome-certiorem Show documentation
A PubSubHubub implementation for Java based on ROME
/**
*
* Copyright (C) The ROME Team 2011
*
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.rometools.certiorem.web;
import java.io.IOException;
import java.util.Arrays;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.rometools.certiorem.HttpStatusCodeException;
import com.rometools.certiorem.hub.Hub;
/**
*
* @author robert.cooper
*/
public abstract class AbstractHubServlet extends HttpServlet {
/**
*
*/
private static final long serialVersionUID = 1L;
public static final String HUBMODE = "hub.mode";
private final Hub hub;
protected AbstractHubServlet(final Hub hub) {
super();
this.hub = hub;
}
@Override
protected void doPost(final HttpServletRequest req, final HttpServletResponse resp) throws ServletException, IOException {
try {
if ("publish".equals(req.getParameter(HUBMODE))) {
hub.sendNotification(req.getServerName(), req.getParameter("hub.url"));
} else {
final String callback = req.getParameter("hub.callback");
final String topic = req.getParameter("hub.topic");
final String[] verifies = req.getParameterValues("hub.verify");
final String leaseString = req.getParameter("hub.lease_seconds");
final String secret = req.getParameter("hub.secret");
final String verifyToken = req.getParameter("hub.verify_token");
final String verifyMode = Arrays.asList(verifies).contains("async") ? "async" : "sync";
Boolean result = null;
if ("subscribe".equals(req.getParameter(HUBMODE))) {
final long leaseSeconds = leaseString != null ? Long.parseLong(leaseString) : -1;
result = hub.subscribe(callback, topic, verifyMode, leaseSeconds, secret, verifyToken);
} else if ("unsubscribe".equals(req.getParameter(HUBMODE))) {
result = hub.unsubscribe(callback, topic, verifyMode, secret, verifyToken);
}
if (result != null && !result) {
throw new HttpStatusCodeException(500, "Operation failed.", null);
}
}
} catch (final HttpStatusCodeException sc) {
resp.setStatus(sc.getStatus());
resp.getWriter().println(sc.getMessage());
return;
}
resp.setStatus(204);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy