我刚刚设置了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分钟运行一次以获取原始数据并执行以下操作:
任何帮助或教程都会非常感激。
谢谢!
答案 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] }})
伪代码,但你应该可以从中工作。