You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2019/08/09 09:44:16 UTC

[camel] 02/03: CAMEL-13845: camel-telegram - Do not show authorizationToken in uri. CAMEL-13847: camel-webhook - Should be lenient properties and fixed creating delegate uri with right set of parameters.

This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel.git

commit b7810a9f19903372cb3f2975e5b55c712eeb2889
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Fri Aug 9 11:42:38 2019 +0200

    CAMEL-13845: camel-telegram - Do not show authorizationToken in uri. CAMEL-13847: camel-webhook - Should be lenient properties and fixed creating delegate uri with right set of parameters.
---
 .../src/main/docs/telegram-component.adoc          |  8 ++--
 .../component/telegram/TelegramComponent.java      | 19 +++++++---
 .../component/telegram/TelegramConfiguration.java  | 32 +---------------
 .../camel/component/telegram/TelegramEndpoint.java |  2 +-
 .../component/telegram/TelegramChatBotTest.java    |  4 +-
 .../telegram/TelegramComponentParametersTest.java  |  4 +-
 .../telegram/TelegramConfigurationTest.java        |  3 +-
 .../telegram/TelegramConsumerChannelPostTest.java  |  2 +-
 .../TelegramConsumerEmptyResponseTest.java         |  2 +-
 .../TelegramConsumerFallbackConversionTest.java    |  2 +-
 .../telegram/TelegramConsumerMappingTest.java      |  2 +-
 .../TelegramConsumerMediaDocumentTest.java         |  2 +-
 .../telegram/TelegramConsumerMediaPhotoTest.java   |  2 +-
 .../telegram/TelegramConsumerMediaVideoTest.java   |  2 +-
 .../telegram/TelegramConsumerMultipleTest.java     |  2 +-
 .../telegram/TelegramConsumerServiceErrorTest.java |  2 +-
 .../telegram/TelegramConsumerSingleTest.java       |  2 +-
 .../TelegramProducerChatIdResolutionTest.java      |  2 +-
 .../telegram/TelegramProducerLocationTest.java     |  2 +-
 .../telegram/TelegramProducerMediaTest.java        |  2 +-
 .../telegram/TelegramWebhookCallTest.java          |  2 +-
 .../telegram/TelegramWebhookRegistrationTest.java  |  4 +-
 .../camel/component/webhook/WebhookComponent.java  |  5 ++-
 .../camel/component/webhook/WebhookEndpoint.java   |  5 +++
 .../dsl/TelegramEndpointBuilderFactory.java        | 44 ++++++++++++++++++++--
 .../java/org/apache/camel/util/URISupport.java     |  2 +-
 .../java/org/apache/camel/util/URISupportTest.java | 12 ++++--
 examples/camel-example-telegram/README.adoc        |  4 +-
 examples/camel-example-telegram/pom.xml            |  6 ++-
 .../apache/camel/example/telegram/Application.java |  3 +-
 .../example/telegram/TelegramRouteBuilder.java     |  4 +-
 31 files changed, 111 insertions(+), 78 deletions(-)

diff --git a/components/camel-telegram/src/main/docs/telegram-component.adoc b/components/camel-telegram/src/main/docs/telegram-component.adoc
index ca5c81c..a373813 100644
--- a/components/camel-telegram/src/main/docs/telegram-component.adoc
+++ b/components/camel-telegram/src/main/docs/telegram-component.adoc
@@ -63,23 +63,22 @@ The Telegram component supports 3 options, which are listed below.
 The Telegram endpoint is configured using URI syntax:
 
 ----
-telegram:type/authorizationToken
+telegram:type
 ----
 
 with the following path and query parameters:
 
-=== Path Parameters (2 parameters):
+=== Path Parameters (1 parameters):
 
 
 [width="100%",cols="2,5,^1,2",options="header"]
 |===
 | Name | Description | Default | Type
 | *type* | *Required* The endpoint type. Currently, only the 'bots' type is supported. |  | String
-| *authorizationToken* | *Required* The authorization token for using the bot (ask the BotFather) |  | String
 |===
 
 
-=== Query Parameters (26 parameters):
+=== Query Parameters (27 parameters):
 
 
 [width="100%",cols="2,5,^1,2",options="header"]
