UNPKG

hazelcast-client

Version:

Hazelcast - open source In-Memory Data Grid - client for NodeJS

71 lines 3.11 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var Address = require("../Address"); var Util_1 = require("../Util"); var https_1 = require("https"); var Promise = require("bluebird"); var URL = require("url"); /** * Discovery service that discover nodes via hazelcast.cloud * https://coordinator.hazelcast.cloud/cluster/discovery?token=<TOKEN> */ var HazelcastCloudDiscovery = /** @class */ (function () { function HazelcastCloudDiscovery(endpointUrl, connectionTimeoutInMillis) { this.endpointUrl = endpointUrl; this.connectionTimeoutInMillis = connectionTimeoutInMillis; } HazelcastCloudDiscovery.createUrlEndpoint = function (properties, cloudToken) { var cloudBaseUrl = properties[HazelcastCloudDiscovery.CLOUD_URL_BASE_PROPERTY]; return cloudBaseUrl + this.CLOUD_URL_PATH + cloudToken; }; HazelcastCloudDiscovery.prototype.discoverNodes = function () { return this.callService().catch(function (e) { throw e; }); }; HazelcastCloudDiscovery.prototype.callService = function () { var _this = this; var deferred = Promise.defer(); var url = URL.parse(this.endpointUrl); var endpointUrlOptions = { host: url.host, path: url.path, }; var dataAsAString = ''; https_1.get(endpointUrlOptions, function (res) { res.setEncoding('utf8'); res.on('data', function (chunk) { dataAsAString += chunk; }); res.on('end', function () { deferred.resolve(_this.parseResponse(dataAsAString)); }); }).on('error', function (e) { deferred.reject(e); }); return deferred.promise; }; HazelcastCloudDiscovery.prototype.parseResponse = function (data) { var jsonValue = JSON.parse(data); var privateToPublicAddresses = new Map(); for (var _i = 0, jsonValue_1 = jsonValue; _i < jsonValue_1.length; _i++) { var value = jsonValue_1[_i]; var privateAddress = value[HazelcastCloudDiscovery.PRIVATE_ADDRESS_PROPERTY]; var publicAddress = value[HazelcastCloudDiscovery.PUBLIC_ADDRESS_PROPERTY]; var publicAddr = Util_1.createAddressFromString(publicAddress.toString()); privateToPublicAddresses.set(new Address(privateAddress, publicAddr.port).toString(), publicAddr); } return privateToPublicAddresses; }; /** * Internal client property to change base url of cloud discovery endpoint. * Used for testing cloud discovery. */ HazelcastCloudDiscovery.CLOUD_URL_BASE_PROPERTY = 'hazelcast.client.cloud.url'; HazelcastCloudDiscovery.CLOUD_URL_PATH = '/cluster/discovery?token='; HazelcastCloudDiscovery.PRIVATE_ADDRESS_PROPERTY = 'private-address'; HazelcastCloudDiscovery.PUBLIC_ADDRESS_PROPERTY = 'public-address'; return HazelcastCloudDiscovery; }()); exports.HazelcastCloudDiscovery = HazelcastCloudDiscovery; //# sourceMappingURL=HazelcastCloudDiscovery.js.map