msms's notebooks

  • test - /msms/test
    Last edited 7 years ago
    let endpoint = require("@runkit/msms/endpoint-express/latest"); let klpl = require("@runkit/msms/klpl-msms/latest"); let promise = require("bluebird"); // Just provide the exports object to the endpoint helper let app = endpoint(module.exports); let klpl_data = false; app.get("/klpl/:id", (req, res) => { promise.try(()=>{ let id = Math.abs(parseInt(req.params.id)); if(('' + id).replace(/[-+\s]/g,'')>9)throw "Invalid request : " + req.params.id; return id; }) .then((id)=>refresh(id)) .then(data=>res.json({data:data})) .catch(err=>res.json({error:err})); }); app.get("/klpl", (req, res) => { (klpl_data?promise.resolve(klpl_data):refresh()).then(render); function render(data){ res.json({ data: data, status: data.length ? 'Ok' : 'Maintenance in progress, Try again in few seconds.' }); } }); app.get("/area/by_state",(req,res)=>{res.json({data: require("@runkit/msms/kawasan-my/latest").by_state})}); app.get("/area/locations",(req,res)=>{res.json({data: require("@runkit/msms/kawasan-my/latest").locations})}); app.get("*", (req, res) => { res.json({msms: 'Hi. Im sorry there are nothing here =P'}); }); function refresh(arg){ if (arg && !Array.isArray(arg)) arg = [arg]; return promise.all((arg || [1,9]).map(id=> klpl.fetch('http://dbklpgis.scadatron.net/dbklpgisd:id:.xml'.replace(/:id:/, id||'1')))) .then(_all=>{ let combined=[]; // console.log(_all.map(o=>o.map(oo=>oo['NAME']).sort())); _all.forEach(data=>{combined = combined.concat(data)}); return combined .filter((o,i,a)=>a.map(z=>z['ID']).indexOf(o['ID'])==i) .sort((a, b)=>{ if(a['ID']==b['ID'])return 0; return a['ID'].length<b['ID'].length ? -1 : (a['ID'].length>b['ID'].length ? 1 : (a['ID']<b['ID'] ? -1 : 1)); }); }) .then(data=>{ if(!arg) { // klpl_data=data; // setTimeout(refresh, 10000); } return data; }); } let _dummy = {};
  • klpl-msms - /msms/klpl-msms
    Last edited 7 years ago
    require("request"); let rq = require("request-promise"); let xml2js = require("xml2js-es6-promise"); let decrypt = require("bewak").decryptKlpl; function fetch(url){ return rq({uri:url}).then(xml2js).then(parseData); } function parseData(data){ data = data['PGIS']; return data['MALL'].map(o=>{ for(let _attr in o){ o[_attr]=o[_attr].toString(); if(_attr.match(/(NAME|LOT)/)){ o[_attr]=decrypt(o[_attr].toString()).replace(/J'TION/, 'JUNCTION'); } } return Object.assign(o); }).filter(o=>{ return o['ID'] && o['ID'] != 'M0'; }); } module.exports = { parse: parseData, fetch: fetch }
  • 123lib - /msms/123lib
    Last edited 7 years ago
    let endpoint = require("@runkit/msms/endpoint-express/latest"); let _rq = require("request"); let rq = require("request-promise"); let cheerio = require("cheerio"); base_url = decode('aHR0cHM6Ly9nb21vdmllcy50bw=='); rq.defaults({ 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.110 Safari/537.36', referer: base_url, jar: _rq.jar() }); function decode(str){return new Buffer(str, 'base64').toString()} function encode(str){return new Buffer(str).toString('base64')}
  • kawasan_my - /msms/kawasan-my
    Last edited 7 years ago
    let negeri = [ "Johor", "Kedah", "Kelantan", "Melaka", "Negeri Sembilan", "Pahang", "Perak", "Perlis", "Pulau Pinang", "Sabah", "Sarawak", "Selangor, KL dan Putrajaya", "Terengganu", "Wilayah Persekutuan Labuan" ];
  • endpoint-express - /msms/endpoint-express
    Last edited 7 years ago
    var _express = require("express"); function expressWrapper(anExport) { var mount = _express(); var app = _express(); // "mount" is our root app, and it mounts "app" at your notebook path // which is available in the TONIC_MOUNT_PATH environment variable mount.use(process.env.TONIC_MOUNT_PATH || "", app); if (anExport) { anExport.tonicEndpoint = mount; } app.listen = function(){}; var bodyParser = require('body-parser'); app.use(bodyParser.urlencoded({ extended: false })); app.use(function(req, res, next) { res.setHeader("designed-by", "msms"); next(); }); return app; } module.exports = expressWrapper