mirror of
https://github.com/owncloud/android-library.git
synced 2025-06-09 00:46:15 +00:00
Merge pull request #195 from owncloud/feature/request_id
Use UUID v4 to represent request ids and log it
This commit is contained in:
commit
9526038503
@ -29,7 +29,6 @@ import android.accounts.AccountManager;
|
|||||||
import android.accounts.AccountsException;
|
import android.accounts.AccountsException;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
|
|
||||||
import com.owncloud.android.lib.common.accounts.AccountUtils;
|
|
||||||
import com.owncloud.android.lib.common.authentication.OwnCloudCredentials;
|
import com.owncloud.android.lib.common.authentication.OwnCloudCredentials;
|
||||||
import com.owncloud.android.lib.common.authentication.OwnCloudCredentialsFactory;
|
import com.owncloud.android.lib.common.authentication.OwnCloudCredentialsFactory;
|
||||||
import com.owncloud.android.lib.common.authentication.OwnCloudCredentialsFactory.OwnCloudAnonymousCredentials;
|
import com.owncloud.android.lib.common.authentication.OwnCloudCredentialsFactory.OwnCloudAnonymousCredentials;
|
||||||
@ -116,22 +115,16 @@ public class OwnCloudClient extends HttpClient {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public int executeHttpMethod (HttpBaseMethod method) throws Exception {
|
public int executeHttpMethod (HttpBaseMethod method) throws Exception {
|
||||||
|
|
||||||
boolean repeatWithFreshCredentials;
|
boolean repeatWithFreshCredentials;
|
||||||
int repeatCounter = 0;
|
int repeatCounter = 0;
|
||||||
int status;
|
int status;
|
||||||
|
|
||||||
do {
|
do {
|
||||||
// Clean previous request id. This is a bit hacky but is the only way to add request headers in WebDAV
|
setRequestId(method);
|
||||||
// methods by using Dav4Android
|
|
||||||
deleteHeaderForAllRequests(OC_X_REQUEST_ID);
|
|
||||||
|
|
||||||
// Header to allow tracing requests in apache and ownCloud logs
|
|
||||||
addHeaderForAllRequests(OC_X_REQUEST_ID,
|
|
||||||
RandomUtils.generateRandomString(RandomUtils.generateRandomInteger(20, 200)));
|
|
||||||
|
|
||||||
status = method.execute();
|
status = method.execute();
|
||||||
checkFirstRedirection(method);
|
checkFirstRedirection(method);
|
||||||
|
|
||||||
if(mFollowRedirects && !isIdPRedirection()) {
|
if(mFollowRedirects && !isIdPRedirection()) {
|
||||||
status = followRedirection(method).getLastStatus();
|
status = followRedirection(method).getLastStatus();
|
||||||
}
|
}
|
||||||
@ -158,6 +151,8 @@ public class OwnCloudClient extends HttpClient {
|
|||||||
int status;
|
int status;
|
||||||
|
|
||||||
do {
|
do {
|
||||||
|
setRequestId(method);
|
||||||
|
|
||||||
status = method.execute();
|
status = method.execute();
|
||||||
|
|
||||||
repeatWithFreshCredentials = checkUnauthorizedAccess(status, repeatCounter);
|
repeatWithFreshCredentials = checkUnauthorizedAccess(status, repeatCounter);
|
||||||
@ -169,6 +164,19 @@ public class OwnCloudClient extends HttpClient {
|
|||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void setRequestId(HttpBaseMethod method) {
|
||||||
|
// Clean previous request id. This is a bit hacky but is the only way to add request headers in WebDAV
|
||||||
|
// methods by using Dav4Android
|
||||||
|
deleteHeaderForAllRequests(OC_X_REQUEST_ID);
|
||||||
|
|
||||||
|
String requestId = RandomUtils.generateRandomUUID();
|
||||||
|
|
||||||
|
// Header to allow tracing requests in apache and ownCloud logs
|
||||||
|
addHeaderForAllRequests(OC_X_REQUEST_ID, RandomUtils.generateRandomUUID());
|
||||||
|
|
||||||
|
Log_OC.d(TAG, "Executing " + method.getClass().getSimpleName() + " in request with id " + requestId);
|
||||||
|
}
|
||||||
|
|
||||||
public RedirectionPath followRedirection(HttpBaseMethod method) throws Exception {
|
public RedirectionPath followRedirection(HttpBaseMethod method) throws Exception {
|
||||||
int redirectionsCount = 0;
|
int redirectionsCount = 0;
|
||||||
int status = method.getStatusCode();
|
int status = method.getStatusCode();
|
||||||
|
@ -25,6 +25,7 @@
|
|||||||
package com.owncloud.android.lib.common.utils;
|
package com.owncloud.android.lib.common.utils;
|
||||||
|
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class with methods to generate random values
|
* Class with methods to generate random values
|
||||||
@ -60,4 +61,11 @@ public class RandomUtils {
|
|||||||
Random r = new Random();
|
Random r = new Random();
|
||||||
return r.nextInt(max-min) + min;
|
return r.nextInt(max-min) + min;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return random UUID
|
||||||
|
*/
|
||||||
|
public static String generateRandomUUID() {
|
||||||
|
return UUID.randomUUID().toString();
|
||||||
|
}
|
||||||
}
|
}
|
Loading…
x
Reference in New Issue
Block a user