update to pCloud SDK 1.2.0 and implement support for different dataHosts (depending on data server location). Closes #1257

This commit is contained in:
Philipp Crocoll
2021-01-08 06:35:49 +01:00
parent 9372cb7190
commit ddb58119be
9 changed files with 34 additions and 26 deletions

Binary file not shown.

Binary file not shown.

View File

@@ -55,7 +55,7 @@
<ItemGroup>
<None Include="Jars\AboutJars.txt" />
<None Include="Additions\AboutAdditions.txt" />
<LibraryProjectZip Include="Jars\pcloud-sdk-android-1.1.0.aar" />
<LibraryProjectZip Include="Jars\pcloud-sdk-android-1.2.0.aar" />
</ItemGroup>
<ItemGroup>
<TransformFile Include="Transforms\Metadata.xml" />
@@ -71,6 +71,6 @@
</Target>
-->
<ItemGroup>
<EmbeddedReferenceJar Include="Jars\pcloud-sdk-java-core-1.1.0.jar" />
<EmbeddedReferenceJar Include="Jars\pcloud-sdk-java-core-1.2.0.jar" />
</ItemGroup>
</Project>

View File

@@ -40,8 +40,8 @@ dependencies {
compile('com.onedrive.sdk:onedrive-sdk-android:1.2.0') {
transitive = false
}
compile 'com.pcloud.sdk:java-core:1.1.0'
compile 'com.pcloud.sdk:android:1.1.0'
compile 'com.pcloud.sdk:java-core:1.2.0'
compile 'com.pcloud.sdk:android:1.2.0'
compile 'com.google.code.gson:gson:2.3.1'
compile 'com.microsoft.services.msa:msa-auth:0.8.6'
compile 'com.microsoft.aad:adal:1.14.0'

View File

@@ -6,7 +6,6 @@
android:versionName="1.0">
<uses-sdk
android:minSdkVersion="14"
android:targetSdkVersion="14" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />

View File

@@ -21,6 +21,7 @@ import com.pcloud.sdk.ApiClient;
import com.pcloud.sdk.ApiError;
import com.pcloud.sdk.Authenticators;
import com.pcloud.sdk.AuthorizationActivity;
import com.pcloud.sdk.AuthorizationData;
import com.pcloud.sdk.AuthorizationResult;
import com.pcloud.sdk.Call;
import com.pcloud.sdk.DataSource;
@@ -40,6 +41,7 @@ public class PCloudFileStorage extends JavaFileStorageBase
final static private String SHARED_PREF_NAME = "PCLOUD";
final static private String SHARED_PREF_AUTH_TOKEN = "AUTH_TOKEN";
final static private String SHARED_PREF_API_HOST = "API_HOST";
private final Context ctx;
@@ -237,18 +239,18 @@ public class PCloudFileStorage extends JavaFileStorageBase
public void onActivityResult(FileStorageSetupActivity activity, int requestCode, int resultCode, Intent data) {
if (requestCode == PCLOUD_AUTHORIZATION_REQUEST_CODE && data != null) {
activity.getState().putBoolean("hasStartedAuth", false);
AuthorizationResult result = (AuthorizationResult)(
data.getSerializableExtra(AuthorizationActivity.KEY_AUTHORIZATION_RESULT)
);
this.handleAuthResult(activity, result, data);
AuthorizationData authData = AuthorizationActivity.getResult(data);
this.handleAuthResult(activity, authData);
}
}
private void handleAuthResult(FileStorageSetupActivity activity, AuthorizationResult authorizationResult,
Intent data) {
if (authorizationResult == AuthorizationResult.ACCESS_GRANTED) {
String authToken = data.getStringExtra(AuthorizationActivity.KEY_ACCESS_TOKEN);
setAuthToken(authToken);
private void handleAuthResult(FileStorageSetupActivity activity, AuthorizationData authorizationData) {
if (authorizationData.result == AuthorizationResult.ACCESS_GRANTED) {
String authToken = authorizationData.token;
String apiHost = authorizationData.apiHost;
setAuthToken(authToken, apiHost);
finishActivityWithSuccess(activity);
} else {
Activity castedActivity = (Activity)activity;
@@ -267,19 +269,20 @@ public class PCloudFileStorage extends JavaFileStorageBase
private ApiClient createApiClientFromSharedPrefs() {
SharedPreferences prefs = this.ctx.getSharedPreferences(SHARED_PREF_NAME, Context.MODE_PRIVATE);
String authToken = prefs.getString(SHARED_PREF_AUTH_TOKEN, null);
return this.createApiClient(authToken);
String apiHost = prefs.getString(SHARED_PREF_API_HOST, null);
return this.createApiClient(authToken, apiHost);
}
private ApiClient createApiClient(String authToken) {
if (authToken == null) {
private ApiClient createApiClient(String authToken, String apiHost) {
if (authToken == null || apiHost == null) {
return null;
}
ApiClient.Builder builder = PCloudSdk.newClientBuilder();
builder = builder.apiHost(apiHost);
return (
PCloudSdk.newClientBuilder()
.authenticator(Authenticators.newOAuthAuthenticator(authToken))
.create()
);
return builder
.authenticator(Authenticators.newOAuthAuthenticator(authToken))
.create();
}
private boolean isConnected() {
@@ -294,11 +297,12 @@ public class PCloudFileStorage extends JavaFileStorageBase
edit.apply();
}
private void setAuthToken(String authToken) {
this.apiClient = this.createApiClient(authToken);
private void setAuthToken(String authToken, String apiHost) {
this.apiClient = this.createApiClient(authToken, apiHost);
SharedPreferences prefs = this.ctx.getSharedPreferences(SHARED_PREF_NAME, Context.MODE_PRIVATE);
SharedPreferences.Editor edit = prefs.edit();
edit.putString(SHARED_PREF_AUTH_TOKEN, authToken);
edit.putString(SHARED_PREF_API_HOST, apiHost);
edit.apply();
}

View File

@@ -147,12 +147,14 @@ import java.util.List;
//import keepass2android.javafilestorage.DropboxCloudRailStorage;
import keepass2android.javafilestorage.JavaFileStorage;
import keepass2android.javafilestorage.JavaFileStorage.FileEntry;
import keepass2android.javafilestorage.PCloudFileStorage;
import keepass2android.javafilestorage.SftpStorage;
import keepass2android.javafilestorage.UserInteractionRequiredException;
import keepass2android.javafilestorage.WebDavStorage;
import keepass2android.kp2afilechooser.StorageFileProvider;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Build;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.app.Activity;
@@ -160,6 +162,7 @@ import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.support.annotation.RequiresApi;
import android.util.Log;
import android.view.Menu;
import android.view.View;
@@ -471,7 +474,8 @@ public class MainActivity extends Activity implements JavaFileStorage.FileStorag
findViewById(R.id.button_test_preparefileusage).setOnClickListener(new OnClickListener() {
public void onClick(View v) {
@RequiresApi(api = Build.VERSION_CODES.CUPCAKE)
public void onClick(View v) {
final String path = PreferenceManager.getDefaultSharedPreferences(MainActivity.this).getString("selectedPath", "");
if (path.equals(""))
@@ -534,7 +538,8 @@ public class MainActivity extends Activity implements JavaFileStorage.FileStorag
}
static JavaFileStorage createStorageToTest(Context ctx, Context appContext, boolean simulateRestart) {
storageToTest = new SftpStorage(ctx.getApplicationContext());
//storageToTest = new SftpStorage(ctx.getApplicationContext());
storageToTest = new PCloudFileStorage(ctx, "yCeH59Ffgtm");
//storageToTest = new SkyDriveFileStorage("000000004010C234", appContext);