fetchSamplingRules: function fetchSamplingRules()

in packages/core/lib/middleware/sampling/service_connector.js [24:64]


  fetchSamplingRules: function fetchSamplingRules(callback) {
    const body = '{}';  // Payload needed for GetSamplingRules POST request
    const options = getOptions(this.samplingRulesPath, body.length);
    const httpReq = this.httpClient.__request ? this.httpClient.__request : this.httpClient.request;

    const req = httpReq(options, res => {
      var data = '';
      res.on('data', d => {
        data += d;
      });

      res.on('error', error => {
        callback(error);
      });

      res.on('end', () => {
        var dataObj;
        try {
          dataObj = JSON.parse(data);
        } catch (err) {
          callback(err);
          return;
        }

        if (!dataObj) {
          callback(new Error('AWS X-Ray GetSamplingRules API returned empty response'));
          return;
        }

        var newRules = assembleRules(dataObj);
        callback(null, newRules);
      });
    });

    req.on('error', () => {
      callback(new Error(`Failed to connect to X-Ray daemon at ${options.hostname}:${options.port} to get sampling rules.`));
    });

    req.write(body);
    req.end();
  },