package org.telegram.telegrambots.meta.api.objects; import com.fasterxml.jackson.annotation.JsonProperty; import lombok.AllArgsConstructor; import lombok.EqualsAndHashCode; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; import lombok.ToString; import org.telegram.telegrambots.meta.api.interfaces.BotApiObject; import java.security.InvalidParameterException; import java.text.MessageFormat; /** * This object represents a file ready to be downloaded * @author Ruben Bermudez * @version 1.0 */ @EqualsAndHashCode(callSuper = false) @Getter @Setter @ToString @NoArgsConstructor @AllArgsConstructor public class File implements BotApiObject { private static final String FILEID_FIELD = "file_id"; private static final String FILEUNIQUEID_FIELD = "file_unique_id"; private static final String FILE_SIZE_FIELD = "file_size"; private static final String FILE_PATH_FIELD = "file_path"; /** * Identifier for this file, which can be used to download or reuse the file */ @JsonProperty(FILEID_FIELD) private String fileId; /** * Unique identifier for this file, which is supposed to be the same over time and for different bots. * Can't be used to download or reuse the file. */ @JsonProperty(FILEUNIQUEID_FIELD) private String fileUniqueId; /** * Optional. * File size in bytes. * It can be bigger than 2^31 and some programming languages may have difficulty/silent defects in interpreting it. * But it has at most 52 significant bits, so a signed 64-bit integer or double-precision float type are safe for storing this value. */ @JsonProperty(FILE_SIZE_FIELD) private Long fileSize; /** * Optional. File path. Use https://api.telegram.org/file/bot/ to get the file. */ @JsonProperty(FILE_PATH_FIELD) private String filePath; public String getFileUrl(String botToken) { return getFileUrl(botToken, filePath); } public static String getFileUrl(String botToken, String filePath) { if (botToken == null || botToken.isEmpty()) { throw new InvalidParameterException("Bot token can't be empty"); } return MessageFormat.format("https://api.telegram.org/file/bot{0}/{1}", botToken, filePath); } }