@@ -111,6 +110,7 @@ with the following path and query parameters:
 | *useFixedDelay* (scheduler) | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | boolean
 | *proxyHost* (proxy) | HTTP proxy host which could be used when sending out the message. |  | String
 | *proxyPort* (proxy) | HTTP proxy port which could be used when sending out the message. |  | Integer
+| *authorizationToken* (security) | *Required* The authorization token for using the bot (ask the BotFather) |  | String
 |===
 // endpoint options: END
 // spring-boot-auto-configure options: START
diff --git a/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/TelegramComponent.java b/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/TelegramComponent.java
index 7ef7232..1242b69 100644
--- a/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/TelegramComponent.java
+++ b/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/TelegramComponent.java
@@ -24,9 +24,6 @@ import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.support.DefaultComponent;
 import org.apache.camel.util.ObjectHelper;
 
-/**
- * The Camel component for Telegram.
- */
 @Component("telegram")
 public class TelegramComponent extends DefaultComponent {
 
@@ -39,9 +36,21 @@ public class TelegramComponent extends DefaultComponent {
     @Override
     protected Endpoint createEndpoint(String uri, String remaining, Map<String, Object> parameters) throws Exception {
         TelegramConfiguration configuration = new TelegramConfiguration();
+
+        // ignore trailing slash
+        if (remaining.endsWith("/")) {
+            remaining = remaining.substring(0, remaining.length() - 1);
+        }
+
+        configuration.setType(remaining);
+
         setProperties(configuration, parameters);
-        if (ObjectHelper.isNotEmpty(remaining)) {
-            configuration.updatePathConfig(remaining, this.getAuthorizationToken());
+        if (configuration.getAuthorizationToken() == null) {
+            configuration.setAuthorizationToken(authorizationToken);
+        }
+
+        if (configuration.getAuthorizationToken() == null) {
+            throw new IllegalArgumentException("AuthorizationToken must be configured on either component or endpoint for telegram: " + uri);
         }
 
         if (TelegramConfiguration.ENDPOINT_TYPE_BOTS.equals(configuration.getType())) {
diff --git a/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/TelegramConfiguration.java b/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/TelegramConfiguration.java
index bc34976..4e07e64 100644
--- a/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/TelegramConfiguration.java
+++ b/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/TelegramConfiguration.java
@@ -33,7 +33,7 @@ public class TelegramConfiguration {
     @Metadata(required = true)
     private String type;
 
-    @UriPath(description = "The authorization token for using the bot (ask the BotFather)", label = "security", secret = true)
+    @UriParam(description = "The authorization token for using the bot (ask the BotFather)", label = "security", secret = true)
     @Metadata(required = true)
     private String authorizationToken;
 
@@ -59,36 +59,6 @@ public class TelegramConfiguration {
     public TelegramConfiguration() {
     }
 
-    /**
-     * Sets the remaining configuration parameters available in the URI.
-     *
-     * @param remaining the URI part after the scheme
-     * @param defaultAuthorizationToken the default authorization token to use if not present in the URI
-     */
-    public void updatePathConfig(String remaining, String defaultAuthorizationToken) {
-        String[] parts = remaining.split("/");
-        if (parts.length == 0 || parts.length > 2) {
-            throw new IllegalArgumentException("Unexpected URI format. Expected 'bots' or 'bots/<authorizationToken>', found '" + remaining + "'");
-        }
-
-        String type = parts[0];
-        if (!type.equals(ENDPOINT_TYPE_BOTS)) {
-            throw new IllegalArgumentException("Unexpected endpoint type. Expected 'bots', found '" + type + "'");
-        }
-
-        String authorizationToken = defaultAuthorizationToken;
-        if (parts.length > 1) {
-            authorizationToken = parts[1];
-        }
-
-        if (authorizationToken == null || authorizationToken.trim().length() == 0) {
-            throw new IllegalArgumentException("The authorization token must be provided and cannot be empty");
-        }
-
-        this.type = type;
-        this.authorizationToken = authorizationToken;
-    }
-
     public String getType() {
         return type;
     }
diff --git a/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/TelegramEndpoint.java b/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/TelegramEndpoint.java
index e3e662c..4396f6e 100644
--- a/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/TelegramEndpoint.java
+++ b/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/TelegramEndpoint.java
@@ -39,7 +39,7 @@ import static org.apache.camel.component.telegram.util.TelegramMessageHelper.pop
 /**
  * The telegram component provides access to the <a href="https://core.telegram.org/bots/api">Telegram Bot API</a>.
  */
-@UriEndpoint(firstVersion = "2.18.0", scheme = "telegram", title = "Telegram", syntax = "telegram:type/authorizationToken", label = "chat")
+@UriEndpoint(firstVersion = "2.18.0", scheme = "telegram", title = "Telegram", syntax = "telegram:type", label = "chat")
 public class TelegramEndpoint extends ScheduledPollEndpoint implements WebhookCapableEndpoint {
     private static final Logger LOG = LoggerFactory.getLogger(TelegramEndpoint.class);
 
diff --git a/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/TelegramChatBotTest.java b/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/TelegramChatBotTest.java
index 0f46a13..fc97188 100644
--- a/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/TelegramChatBotTest.java
+++ b/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/TelegramChatBotTest.java
@@ -105,10 +105,10 @@ public class TelegramChatBotTest extends TelegramTestSupport {
             @Override
             public void configure() throws Exception {
 
-                from("telegram:bots/mock-token")
+                from("telegram:bots?authorizationToken=mock-token")
                         .bean(TelegramChatBotTest.this, "chatBotProcess1")
                         .bean(TelegramChatBotTest.this, "chatBotProcess2")
-                        .to("telegram:bots/mock-token");
+                        .to("telegram:bots?authorizationToken=mock-token");
             }
         };
     }
diff --git a/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/TelegramComponentParametersTest.java b/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/TelegramComponentParametersTest.java
index 745bf49..a26e071 100644
--- a/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/TelegramComponentParametersTest.java
+++ b/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/TelegramComponentParametersTest.java
@@ -31,10 +31,10 @@ public class TelegramComponentParametersTest extends TelegramTestSupport {
         TelegramEndpoint ep1 = (TelegramEndpoint) component.createEndpoint("telegram:bots");
         assertEquals("DEFAULT", ep1.getConfiguration().getAuthorizationToken());
 
-        TelegramEndpoint ep2 = (TelegramEndpoint) component.createEndpoint("telegram:bots/CUSTOM");
+        TelegramEndpoint ep2 = (TelegramEndpoint) component.createEndpoint("telegram:bots?authorizationToken=CUSTOM");
         assertEquals("CUSTOM", ep2.getConfiguration().getAuthorizationToken());
 
-        TelegramEndpoint ep3 = (TelegramEndpoint) component.createEndpoint("telegram:bots/ANOTHER?chatId=123");
+        TelegramEndpoint ep3 = (TelegramEndpoint) component.createEndpoint("telegram:bots?authorizationToken=ANOTHER&chatId=123");
         assertEquals("ANOTHER", ep3.getConfiguration().getAuthorizationToken());
     }
 
diff --git a/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/TelegramConfigurationTest.java b/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/TelegramConfigurationTest.java
index 31925e4..8051eda 100644
--- a/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/TelegramConfigurationTest.java
+++ b/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/TelegramConfigurationTest.java
@@ -26,7 +26,6 @@ import org.junit.Test;
  */
 public class TelegramConfigurationTest extends TelegramTestSupport {
 
-
     @Test
     public void testChatBotResult() throws Exception {
         TelegramEndpoint endpoint = (TelegramEndpoint) context().getEndpoints().stream().filter(e -> e instanceof TelegramEndpoint).findAny().get();
@@ -50,7 +49,7 @@ public class TelegramConfigurationTest extends TelegramTestSupport {
             public void configure() throws Exception {
 
                 from("direct:telegram")
-                        .to("telegram:bots/mock-token?chatId=12345&delay=2000&timeout=10&limit=60&proxyHost=127.0.0.1&proxyPort=1234");
+                        .to("telegram:bots/?authorizationToken=mock-token&chatId=12345&delay=2000&timeout=10&limit=60&proxyHost=127.0.0.1&proxyPort=1234");
             }
         };
     }
diff --git a/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/TelegramConsumerChannelPostTest.java b/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/TelegramConsumerChannelPostTest.java
index d544ca7..32e0928 100644
--- a/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/TelegramConsumerChannelPostTest.java
+++ b/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/TelegramConsumerChannelPostTest.java
@@ -84,7 +84,7 @@ public class TelegramConsumerChannelPostTest extends TelegramTestSupport {
         return new RouteBuilder() {
             @Override
             public void configure() throws Exception {
-                from("telegram:bots/mock-token")
+                from("telegram:bots?authorizationToken=mock-token")
                         .to("mock:telegram");
             }
         };
diff --git a/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/TelegramConsumerEmptyResponseTest.java b/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/TelegramConsumerEmptyResponseTest.java
index a7bd949..6aeeab7 100644
--- a/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/TelegramConsumerEmptyResponseTest.java
+++ b/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/TelegramConsumerEmptyResponseTest.java
@@ -58,7 +58,7 @@ public class TelegramConsumerEmptyResponseTest extends TelegramTestSupport {
         return new RouteBuilder() {
             @Override
             public void configure() throws Exception {
-                from("telegram:bots/mock-token").to("mock:telegram");
+                from("telegram:bots?authorizationToken=mock-token").to("mock:telegram");
             }
         };
     }
diff --git a/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/TelegramConsumerFallbackConversionTest.java b/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/TelegramConsumerFallbackConversionTest.java
index 8401b3e..1efe3bf 100644
--- a/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/TelegramConsumerFallbackConversionTest.java
+++ b/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/TelegramConsumerFallbackConversionTest.java
@@ -66,7 +66,7 @@ public class TelegramConsumerFallbackConversionTest extends TelegramTestSupport
             @Override
             public void configure() throws Exception {
                 from("direct:message")
-                        .to("telegram:bots/mock-token?chatId=1234");
+                        .to("telegram:bots?authorizationToken=mock-token&chatId=1234");
             }
         };
     }
diff --git a/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/TelegramConsumerMappingTest.java b/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/TelegramConsumerMappingTest.java
index 8df8568..611bcac 100644
--- a/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/TelegramConsumerMappingTest.java
+++ b/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/TelegramConsumerMappingTest.java
@@ -122,7 +122,7 @@ public class TelegramConsumerMappingTest extends TelegramTestSupport {
         return new RouteBuilder() {
             @Override
             public void configure() throws Exception {
-                from("telegram:bots/mock-token").to("mock:telegram");
+                from("telegram:bots?authorizationToken=mock-token").to("mock:telegram");
             }
         };
     }
diff --git a/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/TelegramConsumerMediaDocumentTest.java b/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/TelegramConsumerMediaDocumentTest.java
index 6c9cc5f..0efcdf3 100644
--- a/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/TelegramConsumerMediaDocumentTest.java
+++ b/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/TelegramConsumerMediaDocumentTest.java
@@ -79,7 +79,7 @@ public class TelegramConsumerMediaDocumentTest extends TelegramTestSupport {
         return new RouteBuilder() {
             @Override
             public void configure() throws Exception {
-                from("telegram:bots/mock-token")
+                from("telegram:bots?authorizationToken=mock-token")
                         .to("mock:telegram");
             }
         };
diff --git a/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/TelegramConsumerMediaPhotoTest.java b/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/TelegramConsumerMediaPhotoTest.java
index f124290..c1b678f 100644
--- a/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/TelegramConsumerMediaPhotoTest.java
+++ b/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/TelegramConsumerMediaPhotoTest.java
@@ -69,7 +69,7 @@ public class TelegramConsumerMediaPhotoTest extends TelegramTestSupport {
         return new RouteBuilder() {
             @Override
             public void configure() throws Exception {
-                from("telegram:bots/mock-token")
+                from("telegram:bots?authorizationToken=mock-token")
                         .to("mock:telegram");
             }
         };
diff --git a/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/TelegramConsumerMediaVideoTest.java b/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/TelegramConsumerMediaVideoTest.java
index 5e1b02a..a904eef 100644
--- a/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/TelegramConsumerMediaVideoTest.java
+++ b/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/TelegramConsumerMediaVideoTest.java
@@ -80,7 +80,7 @@ public class TelegramConsumerMediaVideoTest extends TelegramTestSupport {
         return new RouteBuilder() {
             @Override
             public void configure() throws Exception {
-                from("telegram:bots/mock-token")
+                from("telegram:bots?authorizationToken=mock-token")
                         .to("mock:telegram");
             }
         };
diff --git a/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/TelegramConsumerMultipleTest.java b/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/TelegramConsumerMultipleTest.java
index 98f8765..e694397 100644
--- a/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/TelegramConsumerMultipleTest.java
+++ b/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/TelegramConsumerMultipleTest.java
@@ -65,7 +65,7 @@ public class TelegramConsumerMultipleTest extends TelegramTestSupport {
         return new RouteBuilder() {
             @Override
             public void configure() throws Exception {
-                from("telegram:bots/mock-token")
+                from("telegram:bots?authorizationToken=mock-token")
                         .convertBodyTo(String.class)
                         .to("mock:telegram");
             }
diff --git a/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/TelegramConsumerServiceErrorTest.java b/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/TelegramConsumerServiceErrorTest.java
index 8df6bf0..f6aa98d 100644
--- a/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/TelegramConsumerServiceErrorTest.java
+++ b/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/TelegramConsumerServiceErrorTest.java
@@ -68,7 +68,7 @@ public class TelegramConsumerServiceErrorTest extends TelegramTestSupport {
         return new RouteBuilder() {
             @Override
             public void configure() throws Exception {
-                from("telegram:bots/mock-token")
+                from("telegram:bots?authorizationToken=mock-token")
                         .convertBodyTo(String.class)
                         .to("mock:telegram");
             }
diff --git a/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/TelegramConsumerSingleTest.java b/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/TelegramConsumerSingleTest.java
index c85378a..16ddb62 100644
--- a/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/TelegramConsumerSingleTest.java
+++ b/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/TelegramConsumerSingleTest.java
@@ -63,7 +63,7 @@ public class TelegramConsumerSingleTest extends TelegramTestSupport {
         return new RouteBuilder() {
             @Override
             public void configure() throws Exception {
-                from("telegram:bots/mock-token")
+                from("telegram:bots?authorizationToken=mock-token")
                         .convertBodyTo(String.class)
                         .to("mock:telegram");
             }
diff --git a/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/TelegramProducerChatIdResolutionTest.java b/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/TelegramProducerChatIdResolutionTest.java
index af99e43..cec6081 100644
--- a/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/TelegramProducerChatIdResolutionTest.java
+++ b/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/TelegramProducerChatIdResolutionTest.java
@@ -77,7 +77,7 @@ public class TelegramProducerChatIdResolutionTest extends TelegramTestSupport {
         return new RouteBuilder() {
             @Override
             public void configure() throws Exception {
-                from("direct:telegram").to("telegram:bots/mock-token?chatId=my-id");
+                from("direct:telegram").to("telegram:bots?authorizationToken=mock-token&chatId=my-id");
             }
         };
     }
diff --git a/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/TelegramProducerLocationTest.java b/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/TelegramProducerLocationTest.java
index 3dc6cbc..7ae0fb4 100644
--- a/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/TelegramProducerLocationTest.java
+++ b/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/TelegramProducerLocationTest.java
@@ -110,7 +110,7 @@ public class TelegramProducerLocationTest extends TelegramTestSupport {
         return new RouteBuilder() {
             @Override
             public void configure() {
-                from("direct:telegram").to("telegram:bots/mock-token?chatId=my-id");
+                from("direct:telegram").to("telegram:bots?authorizationToken=mock-token&chatId=my-id");
             }
         };
     }
diff --git a/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/TelegramProducerMediaTest.java b/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/TelegramProducerMediaTest.java
index 413784f..873b56b 100644
--- a/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/TelegramProducerMediaTest.java
+++ b/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/TelegramProducerMediaTest.java
@@ -240,7 +240,7 @@ public class TelegramProducerMediaTest extends TelegramTestSupport {
         return new RouteBuilder() {
             @Override
             public void configure() throws Exception {
-                from("direct:telegram").to("telegram:bots/mock-token?chatId=my-id");
+                from("direct:telegram").to("telegram:bots?authorizationToken=mock-token&chatId=my-id");
             }
         };
     }
diff --git a/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/TelegramWebhookCallTest.java b/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/TelegramWebhookCallTest.java
index 738ff31..6c77784 100644
--- a/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/TelegramWebhookCallTest.java
+++ b/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/TelegramWebhookCallTest.java
@@ -64,7 +64,7 @@ public class TelegramWebhookCallTest extends TelegramTestSupport {
                         .host("localhost")
                         .port(port);
 
-                from("webhook:telegram:bots/mock-token?webhookAutoRegister=false")
+                from("webhook:telegram:bots?authorizationToken=mock-token&webhookAutoRegister=false")
                         .id("webhook")
                         .convertBodyTo(String.class)
                         .to("mock:endpoint");
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 026fad1..168d252 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
@@ -40,7 +40,7 @@ public class TelegramWebhookRegistrationTest extends TelegramTestSupport {
         context.addRoutes(new RouteBuilder() {
             @Override
             public void configure() throws Exception {
-                from("webhook:telegram:bots/mock-token").to("mock:endpoint");
+                from("webhook:telegram:bots?authorizationToken=mock-token").to("mock:endpoint");
             }
         });
         context().start();
@@ -55,7 +55,7 @@ public class TelegramWebhookRegistrationTest extends TelegramTestSupport {
         context.addRoutes(new RouteBuilder() {
             @Override
             public void configure() throws Exception {
-                from("webhook:telegram:bots/mock-token?webhookAutoRegister=false").to("mock:endpoint");
+                from("webhook:telegram:bots?authorizationToken=mock-token&webhookAutoRegister=false").to("mock:endpoint");
             }
         });
         context().start();
diff --git a/components/camel-webhook/src/main/java/org/apache/camel/component/webhook/WebhookComponent.java b/components/camel-webhook/src/main/java/org/apache/camel/component/webhook/WebhookComponent.java
index 845011c..681fef4 100644
--- a/components/camel-webhook/src/main/java/org/apache/camel/component/webhook/WebhookComponent.java
+++ b/components/camel-webhook/src/main/java/org/apache/camel/component/webhook/WebhookComponent.java
@@ -24,6 +24,7 @@ import org.apache.camel.spi.RestConfiguration;
 import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.support.DefaultComponent;
 import org.apache.camel.util.ObjectHelper;
+import org.apache.camel.util.URISupport;
 
 /**
  * A Camel meta-component for exposing other components through webhooks.
@@ -51,8 +52,8 @@ public class WebhookComponent extends DefaultComponent {
         configuration.setRestConfiguration(restConfig);
 
         // we need to apply the params here
-        if (parameters != null && parameters.size() > 0) {
-            delegateUri = delegateUri + "?" + uri.substring(uri.indexOf('?') + 1);
+        if (parameters != null && !parameters.isEmpty()) {
+            delegateUri = delegateUri + "?" + URISupport.createQueryString(parameters);
         }
         configuration.setEndpointUri(delegateUri);
 
diff --git a/components/camel-webhook/src/main/java/org/apache/camel/component/webhook/WebhookEndpoint.java b/components/camel-webhook/src/main/java/org/apache/camel/component/webhook/WebhookEndpoint.java
index a1c0f63..a8fa0c0 100644
--- a/components/camel-webhook/src/main/java/org/apache/camel/component/webhook/WebhookEndpoint.java
+++ b/components/camel-webhook/src/main/java/org/apache/camel/component/webhook/WebhookEndpoint.java
@@ -97,4 +97,9 @@ public class WebhookEndpoint extends DefaultEndpoint implements DelegateEndpoint
     public WebhookCapableEndpoint getEndpoint() {
         return delegateEndpoint;
     }
+
+    @Override
+    public boolean isLenientProperties() {
+        return true;
+    }
 }
diff --git a/core/camel-endpointdsl/src/main/java/org/apache/camel/builder/endpoint/dsl/TelegramEndpointBuilderFactory.java b/core/camel-endpointdsl/src/main/java/org/apache/camel/builder/endpoint/dsl/TelegramEndpointBuilderFactory.java
index f04090b..698399d 100644
--- a/core/camel-endpointdsl/src/main/java/org/apache/camel/builder/endpoint/dsl/TelegramEndpointBuilderFactory.java
+++ b/core/camel-endpointdsl/src/main/java/org/apache/camel/builder/endpoint/dsl/TelegramEndpointBuilderFactory.java
@@ -545,6 +545,19 @@ public interface TelegramEndpointBuilderFactory {
             setProperty("proxyPort", proxyPort);
             return this;
         }
+        /**
+         * The authorization token for using the bot (ask the BotFather).
+         * 
+         * The option is a: <code>java.lang.String</code> type.
+         * 
+         * Required: true
+         * Group: security
+         */
+        default TelegramEndpointConsumerBuilder authorizationToken(
+                String authorizationToken) {
+            setProperty("authorizationToken", authorizationToken);
+            return this;
+        }
     }
 
     /**
@@ -798,6 +811,19 @@ public interface TelegramEndpointBuilderFactory {
             setProperty("proxyPort", proxyPort);
             return this;
         }
+        /**
+         * The authorization token for using the bot (ask the BotFather).
+         * 
+         * The option is a: <code>java.lang.String</code> type.
+         * 
+         * Required: true
+         * Group: security
+         */
+        default TelegramEndpointProducerBuilder authorizationToken(
+                String authorizationToken) {
+            setProperty("authorizationToken", authorizationToken);
+            return this;
+        }
     }
 
     /**
@@ -906,6 +932,19 @@ public interface TelegramEndpointBuilderFactory {
             setProperty("proxyPort", proxyPort);
             return this;
         }
+        /**
+         * The authorization token for using the bot (ask the BotFather).
+         * 
+         * The option is a: <code>java.lang.String</code> type.
+         * 
+         * Required: true
+         * Group: security
+         */
+        default TelegramEndpointBuilder authorizationToken(
+                String authorizationToken) {
+            setProperty("authorizationToken", authorizationToken);
+            return this;
+        }
     }
 
     /**
@@ -976,14 +1015,11 @@ public interface TelegramEndpointBuilderFactory {
      * Available as of version: 2.18
      * Maven coordinates: org.apache.camel:camel-telegram
      * 
-     * Syntax: <code>telegram:type/authorizationToken</code>
+     * Syntax: <code>telegram:type</code>
      * 
      * Path parameter: type (required)
      * The endpoint type. Currently, only the 'bots' type is supported.
      * The value can be one of: bots
-     * 
-     * Path parameter: authorizationToken (required)
-     * The authorization token for using the bot (ask the BotFather)
      */
     default TelegramEndpointBuilder telegram(String path) {
         class TelegramEndpointBuilderImpl extends AbstractEndpointBuilder implements TelegramEndpointBuilder, AdvancedTelegramEndpointBuilder {
diff --git a/core/camel-util/src/main/java/org/apache/camel/util/URISupport.java b/core/camel-util/src/main/java/org/apache/camel/util/URISupport.java
index a3c8f0c..b3dcc2b 100644
--- a/core/camel-util/src/main/java/org/apache/camel/util/URISupport.java
+++ b/core/camel-util/src/main/java/org/apache/camel/util/URISupport.java
@@ -39,7 +39,7 @@ public final class URISupport {
     // Match any key-value pair in the URI query string whose key contains
     // "passphrase" or "password" or secret key (case-insensitive).
     // First capture group is the key, second is the value.
-    private static final Pattern SECRETS = Pattern.compile("([?&][^=]*(?:passphrase|password|secretKey|accessToken|clientSecret)[^=]*)=(RAW[({].*[)}]|[^&]*)", Pattern.CASE_INSENSITIVE);
+    private static final Pattern SECRETS = Pattern.compile("([?&][^=]*(?:passphrase|password|secretKey|accessToken|clientSecret|authorizationToken)[^=]*)=(RAW[({].*[)}]|[^&]*)", Pattern.CASE_INSENSITIVE);
 
     // Match the user password in the URI as second capture group
     // (applies to URI with authority component and userinfo token in the form
diff --git a/core/camel-util/src/test/java/org/apache/camel/util/URISupportTest.java b/core/camel-util/src/test/java/org/apache/camel/util/URISupportTest.java
index 69340e1..ca23e2b 100644
--- a/core/camel-util/src/test/java/org/apache/camel/util/URISupportTest.java
+++ b/core/camel-util/src/test/java/org/apache/camel/util/URISupportTest.java
@@ -138,7 +138,7 @@ public class URISupportTest {
     }
 
     @Test
-    public void testParseParametersURLEncodeddValue() throws Exception {
+    public void testParseParametersURLEncodedValue() throws Exception {
         String out = URISupport.normalizeUri("http://www.google.com?q=S%C3%B8ren+Hansen");
         URI uri = new URI(out);
 
@@ -149,13 +149,13 @@ public class URISupportTest {
     }
 
     @Test
-    public void testNormalizeUriWhereParamererIsFaulty() throws Exception {
+    public void testNormalizeUriWhereParameterIsFaulty() throws Exception {
         String out = URISupport.normalizeUri("stream:uri?file:///d:/temp/data/log/quickfix.log&scanStream=true");
         assertNotNull(out);
     }
 
     @Test
-    public void testCreateRemaingURI() throws Exception {
+    public void testCreateRemainingURI() throws Exception {
         URI original = new URI("http://camel.apache.org");
         Map<String, Object> param = new HashMap<>();
         param.put("foo", "123");
@@ -246,6 +246,12 @@ public class URISupportTest {
     }
 
     @Test
+    public void testSanitizeAuthorizationToken() throws Exception {
+        String out1 = URISupport.sanitizeUri("telegram:bots?authorizationToken=1234567890:AABBCOhEaqprrk6qqQtsSPFYS3Njgv2ljW2");
+        assertEquals("telegram:bots?authorizationToken=xxxxxx", out1);
+    }
+
+    @Test
     public void testSanitizeUriWithUserInfo() {
         String uri = "jt400://GEORGE:HARRISON@LIVERPOOL/QSYS.LIB/BEATLES.LIB/PENNYLANE.DTAQ";
         String expected = "jt400://GEORGE:xxxxxx@LIVERPOOL/QSYS.LIB/BEATLES.LIB/PENNYLANE.DTAQ";
diff --git a/examples/camel-example-telegram/README.adoc b/examples/camel-example-telegram/README.adoc
index 9f7fd23..e4b4734 100644
--- a/examples/camel-example-telegram/README.adoc
+++ b/examples/camel-example-telegram/README.adoc
@@ -1,8 +1,8 @@
-# Telegram API Example
+= Telegram API Example
 
 This example shows how to use Telegram API.
 
-= How to run
+== How to run
 
 You can run this example using
 
diff --git a/examples/camel-example-telegram/pom.xml b/examples/camel-example-telegram/pom.xml
index 4b02b39..41abfc0 100644
--- a/examples/camel-example-telegram/pom.xml
+++ b/examples/camel-example-telegram/pom.xml
@@ -45,9 +45,13 @@
         </dependency>
         <dependency>
             <groupId>org.apache.camel</groupId>
+            <artifactId>camel-management-impl</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.camel</groupId>
             <artifactId>camel-telegram</artifactId>
-            <version>${camel.version}</version>
         </dependency>
+
         <dependency>
             <groupId>org.slf4j</groupId>
             <artifactId>slf4j-simple</artifactId>
diff --git a/examples/camel-example-telegram/src/main/java/org/apache/camel/example/telegram/Application.java b/examples/camel-example-telegram/src/main/java/org/apache/camel/example/telegram/Application.java
index cca64c4..ad82017 100644
--- a/examples/camel-example-telegram/src/main/java/org/apache/camel/example/telegram/Application.java
+++ b/examples/camel-example-telegram/src/main/java/org/apache/camel/example/telegram/Application.java
@@ -42,12 +42,13 @@ public final class Application {
     }
 
     private Application() {
-
+        // noop
     }
 
     public static void main(String[] args) throws Exception {
         CamelContext context = new DefaultCamelContext();
         context.start();
+
         context.addRoutes(new TelegramRouteBuilder());
         context.addStartupListener(new TelegramExamplesRunner());
     }
diff --git a/examples/camel-example-telegram/src/main/java/org/apache/camel/example/telegram/TelegramRouteBuilder.java b/examples/camel-example-telegram/src/main/java/org/apache/camel/example/telegram/TelegramRouteBuilder.java
index 350f226..2916a7d 100644
--- a/examples/camel-example-telegram/src/main/java/org/apache/camel/example/telegram/TelegramRouteBuilder.java
+++ b/examples/camel-example-telegram/src/main/java/org/apache/camel/example/telegram/TelegramRouteBuilder.java
@@ -19,8 +19,10 @@ package org.apache.camel.example.telegram;
 import org.apache.camel.builder.RouteBuilder;
 
 public class TelegramRouteBuilder extends RouteBuilder {
+
     @Override
     public void configure() {
-        from("direct:start").to("telegram:bots/" + Application.AUTHORIZATION_TOKEN + "?chatId=" + Application.CHAT_ID);
+        from("direct:start")
+                .toF("telegram:bots/?authorizationToken=%s&chatId=%s", Application.AUTHORIZATION_TOKEN, Application.CHAT_ID);
     }
 }