use of com.fanap.podchat.networking.api.MapApi in project pod-chat-android-sdk by FanapSoft.
the class ChatCore method mainMapStaticImage.
/**
* [Required] center
* if these params don't set they have default values :
* [default value] messageType = "standard-night"
* [default value] zoom = 15
* [default value] width = 800
* [default value] height = 500
*/
private String mainMapStaticImage(RequestLocationMessage request, Activity activity, String uniqueId, boolean isMessage) {
try {
if (Util.isNullOrEmpty(uniqueId)) {
uniqueId = generateUniqueId();
}
if (needReadStoragePermission(activity))
return uniqueId;
if (chatReady) {
String type = request.getType();
int zoom = request.getZoom();
int width = request.getWidth();
int height = request.getHeight();
String center = request.getCenter();
long threadId = request.getThreadId();
int messageType = request.getMessageType();
String systemMetadata = request.getSystemMetadata();
if (Util.isNullOrEmpty(type)) {
type = "standard-night";
}
if (Util.isNullOrEmpty(zoom)) {
zoom = 15;
}
if (Util.isNullOrEmpty(width)) {
width = 800;
}
if (Util.isNullOrEmpty(height)) {
height = 500;
}
JsonObject jsonObject = (JsonObject) gson.toJsonTree(request);
jsonObject.addProperty("uniqueId", uniqueId);
showLog("SEND_GET_MAP_STATIC", getJsonForLog(jsonObject));
RetrofitHelperMap retrofitHelperMap = new RetrofitHelperMap("https://api.neshan.org/");
MapApi mapApi = retrofitHelperMap.getService(MapApi.class);
Call<ResponseBody> call = mapApi.mapStaticCall(API_KEY_MAP, type, zoom, center, width, height);
String finalUniqueId = uniqueId;
String finalUniqueId1 = uniqueId;
call.enqueue(new retrofit2.Callback<ResponseBody>() {
@Override
public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
if (response.isSuccessful()) {
if (response.body() != null) {
Bitmap bitmap = BitmapFactory.decodeStream(response.body().byteStream());
ChatResponse<ResultStaticMapImage> chatResponse = new ChatResponse<>();
ResultStaticMapImage result = new ResultStaticMapImage();
result.setBitmap(bitmap);
chatResponse.setUniqueId(finalUniqueId);
chatResponse.setResult(result);
listenerManager.callOnStaticMap(chatResponse);
showLog("RECEIVE_MAP_STATIC", "[]");
if (!call.isCanceled()) {
call.cancel();
}
if (isMessage) {
File file = null;
try {
file = FileUtils.saveBitmap(bitmap, "map");
} catch (Exception e) {
captureError(ChatConstant.ERROR_WRITING_FILE, ChatConstant.ERROR_CODE_WRITING_FILE, finalUniqueId1);
}
if (file == null) {
captureError(ChatConstant.ERROR_WRITING_FILE, ChatConstant.ERROR_CODE_WRITING_FILE, finalUniqueId1);
return;
}
Uri fileUri = Uri.fromFile(file);
// String newPath = FilePick.getSmartFilePath(getContext(), fileUri);
String mimType = handleMimType(fileUri, file);
LFileUpload lFileUpload = new LFileUpload();
lFileUpload.setFileUri(fileUri);
if (activity != null) {
lFileUpload.setActivity(activity);
}
lFileUpload.setThreadId(threadId);
lFileUpload.setUniqueId(finalUniqueId);
lFileUpload.setMessageType(messageType);
lFileUpload.setMimeType(mimType);
lFileUpload.setMethodName(ChatConstant.METHOD_LOCATION_MSG);
lFileUpload.setSystemMetaData(systemMetadata);
lFileUpload.setCenter(center);
uploadImageFileMessage(lFileUpload);
}
}
} else {
captureError(ChatConstant.ERROR_CALL_NESHAN_API, ChatConstant.ERROR_CODE_CALL_NESHAN_API, finalUniqueId);
showErrorLog(response.message());
}
}
@Override
public void onFailure(Call<ResponseBody> call, Throwable t) {
captureError(t.getMessage(), ChatConstant.ERROR_CODE_UNKNOWN_EXCEPTION, finalUniqueId, t);
}
});
} else {
captureError(ChatConstant.ERROR_CHAT_READY, ChatConstant.ERROR_CODE_CHAT_READY, uniqueId);
}
} catch (Throwable throwable) {
captureError(throwable.getMessage(), ChatConstant.ERROR_CODE_UNKNOWN_EXCEPTION, uniqueId, throwable);
}
return uniqueId;
}
use of com.fanap.podchat.networking.api.MapApi in project pod-chat-android-sdk by FanapSoft.
the class ChatCore method mainMapStaticImage.
private String mainMapStaticImage(RequestLocationMessage request, Activity activity, String uniqueId, boolean isMessage, ProgressHandler.sendFileMessage handler) {
try {
if (Util.isNullOrEmpty(uniqueId)) {
uniqueId = generateUniqueId();
}
if (needReadStoragePermission(activity))
return uniqueId;
if (chatReady) {
JsonObject jsonLog = new JsonObject();
String type = request.getType();
int zoom = request.getZoom();
int width = request.getWidth();
int height = request.getHeight();
String center = request.getCenter();
long threadId = request.getThreadId();
int messageType = request.getMessageType() > 0 ? request.getMessageType() : TextMessageType.Constants.POD_SPACE_PICTURE;
String systemMetadata = request.getSystemMetadata();
if (Util.isNullOrEmpty(type)) {
type = "standard-night";
}
if (Util.isNullOrEmpty(zoom)) {
zoom = 15;
}
if (Util.isNullOrEmpty(width)) {
width = 800;
}
if (Util.isNullOrEmpty(height)) {
height = 500;
}
RetrofitHelperMap retrofitHelperMap = new RetrofitHelperMap("https://api.neshan.org/");
MapApi mapApi = retrofitHelperMap.getService(MapApi.class);
Call<ResponseBody> call = mapApi.mapStaticCall(API_KEY_MAP, type, zoom, center, width, height);
String finalUniqueId = uniqueId;
jsonLog.addProperty("type", type);
jsonLog.addProperty("zoom", zoom);
jsonLog.addProperty("width", width);
jsonLog.addProperty("height", height);
jsonLog.addProperty("center", center);
jsonLog.addProperty("threadId", threadId);
jsonLog.addProperty("messageType", messageType);
jsonLog.addProperty("systemMetadata", systemMetadata);
jsonLog.addProperty("uniqueId", uniqueId);
showLog("SEND_LOCATION_MESSAGE", getJsonForLog(jsonLog));
call.enqueue(new retrofit2.Callback<ResponseBody>() {
@Override
public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
if (response.isSuccessful()) {
if (response.body() != null) {
Bitmap bitmap = BitmapFactory.decodeStream(response.body().byteStream());
ChatResponse<ResultStaticMapImage> chatResponse = new ChatResponse<>();
ResultStaticMapImage result = new ResultStaticMapImage();
result.setBitmap(bitmap);
chatResponse.setUniqueId(finalUniqueId);
chatResponse.setResult(result);
listenerManager.callOnStaticMap(chatResponse);
showLog("RECEIVE_MAP_STATIC");
if (!call.isCanceled()) {
call.cancel();
}
if (isMessage) {
File file = null;
try {
file = FileUtils.saveBitmap(bitmap, "map");
} catch (Exception e) {
captureError(ChatConstant.ERROR_WRITING_FILE, ChatConstant.ERROR_CODE_WRITING_FILE, finalUniqueId, e);
}
if (file == null) {
captureError(ChatConstant.ERROR_WRITING_FILE, ChatConstant.ERROR_CODE_WRITING_FILE, finalUniqueId);
return;
}
Uri fileUri = Uri.fromFile(file);
if (!chatReady) {
onChatNotReady(finalUniqueId);
return;
}
if (getPodSpaceServer() == null) {
captureError("PodSpace server is null", 0, finalUniqueId);
return;
}
removeFromUploadQueue(finalUniqueId);
try {
Subscription subscription = PodUploader.uploadToPodSpace(finalUniqueId, fileUri, request.getUserGroupHash(), context, getPodSpaceServer(), getToken(), TOKEN_ISSUER, new PodUploader.IPodUploadFileToPodSpace() {
@Override
public void onSuccess(UploadToPodSpaceResult response, File file, String mimeType, long length, int actualWidth, int actualHeight, int width, int height) {
removeFromUploadQueue(finalUniqueId);
ChatResponse<ResultImageFile> chatResponse = PodUploader.generateImageUploadResultForSendMessage(response, finalUniqueId, actualWidth, actualHeight, width, height, getPodSpaceImageUrl(response.getHashCode()));
String imageJson = gson.toJson(chatResponse);
listenerManager.callOnUploadImageFile(imageJson, chatResponse);
if (handler != null) {
handler.onFinishImage(imageJson, chatResponse);
}
showLog("RECEIVE_UPLOAD_IMAGE", imageJson);
String jsonMeta = createImageMetadata(file, response.getHashCode(), 0, height, width, mimeType, length, response.getParentHash(), false, null);
sendTextMessageWithFile(request.getMessage(), threadId, jsonMeta, systemMetadata, finalUniqueId, typeCode, messageType);
}
@Override
public void onFailure(String cause, Throwable t) {
String jsonError = captureError(cause, ChatConstant.ERROR_CODE_UPLOAD_FILE, finalUniqueId, t);
ErrorOutPut error = new ErrorOutPut(true, ChatConstant.ERROR_INVALID_FILE_URI, ChatConstant.ERROR_CODE_INVALID_FILE_URI, finalUniqueId);
if (handler != null) {
handler.onError(jsonError, error);
}
}
@Override
public void onUploadStarted(String mimeType, File file, long length) {
addToUploadQueue(request.getMessage(), fileUri, messageType, threadId, request.getUserGroupHash(), finalUniqueId, systemMetadata, request.getMessageId(), mimeType, request.getCenter(), ChatConstant.METHOD_LOCATION_MSG, file, length);
showLog("UPLOAD_FILE_TO_SERVER");
}
@Override
public void onProgressUpdate(int progress, int totalBytesSent, int totalBytesToSend) {
if (handler != null)
handler.onProgressUpdate(finalUniqueId, progress, totalBytesSent, totalBytesToSend);
}
});
initCancelUpload(finalUniqueId, subscription);
} catch (Exception e) {
String jsonError = captureError(ChatConstant.ERROR_INVALID_FILE_URI, ChatConstant.ERROR_CODE_INVALID_FILE_URI, finalUniqueId, e);
ErrorOutPut error = new ErrorOutPut(true, ChatConstant.ERROR_INVALID_FILE_URI, ChatConstant.ERROR_CODE_INVALID_FILE_URI, finalUniqueId);
if (handler != null) {
handler.onError(jsonError, error);
}
}
}
}
} else {
captureError(ChatConstant.ERROR_CALL_NESHAN_API, ChatConstant.ERROR_CODE_CALL_NESHAN_API, finalUniqueId);
showErrorLog(response.message());
}
}
@Override
public void onFailure(Call<ResponseBody> call, Throwable t) {
captureError(t.getMessage(), ChatConstant.ERROR_CODE_UNKNOWN_EXCEPTION, finalUniqueId, t);
}
});
} else {
captureError(ChatConstant.ERROR_CHAT_READY, ChatConstant.ERROR_CODE_CHAT_READY, uniqueId);
}
} catch (Throwable throwable) {
showErrorLog(throwable.getMessage());
onUnknownException(uniqueId, throwable);
}
return uniqueId;
}
use of com.fanap.podchat.networking.api.MapApi in project pod-chat-android-sdk by FanapSoft.
the class ChatCore method mapRouting.
public String mapRouting(RequestMapRouting request) {
String origin = request.getOrigin();
String destination = request.getDestination();
String uniqueId;
RetrofitHelperMap retrofitHelperMap = new RetrofitHelperMap("https://api.neshan.org/");
MapApi mapApi = retrofitHelperMap.getService(MapApi.class);
uniqueId = generateUniqueId();
Observable<Response<MapRout>> responseObservable = mapApi.mapRouting("8b77db18704aa646ee5aaea13e7370f4f88b9e8c", origin, destination, true);
String finalUniqueId = uniqueId;
responseObservable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(mapRoutResponse -> {
if (mapRoutResponse.isSuccessful()) {
MapRout mapRout = mapRoutResponse.body();
OutPutMapRout outPutMapRout = new OutPutMapRout();
outPutMapRout.setResult(mapRout);
String jsonMapRout = gson.toJson(outPutMapRout);
listenerManager.callOnMapRouting(jsonMapRout);
showLog("RECEIVE_MAP_ROUTING", jsonMapRout);
} else {
captureError(mapRoutResponse.message(), mapRoutResponse.code(), finalUniqueId);
}
}, (Throwable throwable) -> captureError(throwable.getMessage(), ChatConstant.ERROR_CODE_UNKNOWN_EXCEPTION, finalUniqueId, throwable));
return uniqueId;
}
use of com.fanap.podchat.networking.api.MapApi in project pod-chat-android-sdk by FanapSoft.
the class ChatCore method mapRouting.
public String mapRouting(String origin, String destination) {
String uniqueId = generateUniqueId();
if (chatReady) {
RetrofitHelperMap retrofitHelperMap = new RetrofitHelperMap("https://api.neshan.org/");
MapApi mapApi = retrofitHelperMap.getService(MapApi.class);
Observable<Response<MapRout>> responseObservable = mapApi.mapRouting("8b77db18704aa646ee5aaea13e7370f4f88b9e8c", origin, destination, true);
responseObservable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(mapRoutResponse -> {
if (mapRoutResponse.isSuccessful()) {
MapRout mapRout = mapRoutResponse.body();
OutPutMapRout outPutMapRout = new OutPutMapRout();
outPutMapRout.setResult(mapRout);
String jsonMapRout = gson.toJson(outPutMapRout);
listenerManager.callOnMapRouting(jsonMapRout);
showLog("RECEIVE_MAP_ROUTING", jsonMapRout);
}
}, (Throwable throwable) -> captureError(ChatConstant.ERROR_CHAT_READY, ChatConstant.ERROR_CODE_CHAT_READY, uniqueId, throwable));
} else {
captureError(ChatConstant.ERROR_CHAT_READY, ChatConstant.ERROR_CODE_CHAT_READY, uniqueId);
}
return uniqueId;
}
use of com.fanap.podchat.networking.api.MapApi in project pod-chat-android-sdk by FanapSoft.
the class ChatCore method mapReverse.
public String mapReverse(RequestMapReverse request) {
String uniqueId = null;
if (chatReady) {
double lat = request.getLat();
double lng = request.getLng();
uniqueId = generateUniqueId();
RetrofitHelperMap retrofitHelperMap = new RetrofitHelperMap("https://api.neshan.org/");
MapApi mapApi = retrofitHelperMap.getService(MapApi.class);
Observable<Response<MapReverse>> observable = mapApi.mapReverse(API_KEY_MAP, lat, lng);
String finalUniqueId = uniqueId;
observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(mapReverseResponse -> {
if (mapReverseResponse.isSuccessful()) {
MapReverse mapReverse = mapReverseResponse.body();
if (mapReverse == null) {
captureError(ChatConstant.ERROR_UNKNOWN_EXCEPTION, ChatConstant.ERROR_CODE_UNKNOWN_EXCEPTION, finalUniqueId);
return;
}
ChatResponse<ResultMapReverse> chatResponse = new ChatResponse<>();
ResultMapReverse resultMap = new ResultMapReverse();
String address = mapReverse.getAddress();
if (!Util.isNullOrEmpty(address)) {
resultMap.setAddress(address);
}
resultMap.setCity(mapReverse.getCity());
resultMap.setIn_odd_even_zone(mapReverse.isIn_odd_even_zone());
resultMap.setIn_traffic_zone(mapReverse.isIn_traffic_zone());
resultMap.setMunicipality_zone(mapReverse.getMunicipality_zone());
resultMap.setNeighbourhood(mapReverse.getNeighbourhood());
resultMap.setState(mapReverse.getState());
chatResponse.setUniqueId(finalUniqueId);
chatResponse.setResult(resultMap);
String json = gson.toJson(chatResponse);
listenerManager.callOnMapReverse(json, chatResponse);
showLog("RECEIVE_MAP_REVERSE", json);
} else {
try {
String errorBody;
if (mapReverseResponse.errorBody() != null) {
errorBody = mapReverseResponse.errorBody().string();
JSONObject jObjError = new JSONObject(errorBody);
String errorMessage = jObjError.getString("message");
int errorCode = jObjError.getInt("code");
captureError(errorMessage, errorCode, finalUniqueId);
}
} catch (JSONException e) {
captureError(e.getMessage(), ChatConstant.ERROR_CODE_UNKNOWN_EXCEPTION, finalUniqueId, e);
} catch (IOException e) {
captureError(e.getMessage(), ChatConstant.ERROR_CODE_UNKNOWN_EXCEPTION, finalUniqueId, e);
}
}
}, (Throwable throwable) -> captureError(throwable.getMessage(), ChatConstant.ERROR_CODE_UNKNOWN_EXCEPTION, finalUniqueId, throwable));
}
return uniqueId;
}
Aggregations