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.events.UserSendAudioEvent;
|
||||
import de.mrbesen.telegram.event.events.UserSendMessageEvent;
|
||||
import objects.TMessage;
|
||||
import objects.TUser;
|
||||
import objects.JSONBased.Member;
|
||||
import objects.TAudio;
|
||||
import de.mrbesen.telegram.objects.TAudio;
|
||||
import de.mrbesen.telegram.objects.TMessage;
|
||||
import de.mrbesen.telegram.objects.TUser;
|
||||
import de.mrbesen.telegram.objects.JSONBased.Member;
|
||||
|
||||
public class TelegramAPI implements Runnable {
|
||||
|
||||
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 updateInterval = 1500;
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
package de.mrbesen.telegram.commands;
|
||||
|
||||
import objects.TUser;
|
||||
import de.mrbesen.telegram.objects.TUser;
|
||||
|
||||
public interface CommandHandler {
|
||||
|
||||
|
|
|
@ -3,7 +3,7 @@ package de.mrbesen.telegram.commands;
|
|||
import com.google.common.collect.ArrayListMultimap;
|
||||
import com.google.common.collect.Multimap;
|
||||
|
||||
import objects.TUser;
|
||||
import de.mrbesen.telegram.objects.TUser;
|
||||
|
||||
public class CommandManager {
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
package de.mrbesen.telegram.event;
|
||||
|
||||
import objects.TUser;
|
||||
import de.mrbesen.telegram.objects.TUser;
|
||||
|
||||
public class Event {
|
||||
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
package de.mrbesen.telegram.event.events;
|
||||
|
||||
import de.mrbesen.telegram.event.Event;
|
||||
import objects.TAudio;
|
||||
import objects.TUser;
|
||||
import de.mrbesen.telegram.objects.TAudio;
|
||||
import de.mrbesen.telegram.objects.TUser;
|
||||
|
||||
public class UserSendAudioEvent extends Event {
|
||||
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
package de.mrbesen.telegram.event.events;
|
||||
|
||||
import de.mrbesen.telegram.event.Event;
|
||||
import objects.TMessage;
|
||||
import objects.TUser;
|
||||
import de.mrbesen.telegram.objects.TMessage;
|
||||
import de.mrbesen.telegram.objects.TUser;
|
||||
|
||||
public class UserSendMessageEvent extends Event {
|
||||
|
||||
|
|
|
@ -1,18 +1,21 @@
|
|||
package objects;
|
||||
package de.mrbesen.telegram.objects;
|
||||
|
||||
import org.json.JSONObject;
|
||||
|
||||
public class JSONBased {
|
||||
|
||||
private JSONObject base_json = null;
|
||||
|
||||
public JSONBased(JSONObject o) {
|
||||
base_json = o;
|
||||
protected Member[] allowedmembers = {};
|
||||
|
||||
public JSONBased(JSONObject json) {
|
||||
base_json = json;
|
||||
}
|
||||
|
||||
public boolean has(Member mem) {
|
||||
if(base_json == null)
|
||||
return false;
|
||||
if(!isAllowd(mem))
|
||||
throw new UnallowedMemberException(mem, this);
|
||||
return base_json.has(mem.name());
|
||||
}
|
||||
|
||||
|
@ -22,6 +25,15 @@ public class JSONBased {
|
|||
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 {
|
||||
|
||||
// ===== MESSAGE ====
|
||||
|
@ -63,8 +75,29 @@ public class JSONBased {
|
|||
//==== AUDIO ======
|
||||
performer, //String
|
||||
title,//String
|
||||
mime_type, // String
|
||||
file_size; // int
|
||||
mime_type, // String - also used for Documents, PhotoSize & video
|
||||
file_size, // int - also used for Documents, File & video
|
||||
//===== 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;
|
||||
|
|
@ -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;
|
||||
|
||||
|
@ -31,6 +31,7 @@ public class TMessage extends JSONBased {
|
|||
|
||||
if(json.has("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() {
|
|
@ -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 {
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package objects;
|
||||
package de.mrbesen.telegram.objects;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.net.URLEncoder;
|
||||
|
@ -68,25 +68,19 @@ public class TUser {
|
|||
}
|
||||
|
||||
public void sendMessage(String text) {
|
||||
if(api == 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();
|
||||
}
|
||||
sendMessage(text, null);
|
||||
}
|
||||
|
||||
public void sendMessage(String text, TReplyMarkup rm) {
|
||||
if(api == null) {
|
||||
System.err.println("api == null!");
|
||||
return;
|
||||
}
|
||||
try {
|
||||
String reply= (rm == null ? "" : "&reply_markup=" + URLEncoder.encode(rm.toJSONString(), "UTF-8"));
|
||||
api.request("sendMessage", "chat_id=" + id
|
||||
+ "&text=" + URLEncoder.encode(text, "UTF-8")
|
||||
+ "&reply_markup=" + URLEncoder.encode(rm.toJSONString(), "UTF-8") );
|
||||
+ reply );
|
||||
} catch (IOException e) {
|
||||
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.EventListener;
|
||||
import de.mrbesen.telegram.event.events.UserSendMessageEvent;
|
||||
import objects.TInlineKeyboardMarkup;
|
||||
import objects.TUser;
|
||||
import objects.TUser.Status;
|
||||
import de.mrbesen.telegram.objects.TInlineKeyboardMarkup;
|
||||
import de.mrbesen.telegram.objects.TUser;
|
||||
import de.mrbesen.telegram.objects.TUser.Status;
|
||||
|
||||
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