将JSON数据操作到cachet.io中

时间:2016-04-23 11:10:19

标签: json laravel cron

我刚刚设置了Cachet状态页面,但我很难通过它API推送组件的更新。

我希望从合作伙伴网站获取现有的JSON Feed,并使用它来更新我自己页面上的状态。

以下是我需要提取的JSON数据示例:

function getScrollBarWidth () {
  var inner = document.createElement('p');
  inner.style.width = "100% !important";
  inner.style.height = "200px !important";

  var outer = document.createElement('div');
  outer.style.position = "absolute !important";
  outer.style.top = "0px !important";
  outer.style.left = "0px !important";
  outer.style.visibility = "hidden !important";
  outer.style.width = "200px !important";
  outer.style.height = "150px !important";
  outer.style.overflow = "hidden !important";
  outer.appendChild (inner);

  document.body.appendChild (outer);
  var w1 = inner.offsetWidth;
  outer.style.overflow = 'scroll !important';
  var w2 = inner.offsetWidth;
  if (w1 == w2) w2 = outer.clientWidth;

  document.body.removeChild (outer);

  return (w1 - w2);
};

及以下是Cachet在其API中使用的格式。

atachments: data_to_send.attachments,

以前从未处理过JSON的东西,但我想我需要一个脚本,我可以每X分钟运行一次以获取原始数据并执行以下操作:

  • 转换"状态"从原始的Feed到Cachet的。
  • 更新" updated_at"上次运行脚本的时间。

任何帮助或教程都会非常感激。

谢谢!

1 个答案:

答案 0 :(得分:1)

我是Cachet的首席开发人员,感谢您试用它!

您需要做的就是更新Component status。 Cachet将为您处理updated_at时间戳。

我无法为您编写脚本,但您可以执行以下操作:

// This will be a lookup of the states from the service you're watching to Cachet.
serviceStates = [
    'online' => 1,
    'issues' => 2,
    'offline' => 4,
]

// The id of the component we're updating
componentId = 1

// The state that is coming back from the service you're watching
state = 'online'

request({url: 'demo.cachethq.io/api/v1/components/'+componentId, data: { status: serviceStates[state] }})

伪代码,但你应该可以从中工作。