commit
6586411754
4 changed files with 67 additions and 24 deletions
|
@ -6,7 +6,11 @@ import android.content.Context;
|
|||
import android.content.DialogInterface;
|
||||
import android.content.Intent;
|
||||
import android.content.res.ColorStateList;
|
||||
import android.graphics.*;
|
||||
import android.graphics.Bitmap;
|
||||
import android.graphics.BitmapFactory;
|
||||
import android.graphics.Color;
|
||||
import android.graphics.PorterDuff;
|
||||
import android.graphics.Typeface;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.graphics.drawable.GradientDrawable;
|
||||
import android.net.Uri;
|
||||
|
@ -24,12 +28,14 @@ import android.widget.ImageView;
|
|||
import android.widget.LinearLayout;
|
||||
import android.widget.TextView;
|
||||
import android.widget.Toast;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.appcompat.app.AlertDialog;
|
||||
import androidx.appcompat.view.ContextThemeWrapper;
|
||||
import androidx.core.content.ContextCompat;
|
||||
import androidx.core.graphics.drawable.DrawableCompat;
|
||||
|
||||
import net.osmand.AndroidUtils;
|
||||
import net.osmand.PlatformUtil;
|
||||
import net.osmand.data.Amenity;
|
||||
|
@ -37,7 +43,11 @@ import net.osmand.data.LatLon;
|
|||
import net.osmand.data.PointDescription;
|
||||
import net.osmand.data.QuadRect;
|
||||
import net.osmand.osm.io.NetworkUtils;
|
||||
import net.osmand.plus.*;
|
||||
import net.osmand.plus.OsmAndFormatter;
|
||||
import net.osmand.plus.OsmandApplication;
|
||||
import net.osmand.plus.OsmandPlugin;
|
||||
import net.osmand.plus.R;
|
||||
import net.osmand.plus.UiUtilities;
|
||||
import net.osmand.plus.activities.ActivityResultListener;
|
||||
import net.osmand.plus.activities.MapActivity;
|
||||
import net.osmand.plus.helpers.FontCache;
|
||||
|
@ -60,6 +70,7 @@ import net.osmand.plus.widgets.TextViewEx;
|
|||
import net.osmand.plus.widgets.tools.ClickableSpanTouchListener;
|
||||
import net.osmand.util.Algorithms;
|
||||
import net.osmand.util.MapUtils;
|
||||
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.openplacereviews.opendb.util.exception.FailedVerificationException;
|
||||
|
||||
|
@ -67,7 +78,13 @@ import java.io.BufferedInputStream;
|
|||
import java.io.ByteArrayInputStream;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.InputStream;
|
||||
import java.util.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import static net.osmand.plus.mapcontextmenu.builders.cards.ImageCard.GetImageCardsTask.GetImageCardsListener;
|
||||
|
||||
|
@ -383,8 +400,9 @@ public class MenuBuilder {
|
|||
AddPhotosBottomSheetDialogFragment.showInstance(mapActivity.getSupportFragmentManager());
|
||||
} else {
|
||||
registerResultListener(view);
|
||||
final String privateKey = OPRWebviewActivity.getPrivateKeyFromCookie();
|
||||
final String name = OPRWebviewActivity.getUsernameFromCookie();
|
||||
final String baseUrl = OPRWebviewActivity.getBaseUrl(app);
|
||||
final String name = OPRWebviewActivity.getUsernameFromCookie(app);
|
||||
final String privateKey = OPRWebviewActivity.getPrivateKeyFromCookie(app);
|
||||
if (privateKey == null || privateKey.isEmpty()) {
|
||||
OprStartFragment.showInstance(mapActivity.getSupportFragmentManager());
|
||||
return;
|
||||
|
@ -392,7 +410,7 @@ public class MenuBuilder {
|
|||
new Thread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (openDBAPI.checkPrivateKeyValid(name, privateKey)) {
|
||||
if (openDBAPI.checkPrivateKeyValid(baseUrl, name, privateKey)) {
|
||||
app.runInUIThread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
|
@ -458,15 +476,17 @@ public class MenuBuilder {
|
|||
|
||||
private void uploadImageToPlace(View view, InputStream image) {
|
||||
InputStream serverData = new ByteArrayInputStream(compressImage(image));
|
||||
String url = BuildConfig.OPR_BASE_URL + "api/ipfs/image";
|
||||
final String baseUrl = OPRWebviewActivity.getBaseUrl(app);
|
||||
String url = baseUrl + "api/ipfs/image";
|
||||
String response = NetworkUtils.sendPostDataRequest(url, serverData);
|
||||
if (response != null) {
|
||||
int res = 0;
|
||||
try {
|
||||
res = openDBAPI.uploadImage(
|
||||
placeId,
|
||||
OPRWebviewActivity.getPrivateKeyFromCookie(),
|
||||
OPRWebviewActivity.getUsernameFromCookie(),
|
||||
baseUrl,
|
||||
OPRWebviewActivity.getPrivateKeyFromCookie(app),
|
||||
OPRWebviewActivity.getUsernameFromCookie(app),
|
||||
response);
|
||||
} catch (FailedVerificationException e) {
|
||||
LOG.error(e);
|
||||
|
|
|
@ -21,7 +21,6 @@ import net.osmand.Location;
|
|||
import net.osmand.PlatformUtil;
|
||||
import net.osmand.data.Amenity;
|
||||
import net.osmand.data.LatLon;
|
||||
import net.osmand.plus.BuildConfig;
|
||||
import net.osmand.plus.OsmandApplication;
|
||||
import net.osmand.plus.R;
|
||||
import net.osmand.plus.Version;
|
||||
|
@ -29,6 +28,7 @@ import net.osmand.plus.activities.MapActivity;
|
|||
import net.osmand.plus.mapcontextmenu.MenuBuilder;
|
||||
import net.osmand.plus.mapillary.MapillaryContributeCard;
|
||||
import net.osmand.plus.mapillary.MapillaryImageCard;
|
||||
import net.osmand.plus.openplacereviews.OPRWebviewActivity;
|
||||
import net.osmand.plus.wikimedia.WikiImageHelper;
|
||||
import net.osmand.util.Algorithms;
|
||||
|
||||
|
@ -40,7 +40,14 @@ import org.json.JSONObject;
|
|||
import java.text.DateFormat;
|
||||
import java.text.ParseException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Date;
|
||||
import java.util.Iterator;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
|
||||
public abstract class ImageCard extends AbstractCard {
|
||||
|
||||
|
@ -460,7 +467,8 @@ public abstract class ImageCard extends AbstractCard {
|
|||
if (o instanceof Amenity) {
|
||||
Amenity am = (Amenity) o;
|
||||
long amenityId = am.getId() >> 1;
|
||||
String url = BuildConfig.OPR_BASE_URL + "api/objects-by-index?type=opr.place&index=osmid&key=" + amenityId;
|
||||
String baseUrl = OPRWebviewActivity.getBaseUrl(app);
|
||||
String url = baseUrl + "api/objects-by-index?type=opr.place&index=osmid&key=" + amenityId;
|
||||
String response = AndroidNetworkUtils.sendRequest(app, url, Collections.<String, String>emptyMap(),
|
||||
"Requesting location images...", false, false);
|
||||
if (response != null) {
|
||||
|
|
|
@ -23,16 +23,20 @@ public class OPRWebviewActivity extends OsmandActionBarActivity {
|
|||
private WebView webView;
|
||||
private boolean isLogin = false;
|
||||
|
||||
public static String getBaseUrl(Context ctx) {
|
||||
return ctx.getString(R.string.opr_base_url);
|
||||
}
|
||||
|
||||
public static String getCookieUrl(Context ctx) {
|
||||
return ctx.getString(R.string.opr_base_url) + "profile";
|
||||
return getBaseUrl(ctx) + "profile";
|
||||
}
|
||||
|
||||
public static String getLoginUrl(Context ctx) {
|
||||
return ctx.getString(R.string.opr_base_url) + "login";
|
||||
return getBaseUrl(ctx) + "login";
|
||||
}
|
||||
|
||||
public static String getRegisterUrl(Context ctx) {
|
||||
return ctx.getString(R.string.opr_base_url) + "signup";
|
||||
return getBaseUrl(ctx) + "signup";
|
||||
}
|
||||
|
||||
public static String getFinishUrl(Context ctx) {
|
||||
|
|
|
@ -2,11 +2,12 @@ package net.osmand.plus.osmedit.opr;
|
|||
|
||||
import android.net.TrafficStats;
|
||||
import android.os.Build;
|
||||
|
||||
import com.google.gson.GsonBuilder;
|
||||
import net.osmand.AndroidNetworkUtils;
|
||||
|
||||
import net.osmand.PlatformUtil;
|
||||
import net.osmand.osm.io.NetworkUtils;
|
||||
import net.osmand.plus.BuildConfig;
|
||||
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.bouncycastle.jce.provider.BouncyCastleProvider;
|
||||
import org.openplacereviews.opendb.SecUtils;
|
||||
|
@ -14,15 +15,25 @@ import org.openplacereviews.opendb.ops.OpOperation;
|
|||
import org.openplacereviews.opendb.util.JsonFormatter;
|
||||
import org.openplacereviews.opendb.util.exception.FailedVerificationException;
|
||||
|
||||
import java.io.*;
|
||||
import java.io.BufferedReader;
|
||||
import java.io.DataOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStreamReader;
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.net.HttpURLConnection;
|
||||
import java.net.URL;
|
||||
import java.net.URLEncoder;
|
||||
import java.security.KeyPair;
|
||||
import java.security.Security;
|
||||
import java.util.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.TreeMap;
|
||||
|
||||
import static org.openplacereviews.opendb.SecUtils.*;
|
||||
import static org.openplacereviews.opendb.SecUtils.ALGO_EC;
|
||||
import static org.openplacereviews.opendb.SecUtils.JSON_MSG_TYPE;
|
||||
import static org.openplacereviews.opendb.SecUtils.signMessageWithKeyBase64;
|
||||
|
||||
|
||||
public class OpenDBAPI {
|
||||
|
@ -39,10 +50,10 @@ public class OpenDBAPI {
|
|||
* Need to encode key
|
||||
* Do not call on mainThread
|
||||
*/
|
||||
public boolean checkPrivateKeyValid(String username, String privateKey) {
|
||||
public boolean checkPrivateKeyValid(String baseUrl, String username, String privateKey) {
|
||||
String url = null;
|
||||
try {
|
||||
url = BuildConfig.OPR_BASE_URL + checkLoginEndpoint +
|
||||
url = baseUrl + checkLoginEndpoint +
|
||||
"name=" +
|
||||
username +
|
||||
"&" +
|
||||
|
@ -57,7 +68,7 @@ public class OpenDBAPI {
|
|||
response.toString().contains(LOGIN_SUCCESS_MESSAGE);
|
||||
}
|
||||
|
||||
public int uploadImage(String[] placeId, String privateKey, String username, String image) throws FailedVerificationException {
|
||||
public int uploadImage(String[] placeId, String baseUrl, String privateKey, String username, String image) throws FailedVerificationException {
|
||||
if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
|
||||
Security.removeProvider("BC");
|
||||
Security.addProvider(new BouncyCastleProvider());
|
||||
|
@ -100,7 +111,7 @@ public class OpenDBAPI {
|
|||
opOperation.addOrSetStringValue("hash", hash);
|
||||
opOperation.addOrSetStringValue("signature", signature);
|
||||
TrafficStats.setThreadStatsTag(THREAD_ID);
|
||||
String url = BuildConfig.OPR_BASE_URL + "api/auth/process-operation?addToQueue=true&dontSignByServer=false";
|
||||
String url = baseUrl + "api/auth/process-operation?addToQueue=true&dontSignByServer=false";
|
||||
String json = formatter.opToJson(opOperation);
|
||||
System.out.println("JSON: " + json);
|
||||
HttpURLConnection connection;
|
||||
|
|
Loading…
Reference in a new issue