package org.zstack.core.webhook; import org.apache.commons.validator.routines.UrlValidator; import org.zstack.header.apimediator.ApiMessageInterceptionException; import org.zstack.header.apimediator.ApiMessageInterceptor; import org.zstack.header.core.webhooks.APICreateWebhookMsg; import org.zstack.header.core.webhooks.APIUpdateWebhookMsg; import org.zstack.header.message.APIMessage; import static org.zstack.core.Platform.argerr; /** * Created by xing5 on 2017/5/7. */ public class WebhookApiInterceptor implements ApiMessageInterceptor { @Override public APIMessage intercept(APIMessage msg) throws ApiMessageInterceptionException { if (msg instanceof APICreateWebhookMsg) { validate((APICreateWebhookMsg) msg); } else if (msg instanceof APIUpdateWebhookMsg) { validate((APIUpdateWebhookMsg) msg); } return msg; } private void validateUrl(String url) { if (!new UrlValidator().isValid(url)) { throw new ApiMessageInterceptionException(argerr("Invalid url[%s]", url)); } } private void validate(APIUpdateWebhookMsg msg) { if (msg.getUrl() != null) { validateUrl(msg.getUrl()); } } private void validate(APICreateWebhookMsg msg) { validateUrl(msg.getUrl()); } }