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 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 { 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 replayToMessageId; ///< Optional. If the message is a reply, ID of the original message private ReplyKeyboard replayMarkup; ///< 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 getReplayToMessageId() { return replayToMessageId; } public SendLocation setReplayToMessageId(Integer replayToMessageId) { this.replayToMessageId = replayToMessageId; return this; } public ReplyKeyboard getReplayMarkup() { return replayMarkup; } public SendLocation setReplayMarkup(ReplyKeyboard replayMarkup) { this.replayMarkup = replayMarkup; 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 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 (replayToMessageId != null) { jsonObject.put(REPLYTOMESSAGEID_FIELD, replayToMessageId); } if (replayMarkup != null) { jsonObject.put(REPLYMARKUP_FIELD, replayMarkup.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 (replayToMessageId != null) { gen.writeNumberField(REPLYTOMESSAGEID_FIELD, replayToMessageId); } if (replayMarkup != null) { gen.writeObjectField(REPLYMARKUP_FIELD, replayMarkup); } 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 + ", replayToMessageId=" + replayToMessageId + ", replayMarkup=" + replayMarkup + '}'; } }