use of com.microsoft.appcenter.http.HttpClientRetryer in project mobile-center-sdk-android by Microsoft.
the class Distribute method getLatestReleaseDetails.
/**
* Get latest release details from server.
*
* @param distributionGroupId distribution group id.
* @param updateToken token to secure API call.
*/
@VisibleForTesting
synchronized void getLatestReleaseDetails(String distributionGroupId, String updateToken) {
AppCenterLog.debug(LOG_TAG, "Get latest release details...");
HttpClientRetryer retryer = new HttpClientRetryer(new DefaultHttpClient());
NetworkStateHelper networkStateHelper = NetworkStateHelper.getSharedInstance(mContext);
HttpClient httpClient = new HttpClientNetworkStateHandler(retryer, networkStateHelper);
String releaseHash = computeReleaseHash(mPackageInfo);
String url = mApiUrl;
if (updateToken == null) {
url += String.format(GET_LATEST_PUBLIC_RELEASE_PATH_FORMAT, mAppSecret, distributionGroupId, releaseHash, getReportingParametersForUpdatedRelease(true, ""));
} else {
url += String.format(GET_LATEST_PRIVATE_RELEASE_PATH_FORMAT, mAppSecret, releaseHash, getReportingParametersForUpdatedRelease(false, distributionGroupId));
}
Map<String, String> headers = new HashMap<>();
if (updateToken != null) {
headers.put(HEADER_API_TOKEN, updateToken);
}
final Object releaseCallId = mCheckReleaseCallId = new Object();
mCheckReleaseApiCall = httpClient.callAsync(url, METHOD_GET, headers, new HttpClient.CallTemplate() {
@Override
public String buildRequestBody() throws JSONException {
/* Only GET is used by Distribute service. This method is never getting called. */
return null;
}
@Override
public void onBeforeCalling(URL url, Map<String, String> headers) {
if (AppCenterLog.getLogLevel() <= VERBOSE) {
/* Log url. */
String urlString = url.toString().replaceAll(mAppSecret, HttpUtils.hideSecret(mAppSecret));
AppCenterLog.verbose(LOG_TAG, "Calling " + urlString + "...");
/* Log headers. */
Map<String, String> logHeaders = new HashMap<>(headers);
String apiToken = logHeaders.get(HEADER_API_TOKEN);
if (apiToken != null) {
logHeaders.put(HEADER_API_TOKEN, HttpUtils.hideSecret(apiToken));
}
AppCenterLog.verbose(LOG_TAG, "Headers: " + logHeaders);
}
}
}, new ServiceCallback() {
@Override
public void onCallSucceeded(final String payload) {
/* onPostExecute is not always called on UI thread due to an old Android bug. */
HandlerUtils.runOnUiThread(new Runnable() {
@Override
public void run() {
try {
handleApiCallSuccess(releaseCallId, payload, ReleaseDetails.parse(payload));
} catch (JSONException e) {
onCallFailed(e);
}
}
});
}
@Override
public void onCallFailed(Exception e) {
handleApiCallFailure(releaseCallId, e);
}
});
}
use of com.microsoft.appcenter.http.HttpClientRetryer in project AppCenter-SDK-Android by Microsoft.
the class Distribute method getLatestReleaseDetails.
/**
* Get latest release details from server.
*
* @param distributionGroupId distribution group id.
* @param updateToken token to secure API call.
*/
@VisibleForTesting
synchronized void getLatestReleaseDetails(String distributionGroupId, String updateToken) {
AppCenterLog.debug(LOG_TAG, "Get latest release details...");
HttpClientRetryer retryer = new HttpClientRetryer(new DefaultHttpClient());
NetworkStateHelper networkStateHelper = NetworkStateHelper.getSharedInstance(mContext);
HttpClient httpClient = new HttpClientNetworkStateHandler(retryer, networkStateHelper);
String releaseHash = computeReleaseHash(mPackageInfo);
String url = mApiUrl;
if (updateToken == null) {
url += String.format(GET_LATEST_PUBLIC_RELEASE_PATH_FORMAT, mAppSecret, distributionGroupId, releaseHash, getReportingParametersForUpdatedRelease(true, ""));
} else {
url += String.format(GET_LATEST_PRIVATE_RELEASE_PATH_FORMAT, mAppSecret, releaseHash, getReportingParametersForUpdatedRelease(false, distributionGroupId));
}
Map<String, String> headers = new HashMap<>();
if (updateToken != null) {
headers.put(HEADER_API_TOKEN, updateToken);
}
final Object releaseCallId = mCheckReleaseCallId = new Object();
mCheckReleaseApiCall = httpClient.callAsync(url, METHOD_GET, headers, new HttpClient.CallTemplate() {
@Override
public String buildRequestBody() throws JSONException {
/* Only GET is used by Distribute service. This method is never getting called. */
return null;
}
@Override
public void onBeforeCalling(URL url, Map<String, String> headers) {
if (AppCenterLog.getLogLevel() <= VERBOSE) {
/* Log url. */
String urlString = url.toString().replaceAll(mAppSecret, HttpUtils.hideSecret(mAppSecret));
AppCenterLog.verbose(LOG_TAG, "Calling " + urlString + "...");
/* Log headers. */
Map<String, String> logHeaders = new HashMap<>(headers);
String apiToken = logHeaders.get(HEADER_API_TOKEN);
if (apiToken != null) {
logHeaders.put(HEADER_API_TOKEN, HttpUtils.hideSecret(apiToken));
}
AppCenterLog.verbose(LOG_TAG, "Headers: " + logHeaders);
}
}
}, new ServiceCallback() {
@Override
public void onCallSucceeded(final String payload) {
/* onPostExecute is not always called on UI thread due to an old Android bug. */
HandlerUtils.runOnUiThread(new Runnable() {
@Override
public void run() {
try {
handleApiCallSuccess(releaseCallId, payload, ReleaseDetails.parse(payload));
} catch (JSONException e) {
onCallFailed(e);
}
}
});
}
@Override
public void onCallFailed(Exception e) {
handleApiCallFailure(releaseCallId, e);
}
});
}
Aggregations