in src/script/acquisition-sdk.ts [83:147]
public queryUpdateWithCurrentPackage(currentPackage: Package, callback?: Callback<RemotePackage | NativeUpdateNotification>): void {
if (!currentPackage || !currentPackage.appVersion) {
throw new CodePushPackageError("Calling common acquisition SDK with incorrect package"); // Unexpected; indicates error in our implementation
}
var updateRequest: UpdateCheckRequest = {
deployment_key: this._deploymentKey,
app_version: currentPackage.appVersion,
package_hash: currentPackage.packageHash,
is_companion: this._ignoreAppVersion,
label: currentPackage.label,
client_unique_id: this._clientUniqueId
};
var requestUrl: string = this._serverUrl + this._publicPrefixUrl + "update_check?" + queryStringify(updateRequest);
this._httpRequester.request(Http.Verb.GET, requestUrl, (error: Error, response: Http.Response) => {
if (error) {
callback(error, /*remotePackage=*/ null);
return;
}
if (response.statusCode !== 200) {
let errorMessage: any;
if (response.statusCode === 0) {
errorMessage = `Couldn't send request to ${requestUrl}, xhr.statusCode = 0 was returned. One of the possible reasons for that might be connection problems. Please, check your internet connection.`;
} else {
errorMessage = `${response.statusCode}: ${response.body}`;
}
callback(new CodePushHttpError(errorMessage), /*remotePackage=*/ null);
return;
}
try {
var responseObject = JSON.parse(response.body);
var updateInfo: UpdateCheckResponse = responseObject.update_info;
} catch (error) {
callback(error, /*remotePackage=*/ null);
return;
}
if (!updateInfo) {
callback(error, /*remotePackage=*/ null);
return;
} else if (updateInfo.update_app_version) {
callback(/*error=*/ null, { updateAppVersion: true, appVersion: updateInfo.target_binary_range });
return;
} else if (!updateInfo.is_available) {
callback(/*error=*/ null, /*remotePackage=*/ null);
return;
}
var remotePackage: RemotePackage = {
deploymentKey: this._deploymentKey,
description: updateInfo.description,
label: updateInfo.label,
appVersion: updateInfo.target_binary_range,
isMandatory: updateInfo.is_mandatory,
packageHash: updateInfo.package_hash,
packageSize: updateInfo.package_size,
downloadUrl: updateInfo.download_url
};
callback(/*error=*/ null, remotePackage);
});
}