{"id":1915,"date":"2019-02-25T15:39:30","date_gmt":"2019-02-25T14:39:30","guid":{"rendered":"https:\/\/solidt.eu\/site\/?p=1915"},"modified":"2019-02-25T15:39:30","modified_gmt":"2019-02-25T14:39:30","slug":"callbag-example","status":"publish","type":"post","link":"https:\/\/solidt.eu\/site\/callbag-example\/","title":{"rendered":"Callbag example"},"content":{"rendered":"\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"js\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">const {\n    interval,\n    fromPromise,\n    fromIter,\n    forEach,\n    map,\n    pipe,\n    flatten\n} = require(\"callbag-basics\");\nconst fetch = require('node-fetch');\n\nconst limit = (v, min, max) => Math.max(min, Math.min(max, Number(v) || 0));\nconst mapNumber = (v, inMin, inMax, outMin, outMax) => (limit(v, inMin, inMax) - inMin) * (outMax - outMin) \/ (inMax - inMin) + outMin;\n\nlet getProgressBar = (name, perc, width) => {\n    perc = mapNumber(perc, 95, 100, 0, 100); \/\/ correctie om meer verschil te zien\n    let full = Math.floor((perc \/ 100) * width);\n    return `${name} [${'='.repeat(full)}${' '.repeat(width - full)}]`;\n};\n\nlet tvs = {};\nconst updateProgress = () => {\n    var pbs = [];\n    pbs.push(new Date().toISOString().slice(11, 19));\n    Object.keys(tvs).forEach(k => {\n        pbs.push(getProgressBar(k, 100 - tvs[k], 50));\n    });\n    const out = pbs.join(', ') + '\\r'; \/\/\\n\n    process.stdout.write(out);\n};\n\nconst numberRegex = \/(\\d+)\/gm;\nconst fields = ['total', 'used', 'free', 'shared', 'buffers', 'cached', 'buffers_used', 'buffers_free', 'swap_total', 'swap_used', 'swap_free'];\n\nconst parseInfo = (tv, data) => {\n    const res = {};\n    const matches = [];\n    while (m = numberRegex.exec(data)) {\n        matches.push(m[1])\n    }\n    matches.map(a => Number(a)).slice(0, fields.length).forEach((a, i) => res[fields[i]] = a);\n    return {\n        tv,\n        info: res\n    };\n};\n\nconst showInfo = (tv, memInfo) => {\n    if (memInfo &amp;&amp; memInfo.total) {\n        let total = memInfo.total;\n        let free = (memInfo.total - memInfo.used);\n        let perc = (free \/ total) * 100;\n        tvs[tv] = perc;\n        updateProgress();\n    }\n};\n\nconst getInfo = (tv, url) => {\n    return fetch(url)\n        .then(r => r.text())\n        .then(text => ({\n            tv: tv,\n            info: text\n        }));\n}\n\npipe(\n    interval(500),\n    map(x => fromIter([34, 35])),\n    flatten,\n    map(x => fromPromise(getInfo(`${x}`, `http:\/\/10.199.108.${x}:9500\/api\/memoryinfo`))),\n    flatten,\n    map(x => parseInfo(x.tv, x.info)),\n    forEach(x => showInfo(x.tv, x.info))\n);\n<\/pre>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-1915","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/posts\/1915","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/comments?post=1915"}],"version-history":[{"count":1,"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/posts\/1915\/revisions"}],"predecessor-version":[{"id":1916,"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/posts\/1915\/revisions\/1916"}],"wp:attachment":[{"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/media?parent=1915"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/categories?post=1915"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/tags?post=1915"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}