5903cd6338
2. Update with latest api changes 3. Improve exceptions 4. Added validation in api methods 5. Moved to maven central
183 lines
5.9 KiB
Java
183 lines
5.9 KiB
Java
package org.telegram.telegrambots.api.methods.send;
|
|
|
|
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.Constants;
|
|
import org.telegram.telegrambots.api.methods.BotApiMethod;
|
|
import org.telegram.telegrambots.api.objects.Message;
|
|
import org.telegram.telegrambots.api.objects.replykeyboard.ReplyKeyboard;
|
|
import org.telegram.telegrambots.exceptions.TelegramApiValidationException;
|
|
|
|
import java.io.IOException;
|
|
|
|
/**
|
|
* @author Ruben Bermudez
|
|
* @version 1.0
|
|
* @brief Use this method to send point on the map. On success, the sent Message is returned.
|
|
* @date 20 of June of 2015
|
|
*/
|
|
public class SendLocation extends BotApiMethod<Message> {
|
|
public static final String PATH = "sendlocation";
|
|
|
|
private static final String CHATID_FIELD = "chat_id";
|
|
private static final String LATITUDE_FIELD = "latitude";
|
|
private static final String LONGITUDE_FIELD = "longitude";
|
|
private static final String DISABLENOTIFICATION_FIELD = "disable_notification";
|
|
private static final String REPLYTOMESSAGEID_FIELD = "reply_to_message_id";
|
|
private static final String REPLYMARKUP_FIELD = "reply_markup";
|
|
private String chatId; ///< Unique identifier for the chat to send the message to (Or username for channels)
|
|
private Float latitude; ///< Latitude of location
|
|
private Float longitude; ///< Longitude of location
|
|
/**
|
|
* Optional. Sends the message silently. iOS users will not receive a notification, Android
|
|
* users will receive a notification with no sound. Other apps coming soon
|
|
*/
|
|
private Boolean disableNotification;
|
|
private Integer replyToMessageId; ///< Optional. If the message is a reply, ID of the original message
|
|
private ReplyKeyboard replyMarkup; ///< Optional. JSON-serialized object for a custom reply keyboard
|
|
|
|
public String getChatId() {
|
|
return chatId;
|
|
}
|
|
|
|
public SendLocation setChatId(String chatId) {
|
|
this.chatId = chatId;
|
|
return this;
|
|
}
|
|
|
|
public Float getLatitude() {
|
|
return latitude;
|
|
}
|
|
|
|
public SendLocation setLatitude(Float latitude) {
|
|
this.latitude = latitude;
|
|
return this;
|
|
}
|
|
|
|
public Float getLongitude() {
|
|
return longitude;
|
|
}
|
|
|
|
public SendLocation setLongitude(Float longitude) {
|
|
this.longitude = longitude;
|
|
return this;
|
|
}
|
|
|
|
public Integer getReplyToMessageId() {
|
|
return replyToMessageId;
|
|
}
|
|
|
|
public SendLocation setReplyToMessageId(Integer replyToMessageId) {
|
|
this.replyToMessageId = replyToMessageId;
|
|
return this;
|
|
}
|
|
|
|
public ReplyKeyboard getReplyMarkup() {
|
|
return replyMarkup;
|
|
}
|
|
|
|
public SendLocation setReplyMarkup(ReplyKeyboard replyMarkup) {
|
|
this.replyMarkup = replyMarkup;
|
|
return this;
|
|
}
|
|
|
|
public Boolean getDisableNotification() {
|
|
return disableNotification;
|
|
}
|
|
|
|
public SendLocation enableNotification() {
|
|
this.disableNotification = false;
|
|
return this;
|
|
}
|
|
|
|
public SendLocation disableNotification() {
|
|
this.disableNotification = true;
|
|
return this;
|
|
}
|
|
|
|
@Override
|
|
public String getPath() {
|
|
return PATH;
|
|
}
|
|
|
|
@Override
|
|
public Message deserializeResponse(JSONObject answer) {
|
|
if (answer.getBoolean(Constants.RESPONSEFIELDOK)) {
|
|
return new Message(answer.getJSONObject(Constants.RESPONSEFIELDRESULT));
|
|
}
|
|
return null;
|
|
}
|
|
|
|
@Override
|
|
public void validate() throws TelegramApiValidationException {
|
|
if (chatId == null) {
|
|
throw new TelegramApiValidationException("ChatId parameter can't be empty", this);
|
|
}
|
|
if (latitude == null) {
|
|
throw new TelegramApiValidationException("Latitude parameter can't be empty", this);
|
|
}
|
|
if (longitude == null) {
|
|
throw new TelegramApiValidationException("Longitude parameter can't be empty", this);
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public JSONObject toJson() {
|
|
JSONObject jsonObject = new JSONObject();
|
|
jsonObject.put(CHATID_FIELD, chatId);
|
|
jsonObject.put(LATITUDE_FIELD, latitude);
|
|
jsonObject.put(LONGITUDE_FIELD, longitude);
|
|
if (disableNotification != null) {
|
|
jsonObject.put(DISABLENOTIFICATION_FIELD, disableNotification);
|
|
}
|
|
if (replyToMessageId != null) {
|
|
jsonObject.put(REPLYTOMESSAGEID_FIELD, replyToMessageId);
|
|
}
|
|
if (replyMarkup != null) {
|
|
jsonObject.put(REPLYMARKUP_FIELD, replyMarkup.toJson());
|
|
}
|
|
|
|
return jsonObject;
|
|
}
|
|
|
|
@Override
|
|
public void serialize(JsonGenerator gen, SerializerProvider serializers) throws IOException {
|
|
gen.writeStartObject();
|
|
gen.writeStringField(METHOD_FIELD, PATH);
|
|
gen.writeStringField(CHATID_FIELD, chatId);
|
|
gen.writeNumberField(LATITUDE_FIELD, latitude);
|
|
gen.writeNumberField(LONGITUDE_FIELD, longitude);
|
|
if (disableNotification != null) {
|
|
gen.writeBooleanField(DISABLENOTIFICATION_FIELD, disableNotification);
|
|
}
|
|
if (replyToMessageId != null) {
|
|
gen.writeNumberField(REPLYTOMESSAGEID_FIELD, replyToMessageId);
|
|
}
|
|
if (replyMarkup != null) {
|
|
gen.writeObjectField(REPLYMARKUP_FIELD, replyMarkup);
|
|
}
|
|
|
|
gen.writeEndObject();
|
|
gen.flush();
|
|
}
|
|
|
|
@Override
|
|
public void serializeWithType(JsonGenerator gen, SerializerProvider serializers, TypeSerializer typeSer) throws IOException {
|
|
serialize(gen, serializers);
|
|
}
|
|
|
|
@Override
|
|
public String toString() {
|
|
return "SendLocation{" +
|
|
"chatId='" + chatId + '\'' +
|
|
", latitude=" + latitude +
|
|
", longitude=" + longitude +
|
|
", replyToMessageId=" + replyToMessageId +
|
|
", replyMarkup=" + replyMarkup +
|
|
'}';
|
|
}
|
|
}
|