| /** |
| * 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; |
| |
| import org.apache.camel.spi.Metadata; |
| import org.apache.camel.spi.UriParam; |
| import org.apache.camel.spi.UriParams; |
| import org.apache.camel.spi.UriPath; |
| |
| /** |
| * Bean holding the configuration of the telegram component. |
| */ |
| @UriParams |
| public class TelegramConfiguration { |
| |
| public static final String ENDPOINT_TYPE_BOTS = "bots"; |
| |
| @UriPath(description = "The endpoint type. Currently, only the 'bots' type is supported.", enums = ENDPOINT_TYPE_BOTS) |
| @Metadata(required = "true") |
| private String type; |
| |
| @UriPath(label = "security", description = "The authorization token for using the bot (ask the BotFather), eg. 654321531:HGF_dTra456323dHuOedsE343211fqr3t-H.") |
| @Metadata(required = "true") |
| private String authorizationToken; |
| |
| @UriParam(description = "The identifier of the chat that will receive the produced messages. Chat ids can be first obtained from incoming messages " |
| + "(eg. when a telegram user starts a conversation with a bot, its client sends automatically a '/start' message containing the chat id). " |
| + "It is an optional parameter, as the chat id can be set dynamically for each outgoing message (using body or headers).", label = "producer") |
| private String chatId; |
| |
| @UriParam(description = "Timeout in seconds for long polling. Put 0 for short polling or a bigger number for long polling. Long polling produces shorter response time.", optionalPrefix = |
| "consumer.", defaultValue = "30", label = "consumer") |
| private Integer timeout = 30; |
| |
| @UriParam(description = "Limit on the number of updates that can be received in a single polling request.", optionalPrefix = "consumer.", defaultValue = "100", label = "consumer") |
| private Integer limit = 100; |
| |
| 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; |
| } |
| |
| public void setType(String type) { |
| this.type = type; |
| } |
| |
| public String getAuthorizationToken() { |
| return authorizationToken; |
| } |
| |
| public void setAuthorizationToken(String authorizationToken) { |
| this.authorizationToken = authorizationToken; |
| } |
| |
| public String getChatId() { |
| return chatId; |
| } |
| |
| public void setChatId(String chatId) { |
| this.chatId = chatId; |
| } |
| |
| public Integer getTimeout() { |
| return timeout; |
| } |
| |
| public void setTimeout(Integer timeout) { |
| this.timeout = timeout; |
| } |
| |
| public Integer getLimit() { |
| return limit; |
| } |
| |
| public void setLimit(Integer limit) { |
| this.limit = limit; |
| } |
| |
| @Override |
| public String toString() { |
| final StringBuilder sb = new StringBuilder("TelegramConfiguration{"); |
| sb.append("type='").append(type).append('\''); |
| sb.append(", authorizationToken='").append(authorizationToken).append('\''); |
| sb.append(", chatId='").append(chatId).append('\''); |
| sb.append(", timeout=").append(timeout); |
| sb.append(", limit=").append(limit); |
| sb.append('}'); |
| return sb.toString(); |
| } |
| } |