public queryUpdateWithCurrentPackage()

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);
        });
    }