5903cd6338
2. Update with latest api changes 3. Improve exceptions 4. Added validation in api methods 5. Moved to maven central
240 lines
8.3 KiB
Java
240 lines
8.3 KiB
Java
package org.telegram.telegrambots.api.objects.inlinequery.result;
|
|
|
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
|
import com.fasterxml.jackson.core.JsonGenerator;
|
|
import com.fasterxml.jackson.databind.SerializerProvider;
|
|
import com.fasterxml.jackson.databind.jsontype.TypeSerializer;
|
|
import org.json.JSONObject;
|
|
import org.telegram.telegrambots.api.objects.inlinequery.inputmessagecontent.InputMessageContent;
|
|
import org.telegram.telegrambots.api.objects.replykeyboard.InlineKeyboardMarkup;
|
|
import org.telegram.telegrambots.exceptions.TelegramApiValidationException;
|
|
|
|
import java.io.IOException;
|
|
|
|
/**
|
|
* @author Ruben Bermudez
|
|
* @version 1.0
|
|
* @brief Represents a contact with a phone number. By default, this contact will be sent by the
|
|
* user. Alternatively, you can use input_message_content to send a message with the specified
|
|
* content instead of the contact.
|
|
* @note This will only work in Telegram versions released after 9 April, 2016. Older clients will
|
|
* ignore them.
|
|
* @date 10 of April of 2016
|
|
*/
|
|
public class InlineQueryResultContact implements InlineQueryResult {
|
|
|
|
private static final String TYPE_FIELD = "type";
|
|
@JsonProperty(TYPE_FIELD)
|
|
private static final String type = "contact"; ///< Type of the result, must be "contact"
|
|
private static final String ID_FIELD = "id";
|
|
private static final String PHONE_NUMBER_FIELD = "phone_number";
|
|
private static final String FIRST_NAME_FIELD = "first_name";
|
|
private static final String LAST_NAME_FIELD = "last_name";
|
|
private static final String REPLY_MARKUP_FIELD = "reply_markup";
|
|
private static final String INPUTMESSAGECONTENT_FIELD = "input_message_content";
|
|
private static final String THUMBURL_FIELD = "thumb_url";
|
|
private static final String THUMBWIDTH_FIELD = "thumb_width";
|
|
private static final String THUMBHEIGHT_FIELD = "thumb_height";
|
|
@JsonProperty(ID_FIELD)
|
|
private String id; ///< Unique identifier of this result, 1-64 bytes
|
|
@JsonProperty(PHONE_NUMBER_FIELD)
|
|
private String phoneNumber; ///< Contact's phone number
|
|
@JsonProperty(FIRST_NAME_FIELD)
|
|
private String firstName; ///< Contact's first name
|
|
@JsonProperty(LAST_NAME_FIELD)
|
|
private String lastName; ///< Contact's last name
|
|
@JsonProperty(REPLY_MARKUP_FIELD)
|
|
private InlineKeyboardMarkup replyMarkup; ///< Optional. Inline keyboard attached to the message
|
|
@JsonProperty(INPUTMESSAGECONTENT_FIELD)
|
|
private InputMessageContent inputMessageContent; ///< Optional. Content of the message to be sent
|
|
@JsonProperty(THUMBURL_FIELD)
|
|
private String thumbUrl; ///< Optional. URL of the thumbnail (jpeg only) for the file
|
|
@JsonProperty(THUMBWIDTH_FIELD)
|
|
private Integer thumbWidth; ///< Optional. Thumbnail width
|
|
@JsonProperty(THUMBHEIGHT_FIELD)
|
|
private Integer thumbHeight; ///< Optional. Thumbnail height
|
|
|
|
public static String getType() {
|
|
return type;
|
|
}
|
|
|
|
public String getId() {
|
|
return id;
|
|
}
|
|
|
|
public InlineQueryResultContact setId(String id) {
|
|
this.id = id;
|
|
return this;
|
|
}
|
|
|
|
public String getPhoneNumber() {
|
|
return phoneNumber;
|
|
}
|
|
|
|
public InlineQueryResultContact setPhoneNumber(String phoneNumber) {
|
|
this.phoneNumber = phoneNumber;
|
|
return this;
|
|
}
|
|
|
|
public String getFirstName() {
|
|
return firstName;
|
|
}
|
|
|
|
public InlineQueryResultContact setFirstName(String firstName) {
|
|
this.firstName = firstName;
|
|
return this;
|
|
}
|
|
|
|
public String getLastName() {
|
|
return lastName;
|
|
}
|
|
|
|
public InlineQueryResultContact setLastName(String lastName) {
|
|
this.lastName = lastName;
|
|
return this;
|
|
}
|
|
|
|
public InlineKeyboardMarkup getReplyMarkup() {
|
|
return replyMarkup;
|
|
}
|
|
|
|
public InlineQueryResultContact setReplyMarkup(InlineKeyboardMarkup replyMarkup) {
|
|
this.replyMarkup = replyMarkup;
|
|
return this;
|
|
}
|
|
|
|
public InputMessageContent getInputMessageContent() {
|
|
return inputMessageContent;
|
|
}
|
|
|
|
public InlineQueryResultContact setInputMessageContent(InputMessageContent inputMessageContent) {
|
|
this.inputMessageContent = inputMessageContent;
|
|
return this;
|
|
}
|
|
|
|
public String getThumbUrl() {
|
|
return thumbUrl;
|
|
}
|
|
|
|
public InlineQueryResultContact setThumbUrl(String thumbUrl) {
|
|
this.thumbUrl = thumbUrl;
|
|
return this;
|
|
}
|
|
|
|
public Integer getThumbWidth() {
|
|
return thumbWidth;
|
|
}
|
|
|
|
public InlineQueryResultContact setThumbWidth(Integer thumbWidth) {
|
|
this.thumbWidth = thumbWidth;
|
|
return this;
|
|
}
|
|
|
|
public Integer getThumbHeight() {
|
|
return thumbHeight;
|
|
}
|
|
|
|
public InlineQueryResultContact setThumbHeight(Integer thumbHeight) {
|
|
this.thumbHeight = thumbHeight;
|
|
return this;
|
|
}
|
|
|
|
@Override
|
|
public void validate() throws TelegramApiValidationException {
|
|
if (id == null || id.isEmpty()) {
|
|
throw new TelegramApiValidationException("ID parameter can't be empty", this);
|
|
}
|
|
if (phoneNumber == null || phoneNumber.isEmpty()) {
|
|
throw new TelegramApiValidationException("PhoneNumber parameter can't be empty", this);
|
|
}
|
|
if (firstName == null || firstName.isEmpty()) {
|
|
throw new TelegramApiValidationException("FirstName parameter can't be empty", this);
|
|
}
|
|
if (inputMessageContent != null) {
|
|
inputMessageContent.validate();
|
|
}
|
|
if (replyMarkup != null) {
|
|
replyMarkup.validate();
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public JSONObject toJson() {
|
|
JSONObject jsonObject = new JSONObject();
|
|
jsonObject.put(TYPE_FIELD, type);
|
|
jsonObject.put(ID_FIELD, id);
|
|
jsonObject.put(PHONE_NUMBER_FIELD, phoneNumber);
|
|
jsonObject.put(FIRST_NAME_FIELD, firstName);
|
|
if (lastName != null) {
|
|
jsonObject.put(LAST_NAME_FIELD, lastName);
|
|
}
|
|
if (replyMarkup != null) {
|
|
jsonObject.put(REPLY_MARKUP_FIELD, replyMarkup.toJson());
|
|
}
|
|
if (inputMessageContent != null) {
|
|
jsonObject.put(INPUTMESSAGECONTENT_FIELD, inputMessageContent.toJson());
|
|
}
|
|
if (thumbUrl != null) {
|
|
jsonObject.put(THUMBURL_FIELD, this.thumbUrl);
|
|
}
|
|
if (thumbWidth != null) {
|
|
jsonObject.put(THUMBWIDTH_FIELD, this.thumbWidth);
|
|
}
|
|
if (thumbHeight != null) {
|
|
jsonObject.put(THUMBHEIGHT_FIELD, thumbHeight);
|
|
}
|
|
return jsonObject;
|
|
}
|
|
|
|
@Override
|
|
public void serialize(JsonGenerator gen, SerializerProvider serializers) throws IOException {
|
|
gen.writeStartObject();
|
|
gen.writeStringField(TYPE_FIELD, type);
|
|
gen.writeStringField(ID_FIELD, id);
|
|
gen.writeStringField(PHONE_NUMBER_FIELD, phoneNumber);
|
|
gen.writeStringField(FIRST_NAME_FIELD, firstName);
|
|
if (lastName != null) {
|
|
gen.writeStringField(LAST_NAME_FIELD, lastName);
|
|
}
|
|
if (replyMarkup != null) {
|
|
gen.writeObjectField(REPLY_MARKUP_FIELD, replyMarkup);
|
|
}
|
|
if (inputMessageContent != null) {
|
|
gen.writeObjectField(INPUTMESSAGECONTENT_FIELD, inputMessageContent);
|
|
}
|
|
if (thumbUrl != null) {
|
|
gen.writeStringField(THUMBURL_FIELD, this.thumbUrl);
|
|
}
|
|
if (thumbWidth != null) {
|
|
gen.writeNumberField(THUMBWIDTH_FIELD, thumbWidth);
|
|
}
|
|
if (thumbHeight != null) {
|
|
gen.writeNumberField(THUMBHEIGHT_FIELD, thumbHeight);
|
|
}
|
|
|
|
gen.writeEndObject();
|
|
gen.flush();
|
|
}
|
|
|
|
@Override
|
|
public void serializeWithType(JsonGenerator gen, SerializerProvider serializers, TypeSerializer typeSer) throws IOException {
|
|
serialize(gen, serializers);
|
|
}
|
|
|
|
@Override
|
|
public String toString() {
|
|
return "InlineQueryResultContact{" +
|
|
"type='" + type + '\'' +
|
|
", id='" + id + '\'' +
|
|
", phoneNumber='" + phoneNumber + '\'' +
|
|
", firstName='" + firstName + '\'' +
|
|
", thumbHeight=" + thumbHeight +
|
|
", thumbWidth=" + thumbWidth +
|
|
", thumbUrl='" + thumbUrl + '\'' +
|
|
", lastName='" + lastName + '\'' +
|
|
", inputMessageContent='" + inputMessageContent + '\'' +
|
|
", replyMarkup='" + replyMarkup + '\'' +
|
|
'}';
|
|
}
|
|
}
|