moved objcts folder, added some TObjects, improved JSONBased
This commit is contained in:
parent
bd33ef8499
commit
df564169ee
|
@ -16,15 +16,16 @@ import de.mrbesen.telegram.event.Event;
|
||||||
import de.mrbesen.telegram.event.EventManager;
|
import de.mrbesen.telegram.event.EventManager;
|
||||||
import de.mrbesen.telegram.event.events.UserSendAudioEvent;
|
import de.mrbesen.telegram.event.events.UserSendAudioEvent;
|
||||||
import de.mrbesen.telegram.event.events.UserSendMessageEvent;
|
import de.mrbesen.telegram.event.events.UserSendMessageEvent;
|
||||||
import objects.TMessage;
|
import de.mrbesen.telegram.objects.TAudio;
|
||||||
import objects.TUser;
|
import de.mrbesen.telegram.objects.TMessage;
|
||||||
import objects.JSONBased.Member;
|
import de.mrbesen.telegram.objects.TUser;
|
||||||
import objects.TAudio;
|
import de.mrbesen.telegram.objects.JSONBased.Member;
|
||||||
|
|
||||||
public class TelegramAPI implements Runnable {
|
public class TelegramAPI implements Runnable {
|
||||||
|
|
||||||
private static final String API_URL = "https://api.telegram.org/bot";
|
private static final String API_URL = "https://api.telegram.org/bot";
|
||||||
private static final String TOKENREGEX = "^\\d{4,9}:[\\w-]{12,64}$";
|
private static final String TOKENREGEX = "^\\d{4,9}:[\\w-]{12,64}$";
|
||||||
|
public static final String APIVERSION = "3.6";//February 13, 2018
|
||||||
|
|
||||||
private int msg_offset = 0;
|
private int msg_offset = 0;
|
||||||
private int updateInterval = 1500;
|
private int updateInterval = 1500;
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
package de.mrbesen.telegram.commands;
|
package de.mrbesen.telegram.commands;
|
||||||
|
|
||||||
import objects.TUser;
|
import de.mrbesen.telegram.objects.TUser;
|
||||||
|
|
||||||
public interface CommandHandler {
|
public interface CommandHandler {
|
||||||
|
|
||||||
|
|
|
@ -3,7 +3,7 @@ package de.mrbesen.telegram.commands;
|
||||||
import com.google.common.collect.ArrayListMultimap;
|
import com.google.common.collect.ArrayListMultimap;
|
||||||
import com.google.common.collect.Multimap;
|
import com.google.common.collect.Multimap;
|
||||||
|
|
||||||
import objects.TUser;
|
import de.mrbesen.telegram.objects.TUser;
|
||||||
|
|
||||||
public class CommandManager {
|
public class CommandManager {
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
package de.mrbesen.telegram.event;
|
package de.mrbesen.telegram.event;
|
||||||
|
|
||||||
import objects.TUser;
|
import de.mrbesen.telegram.objects.TUser;
|
||||||
|
|
||||||
public class Event {
|
public class Event {
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
package de.mrbesen.telegram.event.events;
|
package de.mrbesen.telegram.event.events;
|
||||||
|
|
||||||
import de.mrbesen.telegram.event.Event;
|
import de.mrbesen.telegram.event.Event;
|
||||||
import objects.TAudio;
|
import de.mrbesen.telegram.objects.TAudio;
|
||||||
import objects.TUser;
|
import de.mrbesen.telegram.objects.TUser;
|
||||||
|
|
||||||
public class UserSendAudioEvent extends Event {
|
public class UserSendAudioEvent extends Event {
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
package de.mrbesen.telegram.event.events;
|
package de.mrbesen.telegram.event.events;
|
||||||
|
|
||||||
import de.mrbesen.telegram.event.Event;
|
import de.mrbesen.telegram.event.Event;
|
||||||
import objects.TMessage;
|
import de.mrbesen.telegram.objects.TMessage;
|
||||||
import objects.TUser;
|
import de.mrbesen.telegram.objects.TUser;
|
||||||
|
|
||||||
public class UserSendMessageEvent extends Event {
|
public class UserSendMessageEvent extends Event {
|
||||||
|
|
||||||
|
|
|
@ -1,18 +1,21 @@
|
||||||
package objects;
|
package de.mrbesen.telegram.objects;
|
||||||
|
|
||||||
import org.json.JSONObject;
|
import org.json.JSONObject;
|
||||||
|
|
||||||
public class JSONBased {
|
public class JSONBased {
|
||||||
|
|
||||||
private JSONObject base_json = null;
|
private JSONObject base_json = null;
|
||||||
|
protected Member[] allowedmembers = {};
|
||||||
public JSONBased(JSONObject o) {
|
|
||||||
base_json = o;
|
public JSONBased(JSONObject json) {
|
||||||
|
base_json = json;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean has(Member mem) {
|
public boolean has(Member mem) {
|
||||||
if(base_json == null)
|
if(base_json == null)
|
||||||
return false;
|
return false;
|
||||||
|
if(!isAllowd(mem))
|
||||||
|
throw new UnallowedMemberException(mem, this);
|
||||||
return base_json.has(mem.name());
|
return base_json.has(mem.name());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -22,6 +25,15 @@ public class JSONBased {
|
||||||
return base_json.get(mem.name());
|
return base_json.get(mem.name());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isAllowd(Member mem) {
|
||||||
|
for(Member allowedmem : allowedmembers) {
|
||||||
|
if(allowedmem == mem) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
public enum Member {
|
public enum Member {
|
||||||
|
|
||||||
// ===== MESSAGE ====
|
// ===== MESSAGE ====
|
||||||
|
@ -63,8 +75,29 @@ public class JSONBased {
|
||||||
//==== AUDIO ======
|
//==== AUDIO ======
|
||||||
performer, //String
|
performer, //String
|
||||||
title,//String
|
title,//String
|
||||||
mime_type, // String
|
mime_type, // String - also used for Documents, PhotoSize & video
|
||||||
file_size; // int
|
file_size, // int - also used for Documents, File & video
|
||||||
//===== END AUDIO ====
|
//===== END AUDIO ====
|
||||||
|
|
||||||
|
//=====Document=====
|
||||||
|
thumb, //PhotoSize - also used in Video
|
||||||
|
file_name,//String
|
||||||
|
//=====END Document=====
|
||||||
|
|
||||||
|
//===== VENUE ====
|
||||||
|
foursquare_id, //String
|
||||||
|
//===== END VENUE ====
|
||||||
|
|
||||||
|
//===== FILE =====
|
||||||
|
file_path, // String
|
||||||
|
//===== END FILE =====
|
||||||
|
}
|
||||||
|
|
||||||
|
private class UnallowedMemberException extends RuntimeException {
|
||||||
|
private static final long serialVersionUID = -253424139568749269L;
|
||||||
|
|
||||||
|
public UnallowedMemberException(Member mem, JSONBased b) {
|
||||||
|
super(b.getClass().getSimpleName() + " does not allow member " + mem.name());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -0,0 +1,19 @@
|
||||||
|
package de.mrbesen.telegram.objects;
|
||||||
|
|
||||||
|
import org.json.JSONObject;
|
||||||
|
|
||||||
|
import de.mrbesen.telegram.objects.JSONBased.Member;
|
||||||
|
|
||||||
|
public class TAudio extends TDocument {
|
||||||
|
private int duration;
|
||||||
|
|
||||||
|
public TAudio(JSONObject o) {
|
||||||
|
super(o);
|
||||||
|
duration = o.getInt("duration");
|
||||||
|
allowedmembers = new Member[] {Member.performer, Member.title, Member.mime_type, Member.file_size};
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getDuration() {
|
||||||
|
return duration;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,19 @@
|
||||||
|
package de.mrbesen.telegram.objects;
|
||||||
|
|
||||||
|
import org.json.JSONObject;
|
||||||
|
|
||||||
|
public class TDocument extends JSONBased {
|
||||||
|
|
||||||
|
private String file_id;
|
||||||
|
|
||||||
|
public TDocument(JSONObject o) {
|
||||||
|
super(o);
|
||||||
|
file_id = o.getString("file_id");
|
||||||
|
allowedmembers = new Member[] {Member.thumb, Member.file_name, Member.mime_type, Member.file_size};
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getFile_id() {
|
||||||
|
return file_id;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,11 @@
|
||||||
|
package de.mrbesen.telegram.objects;
|
||||||
|
|
||||||
|
import org.json.JSONObject;
|
||||||
|
|
||||||
|
public class TFile extends TDocument {
|
||||||
|
|
||||||
|
public TFile(JSONObject json) {
|
||||||
|
super(json);
|
||||||
|
allowedmembers = new Member[] {Member.file_size, Member.file_path};
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,4 +1,4 @@
|
||||||
package objects;
|
package de.mrbesen.telegram.objects;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
|
@ -0,0 +1,21 @@
|
||||||
|
package de.mrbesen.telegram.objects;
|
||||||
|
|
||||||
|
import org.json.JSONObject;
|
||||||
|
|
||||||
|
public class TLocation {
|
||||||
|
|
||||||
|
private float longitude, latitude;
|
||||||
|
|
||||||
|
public TLocation(JSONObject json) {
|
||||||
|
longitude = json.getFloat("longitude");
|
||||||
|
latitude = json.getFloat("latitude");
|
||||||
|
}
|
||||||
|
|
||||||
|
public float getLongitude() {
|
||||||
|
return longitude;
|
||||||
|
}
|
||||||
|
|
||||||
|
public float getLatitude() {
|
||||||
|
return latitude;
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,4 +1,4 @@
|
||||||
package objects;
|
package de.mrbesen.telegram.objects;
|
||||||
|
|
||||||
import org.json.JSONObject;
|
import org.json.JSONObject;
|
||||||
|
|
||||||
|
@ -31,6 +31,7 @@ public class TMessage extends JSONBased {
|
||||||
|
|
||||||
if(json.has("text") )
|
if(json.has("text") )
|
||||||
text = json.getString("text");
|
text = json.getString("text");
|
||||||
|
allowedmembers = new Member[] {Member.forward_from_message_id, Member.forward_signature, Member.forward_date, Member.reply_to_message, Member.edit_date, Member.media_group_id, Member.author_signature, Member.author_signature, Member.audio, Member.document, Member.game, Member.photo, Member.sticker, Member.video, Member.voice, Member.video_note, Member.caption, Member.contact, Member.location, Member.venue, Member.new_chat_members, Member.left_chat_members, Member.new_chat_title, Member.new_chat_photo, Member.delete_chat_photo, Member.group_chat_created, Member.supergroup_chat_created, Member.channel_chat_created, Member.migrate_from_chat_id, Member.migrate_to_chat_id, Member.pinned_message, Member.invoice, Member.successful_payment, Member.connected_website};
|
||||||
}
|
}
|
||||||
|
|
||||||
public TUser getFrom() {
|
public TUser getFrom() {
|
|
@ -0,0 +1,25 @@
|
||||||
|
package de.mrbesen.telegram.objects;
|
||||||
|
|
||||||
|
import org.json.JSONObject;
|
||||||
|
|
||||||
|
import de.mrbesen.telegram.objects.JSONBased.Member;
|
||||||
|
|
||||||
|
public class TPhotoSize extends TDocument {
|
||||||
|
|
||||||
|
private int width, height;
|
||||||
|
|
||||||
|
public TPhotoSize(JSONObject json) {
|
||||||
|
super(json);
|
||||||
|
width = json.getInt("width");
|
||||||
|
height = json.getInt("height");
|
||||||
|
allowedmembers = new Member[] {Member.file_size};
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getWidth() {
|
||||||
|
return width;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getHeight() {
|
||||||
|
return height;
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,4 +1,4 @@
|
||||||
package objects;
|
package de.mrbesen.telegram.objects;
|
||||||
|
|
||||||
public interface TReplyMarkup {
|
public interface TReplyMarkup {
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
package objects;
|
package de.mrbesen.telegram.objects;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.net.URLEncoder;
|
import java.net.URLEncoder;
|
||||||
|
@ -68,25 +68,19 @@ public class TUser {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void sendMessage(String text) {
|
public void sendMessage(String text) {
|
||||||
if(api == null) {
|
sendMessage(text, null);
|
||||||
System.err.println("api == null!");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
api.request("sendMessage", "chat_id=" + id + "&text=" + URLEncoder.encode(text, "UTF-8"));
|
|
||||||
} catch (IOException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void sendMessage(String text, TReplyMarkup rm) {
|
public void sendMessage(String text, TReplyMarkup rm) {
|
||||||
if(api == null) {
|
if(api == null) {
|
||||||
System.err.println("api == null!");
|
System.err.println("api == null!");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
|
String reply= (rm == null ? "" : "&reply_markup=" + URLEncoder.encode(rm.toJSONString(), "UTF-8"));
|
||||||
api.request("sendMessage", "chat_id=" + id
|
api.request("sendMessage", "chat_id=" + id
|
||||||
+ "&text=" + URLEncoder.encode(text, "UTF-8")
|
+ "&text=" + URLEncoder.encode(text, "UTF-8")
|
||||||
+ "&reply_markup=" + URLEncoder.encode(rm.toJSONString(), "UTF-8") );
|
+ reply );
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
|
@ -0,0 +1,28 @@
|
||||||
|
package de.mrbesen.telegram.objects;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.json.JSONArray;
|
||||||
|
import org.json.JSONObject;
|
||||||
|
|
||||||
|
public class TUserProfilePhotos {
|
||||||
|
|
||||||
|
private List<List<TPhotoSize>> photos = new ArrayList<>();
|
||||||
|
|
||||||
|
public TUserProfilePhotos(JSONObject json) {
|
||||||
|
JSONArray arr = json.getJSONArray("photos");
|
||||||
|
for(int i = 0; !arr.isNull(i); i++) {
|
||||||
|
JSONArray ar = arr.getJSONArray(i);
|
||||||
|
List<TPhotoSize> insert = new ArrayList<>();
|
||||||
|
for(int j = 0; !ar.isNull(j); j++) {
|
||||||
|
insert.add(new TPhotoSize(ar.getJSONObject(j)));
|
||||||
|
}
|
||||||
|
photos.add(insert);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getLength() {
|
||||||
|
return photos.size();
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,29 @@
|
||||||
|
package de.mrbesen.telegram.objects;
|
||||||
|
|
||||||
|
import org.json.JSONObject;
|
||||||
|
|
||||||
|
public class TVenue extends JSONBased {
|
||||||
|
|
||||||
|
private TLocation location;
|
||||||
|
private String title, address;
|
||||||
|
|
||||||
|
public TVenue(JSONObject json) {
|
||||||
|
super(json);
|
||||||
|
location = new TLocation(json.getJSONObject("location"));
|
||||||
|
title = json.getString("title");
|
||||||
|
address = json.getString("address");
|
||||||
|
allowedmembers = new Member[] {Member.foursquare_id};
|
||||||
|
}
|
||||||
|
|
||||||
|
public TLocation getLocation() {
|
||||||
|
return location;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getTitle() {
|
||||||
|
return title;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getAddress() {
|
||||||
|
return address;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,23 @@
|
||||||
|
package de.mrbesen.telegram.objects;
|
||||||
|
|
||||||
|
import org.json.JSONObject;
|
||||||
|
|
||||||
|
public class TVideo extends TAudio {
|
||||||
|
|
||||||
|
private int width, height;
|
||||||
|
|
||||||
|
public TVideo(JSONObject o) {
|
||||||
|
super(o);
|
||||||
|
width = o.getInt("width");
|
||||||
|
height = o.getInt("height");
|
||||||
|
allowedmembers = new Member[] {Member.thumb, Member.mime_type, Member.file_size};
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getWidth() {
|
||||||
|
return width;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getHeight() {
|
||||||
|
return height;
|
||||||
|
}
|
||||||
|
}
|
|
@ -8,9 +8,9 @@ import de.mrbesen.telegram.commands.CommandHandler;
|
||||||
import de.mrbesen.telegram.event.EventHandler;
|
import de.mrbesen.telegram.event.EventHandler;
|
||||||
import de.mrbesen.telegram.event.EventListener;
|
import de.mrbesen.telegram.event.EventListener;
|
||||||
import de.mrbesen.telegram.event.events.UserSendMessageEvent;
|
import de.mrbesen.telegram.event.events.UserSendMessageEvent;
|
||||||
import objects.TInlineKeyboardMarkup;
|
import de.mrbesen.telegram.objects.TInlineKeyboardMarkup;
|
||||||
import objects.TUser;
|
import de.mrbesen.telegram.objects.TUser;
|
||||||
import objects.TUser.Status;
|
import de.mrbesen.telegram.objects.TUser.Status;
|
||||||
|
|
||||||
public class Main implements CommandHandler, Runnable, EventListener {
|
public class Main implements CommandHandler, Runnable, EventListener {
|
||||||
|
|
||||||
|
|
|
@ -1,12 +0,0 @@
|
||||||
package objects;
|
|
||||||
|
|
||||||
import org.json.JSONObject;
|
|
||||||
|
|
||||||
public class TAudio extends JSONBased {
|
|
||||||
private String file_id;
|
|
||||||
private int duration;
|
|
||||||
|
|
||||||
public TAudio(JSONObject o) {
|
|
||||||
super(o);
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
Reference in New Issue