TDLightTelegramBots/telegrambots-meta/src/main/java/org/telegram/telegrambots/meta/api/methods/updates/SetWebhook.java

107 lines
4.5 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package org.telegram.telegrambots.meta.api.methods.updates;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.NonNull;
import lombok.RequiredArgsConstructor;
import lombok.Setter;
import lombok.Singular;
import lombok.ToString;
import org.telegram.telegrambots.meta.api.methods.botapimethods.BotApiMethodBoolean;
import org.telegram.telegrambots.meta.api.objects.InputFile;
import org.telegram.telegrambots.meta.exceptions.TelegramApiValidationException;
import java.util.List;
/**
* @author Ruben Bermudez
* @version 6.1
* Use this method to specify a URL and receive incoming updates via an outgoing webhook.
* Whenever there is an update for the bot, we will send an HTTPS POST request to the specified URL,
* containing a JSON-serialized Update. In case of an unsuccessful request,
* we will give up after a reasonable amount of attempts. Returns True on success.
*
* If you'd like to make sure that the webhook was set by you, you can specify secret data in the parameter secret_token.
* If specified, the request will contain a header “X-Telegram-Bot-Api-Secret-Token” with the secret token as content.
*/
@EqualsAndHashCode(callSuper = false)
@Getter
@Setter
@ToString
@RequiredArgsConstructor
@NoArgsConstructor(force = true)
@AllArgsConstructor
@Builder
public class SetWebhook extends BotApiMethodBoolean {
public static final String PATH = "setWebhook";
public static final String URL_FIELD = "url";
public static final String CERTIFICATE_FIELD = "certificate";
public static final String MAXCONNECTIONS_FIELD = "max_connections";
public static final String ALLOWEDUPDATES_FIELD = "allowed_updates";
public static final String IPADDRESS_FIELD = "ip_address";
public static final String DROPPENDINGUPDATES_FIELD = "drop_pending_updates";
public static final String SECRETTOKEN_FIELD = "secret_token";
@JsonProperty(URL_FIELD)
@NonNull
private String url; ///< HTTPS url to send updates to. Use an empty string to remove webhook integration
@JsonProperty(CERTIFICATE_FIELD)
private InputFile certificate; ///< Optional. Upload your public key certificate so that the root certificate in use can be checked
/**
* Maximum allowed number of simultaneous HTTPS connections to the webhook for update delivery, 1-100.
* Defaults to 40. Use lower values to limit the load on your bots server,
* and higher values to increase your bots throughput.
*/
@JsonProperty(MAXCONNECTIONS_FIELD)
private Integer maxConnections;
/**
* List the types of updates you want your bot to receive.
* For example, specify [“message”, “edited_channel_post”, “callback_query”] to only receive
* updates of these types. Specify an empty list to receive all updates regardless of type (default).
* If not specified, the previous setting will be used.
*
* Please note that this parameter doesn't affect updates created before the call to the setWebhook,
* so unwanted updates may be received for a short period of time.
*/
@JsonProperty(ALLOWEDUPDATES_FIELD)
@Singular
private List<String> allowedUpdates;
@JsonProperty(IPADDRESS_FIELD)
private String ipAddress;
@JsonProperty(DROPPENDINGUPDATES_FIELD)
private Boolean dropPendingUpdates;
/**
* Optional
* A secret token to be sent in a header “X-Telegram-Bot-Api-Secret-Token” in every webhook request, 1-256 characters.
* Only characters A-Z, a-z, 0-9, _ and - are allowed.
* The header is useful to ensure that the request comes from a webhook set by you.
*/
@JsonProperty(SECRETTOKEN_FIELD)
private String secretToken;
@Override
public String getMethod() {
return PATH;
}
@Override
public void validate() throws TelegramApiValidationException {
if (url.isEmpty()) {
throw new TelegramApiValidationException("URL parameter can't be empty", this);
}
if (certificate != null) {
if (!certificate.isNew()) {
throw new TelegramApiValidationException("Certificate parameter must be a new file to upload", this);
}
}
if (secretToken != null && !secretToken.matches("[A-Za-z0-9_-]+")) {
throw new TelegramApiValidationException("SecretToken parameter must only contains A-Z, a-z, 0-9, _ and -", this);
}
}
}