You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by zh...@apache.org on 2022/08/18 02:26:57 UTC
[camel] branch camel-3.18.x updated: CAMEL-18049 Fix autoregister when using Telegram webhook (#8178)
This is an automated email from the ASF dual-hosted git repository.
zhfeng pushed a commit to branch camel-3.18.x
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/camel-3.18.x by this push:
new 937c60f7435 CAMEL-18049 Fix autoregister when using Telegram webhook (#8178)
937c60f7435 is described below
commit 937c60f7435961bf869c9bb4d141f1abd120a3b2
Author: Zineb BENDHIBA <be...@gmail.com>
AuthorDate: Thu Aug 18 04:26:51 2022 +0200
CAMEL-18049 Fix autoregister when using Telegram webhook (#8178)
---
.../component/telegram/model/WebhookInfo.java | 78 ----------------------
.../service/TelegramServiceRestBotAPIAdapter.java | 12 +---
.../telegram/TelegramWebhookRegistrationTest.java | 26 +++-----
3 files changed, 13 insertions(+), 103 deletions(-)
diff --git a/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/model/WebhookInfo.java b/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/model/WebhookInfo.java
deleted file mode 100644
index 86de58273fd..00000000000
--- a/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/model/WebhookInfo.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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 org.apache.camel.component.telegram.model;
-
-import java.util.List;
-
-import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
-import com.fasterxml.jackson.annotation.JsonProperty;
-
-/**
- * Contains information about a webhook configuration.
- */
-@JsonIgnoreProperties(ignoreUnknown = true)
-public class WebhookInfo {
-
- @JsonProperty("url")
- private String url;
-
- @JsonProperty("max_connections")
- private Integer maxConnections;
-
- @JsonProperty("allowed_updates")
- private List<String> allowedUpdates;
-
- public WebhookInfo() {
- }
-
- public WebhookInfo(String url) {
- this.url = url;
- }
-
- public String getUrl() {
- return url;
- }
-
- public void setUrl(String url) {
- this.url = url;
- }
-
- public Integer getMaxConnections() {
- return maxConnections;
- }
-
- public void setMaxConnections(Integer maxConnections) {
- this.maxConnections = maxConnections;
- }
-
- public List<String> getAllowedUpdates() {
- return allowedUpdates;
- }
-
- public void setAllowedUpdates(List<String> allowedUpdates) {
- this.allowedUpdates = allowedUpdates;
- }
-
- @Override
- public String toString() {
- return "WebhookInfo{"
- + "url='" + url + '\''
- + ", maxConnections=" + maxConnections
- + ", allowedUpdates=" + allowedUpdates
- + '}';
- }
-}
diff --git a/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/service/TelegramServiceRestBotAPIAdapter.java b/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/service/TelegramServiceRestBotAPIAdapter.java
index e70c39d10ed..4a1934e1f3f 100644
--- a/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/service/TelegramServiceRestBotAPIAdapter.java
+++ b/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/service/TelegramServiceRestBotAPIAdapter.java
@@ -60,7 +60,6 @@ import org.apache.camel.component.telegram.model.SendLocationMessage;
import org.apache.camel.component.telegram.model.SendVenueMessage;
import org.apache.camel.component.telegram.model.StopMessageLiveLocationMessage;
import org.apache.camel.component.telegram.model.UpdateResult;
-import org.apache.camel.component.telegram.model.WebhookInfo;
import org.apache.camel.component.telegram.model.WebhookResult;
import org.apache.camel.support.GZIPHelper;
import org.apache.camel.util.IOHelper;
@@ -182,16 +181,9 @@ public class TelegramServiceRestBotAPIAdapter implements TelegramService {
@Override
public boolean setWebhook(String url) {
- final String uri = baseUri + "/setWebhook";
- final RequestBuilder request = new RequestBuilder("POST")
+ final String uri = baseUri + "/setWebhook?url=" + url;
+ final RequestBuilder request = new RequestBuilder("GET")
.setUrl(uri);
- final WebhookInfo message = new WebhookInfo(url);
- try {
- final String body = mapper.writeValueAsString(message);
- request.setBody(body);
- } catch (JsonProcessingException e) {
- throw new RuntimeCamelException("Could not serialize " + message);
- }
WebhookResult res = sendSyncRequest(request.build(), WebhookResult.class);
return res.isOk() && res.isResult();
}
diff --git a/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/TelegramWebhookRegistrationTest.java b/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/TelegramWebhookRegistrationTest.java
index f5223ea3193..9c4a2a5cbb7 100644
--- a/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/TelegramWebhookRegistrationTest.java
+++ b/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/TelegramWebhookRegistrationTest.java
@@ -21,7 +21,6 @@ import java.util.concurrent.TimeUnit;
import org.apache.camel.ServiceStatus;
import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.telegram.model.WebhookInfo;
import org.apache.camel.component.telegram.model.WebhookResult;
import org.apache.camel.component.telegram.util.TelegramMockRoutes;
import org.apache.camel.component.telegram.util.TelegramMockRoutes.MockProcessor;
@@ -35,7 +34,6 @@ import org.junit.jupiter.api.Test;
import static org.awaitility.Awaitility.waitAtMost;
import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNotEquals;
/**
* Tests a producer that sends media information.
@@ -44,7 +42,7 @@ public class TelegramWebhookRegistrationTest extends TelegramTestSupport {
@Test
public void testAutomaticRegistration() throws Exception {
- final MockProcessor<WebhookInfo> mockProcessor = getMockRoutes().getMock("setWebhook");
+ final MockProcessor<String> mockProcessor = getMockRoutes().getMock("setWebhook?url=http://my-domain.com/my-test");
mockProcessor.clearRecordedMessages();
try (final DefaultCamelContext mockContext = new DefaultCamelContext()) {
mockContext.addRoutes(getMockRoutes());
@@ -64,29 +62,27 @@ public class TelegramWebhookRegistrationTest extends TelegramTestSupport {
@Override
public void configure() {
from("direct:telegram").to("telegram:bots?authorizationToken=mock-token");
- from("webhook:telegram:bots?authorizationToken=mock-token").to("mock:endpoint");
+ from("webhook:telegram:bots?authorizationToken=mock-token&webhookPath=/my-test&webhook-external-url=http://my-domain.com")
+ .to("mock:endpoint");
}
});
context().start();
{
- final List<WebhookInfo> recordedMessages = mockProcessor.awaitRecordedMessages(1, 5000);
+ final List<String> recordedMessages = mockProcessor.awaitRecordedMessages(1, 5000);
assertEquals(1, recordedMessages.size());
- assertNotEquals("", recordedMessages.get(0).getUrl());
+ assertEquals("", recordedMessages.get(0));
}
mockProcessor.clearRecordedMessages();
+
context().stop();
- {
- final List<WebhookInfo> recordedMessages = mockProcessor.awaitRecordedMessages(1, 5000);
- assertEquals(1, recordedMessages.size());
- assertEquals("", recordedMessages.get(0).getUrl());
- }
+
}
}
@Test
public void testNoRegistration() throws Exception {
- final MockProcessor<WebhookInfo> mockProcessor = getMockRoutes().getMock("setWebhook");
+ final MockProcessor<String> mockProcessor = getMockRoutes().getMock("setWebhook?url=http://my-domain.com/my-test");
mockProcessor.clearRecordedMessages();
try (final DefaultCamelContext mockContext = new DefaultCamelContext()) {
mockContext.addRoutes(getMockRoutes());
@@ -137,9 +133,9 @@ public class TelegramWebhookRegistrationTest extends TelegramTestSupport {
String.class,
"running")
.addEndpoint(
- "setWebhook",
- "POST",
- WebhookInfo.class,
+ "setWebhook?url=http://my-domain.com/my-test",
+ "GET",
+ String.class,
TelegramTestUtil.serialize(result));
}