use of im.actor.core.api.ApiJsonMessage in project actor-platform by actorapp.
the class AbsContent method convertData.
protected static AbsContent convertData(AbsContentContainer container) {
if (container instanceof ContentLocalContainer) {
ContentLocalContainer localContainer = (ContentLocalContainer) container;
AbsLocalContent content = ((ContentLocalContainer) container).getContent();
if (content instanceof LocalPhoto) {
return new PhotoContent(localContainer);
} else if (content instanceof LocalVideo) {
return new VideoContent(localContainer);
} else if (content instanceof LocalVoice) {
return new VoiceContent(localContainer);
} else if (content instanceof LocalAnimation) {
return new AnimationContent(localContainer);
} else if (content instanceof LocalDocument) {
return new DocumentContent(localContainer);
} else {
throw new RuntimeException("Unknown type");
}
} else if (container instanceof ContentRemoteContainer) {
ContentRemoteContainer remoteContainer = (ContentRemoteContainer) container;
ApiMessage content = ((ContentRemoteContainer) container).getMessage();
try {
if (content instanceof ApiDocumentMessage) {
ApiDocumentMessage d = (ApiDocumentMessage) content;
if (d.getExt() instanceof ApiDocumentExPhoto) {
return new PhotoContent(remoteContainer);
} else if (d.getExt() instanceof ApiDocumentExVideo) {
return new VideoContent(remoteContainer);
} else if (d.getExt() instanceof ApiDocumentExVoice) {
return new VoiceContent(remoteContainer);
} else if (d.getExt() instanceof ApiDocumentExAnimation) {
return new AnimationContent(remoteContainer);
} else {
return new DocumentContent(remoteContainer);
}
} else if (content instanceof ApiTextMessage) {
return new TextContent(remoteContainer);
} else if (content instanceof ApiServiceMessage) {
ApiServiceEx ext = ((ApiServiceMessage) content).getExt();
if (ext instanceof ApiServiceExContactRegistered) {
return new ServiceUserRegistered(remoteContainer);
} else if (ext instanceof ApiServiceExChangedTitle) {
return new ServiceGroupTitleChanged(remoteContainer);
} else if (ext instanceof ApiServiceExChangedTopic) {
return new ServiceGroupTopicChanged(remoteContainer);
} else if (ext instanceof ApiServiceExChangedAbout) {
return new ServiceGroupAboutChanged(remoteContainer);
} else if (ext instanceof ApiServiceExChangedAvatar) {
return new ServiceGroupAvatarChanged(remoteContainer);
} else if (ext instanceof ApiServiceExGroupCreated) {
return new ServiceGroupCreated(remoteContainer);
} else if (ext instanceof ApiServiceExUserInvited) {
return new ServiceGroupUserInvited(remoteContainer);
} else if (ext instanceof ApiServiceExUserKicked) {
return new ServiceGroupUserKicked(remoteContainer);
} else if (ext instanceof ApiServiceExUserLeft) {
return new ServiceGroupUserLeave(remoteContainer);
} else if (ext instanceof ApiServiceExUserJoined) {
return new ServiceGroupUserJoined(remoteContainer);
} else if (ext instanceof ApiServiceExPhoneCall) {
return new ServiceCallEnded(remoteContainer);
} else if (ext instanceof ApiServiceExPhoneMissed) {
return new ServiceCallMissed(remoteContainer);
} else {
return new ServiceContent(remoteContainer);
}
} else if (content instanceof ApiJsonMessage) {
ApiJsonMessage json = (ApiJsonMessage) content;
JSONObject object = new JSONObject(json.getRawJson());
if (object.getString("dataType").equals("contact")) {
return new ContactContent(remoteContainer);
} else if (object.getString("dataType").equals("location")) {
return new LocationContent(remoteContainer);
} else {
return new JsonContent(remoteContainer);
}
} else if (content instanceof ApiStickerMessage) {
return new StickerContent(remoteContainer);
}
} catch (Exception e) {
e.printStackTrace();
}
// Fallback
return new UnsupportedContent(remoteContainer);
} else {
throw new RuntimeException("Unknown type");
}
}
use of im.actor.core.api.ApiJsonMessage in project actor-platform by actorapp.
the class ContactContent method create.
@NotNull
public static ContactContent create(@NotNull String name, @NotNull ArrayList<String> phones, @NotNull ArrayList<String> emails, @Nullable String base64photo) {
try {
JSONObject obj = new JSONObject();
obj.put("dataType", "contact");
JSONObject contact = new JSONObject();
contact.put("name", name);
if (base64photo != null) {
contact.put("photo", base64photo);
}
JSONArray phoneArray = new JSONArray();
for (String phone : phones) {
phoneArray.put(phone);
}
JSONArray emailArray = new JSONArray();
for (String phone : emails) {
emailArray.put(phone);
}
contact.put("emails", emailArray);
contact.put("phones", phoneArray);
JSONObject data = new JSONObject();
data.put("contact", contact);
obj.put("data", data);
return new ContactContent(new ContentRemoteContainer(new ApiJsonMessage(obj.toString())));
} catch (JSONException e) {
throw new RuntimeException(e);
}
}
use of im.actor.core.api.ApiJsonMessage in project actor-platform by actorapp.
the class SenderActor method performSendContent.
// Sending content
private void performSendContent(final Peer peer, final long rid, AbsContent content) {
WakeLock wakeLock = im.actor.runtime.Runtime.makeWakeLock();
ApiMessage message;
if (content instanceof TextContent) {
message = new ApiTextMessage(((TextContent) content).getText(), ((TextContent) content).getMentions(), ((TextContent) content).getTextMessageEx());
} else if (content instanceof DocumentContent) {
DocumentContent documentContent = (DocumentContent) content;
FileRemoteSource source = (FileRemoteSource) documentContent.getSource();
ApiDocumentEx documentEx = null;
if (content instanceof PhotoContent) {
PhotoContent photoContent = (PhotoContent) content;
documentEx = new ApiDocumentExPhoto(photoContent.getW(), photoContent.getH());
} else if (content instanceof VideoContent) {
VideoContent videoContent = (VideoContent) content;
documentEx = new ApiDocumentExVideo(videoContent.getW(), videoContent.getH(), videoContent.getDuration());
} else if (content instanceof AnimationContent) {
AnimationContent animationContent = (AnimationContent) content;
documentEx = new ApiDocumentExAnimation(animationContent.getW(), animationContent.getH());
} else if (content instanceof VoiceContent) {
VoiceContent voiceContent = (VoiceContent) content;
documentEx = new ApiDocumentExVoice(voiceContent.getDuration());
}
ApiFastThumb fastThumb = null;
if (documentContent.getFastThumb() != null) {
fastThumb = new ApiFastThumb(documentContent.getFastThumb().getW(), documentContent.getFastThumb().getH(), documentContent.getFastThumb().getImage());
}
message = new ApiDocumentMessage(source.getFileReference().getFileId(), source.getFileReference().getAccessHash(), source.getFileReference().getFileSize(), source.getFileReference().getFileName(), documentContent.getMimeType(), fastThumb, documentEx);
} else if (content instanceof LocationContent) {
message = new ApiJsonMessage(((LocationContent) content).getRawJson());
} else if (content instanceof ContactContent) {
message = new ApiJsonMessage(((ContactContent) content).getRawJson());
} else if (content instanceof JsonContent) {
message = new ApiJsonMessage(((JsonContent) content).getRawJson());
} else if (content instanceof StickerContent) {
message = ((ContentRemoteContainer) content.getContentContainer()).getMessage();
} else {
return;
}
performSendApiContent(peer, rid, message, wakeLock);
}
use of im.actor.core.api.ApiJsonMessage in project actor-platform by actorapp.
the class LocationContent method create.
@NotNull
public static LocationContent create(double longitude, double latitude, @Nullable String street, @Nullable String place) {
try {
JSONObject obj = new JSONObject();
obj.put("dataType", "location");
JSONObject location = new JSONObject();
location.put("latitude", latitude);
location.put("longitude", longitude);
if (street != null) {
location.put("street", street);
}
if (place != null) {
location.put("place", place);
}
JSONObject data = new JSONObject();
data.put("location", location);
obj.put("data", data);
return new LocationContent(new ContentRemoteContainer(new ApiJsonMessage(obj.toString())));
} catch (Exception e) {
throw new RuntimeException(e);
}
}
Aggregations