Прометей Пушгейтвей из браузера JS / AJAX - PullRequest
0 голосов
/ 07 марта 2019

Я ищу пример о том, как протолкнуть метрику к шлюзу через ajax.

echo 'some_metric 42' | curl --user user:pass --data-binary @- https://example.com/metrics/job/author_monitoring/jobname/count_open

с curl, он отлично работает!

Я не знаю, как перевести этов JS / JQuery.Может быть, у кого-то есть пример

Вот что я получил до сих пор.

(function ($, $document) {
  "use strict";

  function textToBin(text) {
    return (
      Array
      .from(text)
      .reduce((acc, char) => acc.concat(char.charCodeAt().toString(2)), [])
      .map(bin => '0'.repeat(8 - bin.length) + bin)
      .join(' ')
    );
  }

  var username = "user";
  var password = "pass";
  var metric = 'some_metric 42';
  var binaryData = textToBin(metric);

  $.ajax({
    url: "https://example.com/metrics/job/author_monitoring/jobname/count_open",
    data: binaryData,
    type: 'POST',
    crossDomain: true,
    beforeSend: function (xhr) {
      xhr.setRequestHeader("Authorization", "Basic " + btoa(username + ":" + password));
    },
    success: function () {
      console.log("Success");
    },
    error: function () {
      console.log('Failed!');
    }
  });

})($, $(document));

Вот ошибка:

text format parsing error in line 1: invalid metric name

1 Ответ

0 голосов
/ 07 марта 2019

хорошо, я понял.

Существует простое решение, импорт - это \n в конце строки.

(function ($, $document) {
  "use strict";
  var username = "user";
  var password = "pass";
  var metric = 'some_metric 42\n';

  $.ajax({
    url: "https://example.com/metrics/job/author_monitoring/jobname/count_open",
    data: metric,
    type: 'POST',
    beforeSend: function (xhr) {
      xhr.setRequestHeader("Authorization", "Basic " + btoa(username + ":" + password));
      xhr.setRequestHeader("Content-Type", "text/plain");
    },
    success: function () {
      console.log("Success");
    },
    error: function () {
      console.log('Failed!');
    }
  });
})($, $(document));
...