moved objcts folder, added some TObjects, improved JSONBased

This commit is contained in:
mrbesen 2018-07-18 14:30:48 +02:00
parent bd33ef8499
commit df564169ee
21 changed files with 239 additions and 47 deletions

View File

@ -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;

View File

@ -1,6 +1,6 @@
package de.mrbesen.telegram.commands;
import objects.TUser;
import de.mrbesen.telegram.objects.TUser;
public interface CommandHandler {

View File

@ -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 {

View File

@ -1,6 +1,6 @@
package de.mrbesen.telegram.event;
import objects.TUser;
import de.mrbesen.telegram.objects.TUser;
public class Event {

View File

@ -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 {

View File

@ -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 {

View File

@ -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());
}
}
}

View File

@ -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;
}
}

View File

@ -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;
}
}

View File

@ -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};
}
}

View File

@ -1,4 +1,4 @@
package objects;
package de.mrbesen.telegram.objects;
import java.util.ArrayList;

View File

@ -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;
}
}

View File

@ -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() {

View File

@ -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;
}
}

View File

@ -1,4 +1,4 @@
package objects;
package de.mrbesen.telegram.objects;
public interface TReplyMarkup {

View File

@ -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();
}

View File

@ -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();
}
}

View File

@ -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;
}
}

View File

@ -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;
}
}

View File

@ -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 {

View File

@ -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);
}
}