Last active
May 1, 2018 13:26
-
-
Save fcecagno/8ed9e9ae2bb7aded329f01a2acbeff60 to your computer and use it in GitHub Desktop.
kurento_pipelines
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| { | |
| "name": "kurento-hello-world", | |
| "version": "6.6.1", | |
| "lockfileVersion": 1, | |
| "requires": true, | |
| "dependencies": { | |
| "bower": { | |
| "version": "1.8.2", | |
| "resolved": "https://registry.npmjs.org/bower/-/bower-1.8.2.tgz", | |
| "integrity": "sha1-rfU1KcjUrwLvJPuNU0HBQZ0z4vc=", | |
| "dev": true | |
| }, | |
| "cookie-parser": { | |
| "version": "1.4.3", | |
| "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.3.tgz", | |
| "integrity": "sha1-D+MfoZ0AC5X0qt8fU/3CuKIDuqU=", | |
| "requires": { | |
| "cookie": "0.3.1", | |
| "cookie-signature": "1.0.6" | |
| }, | |
| "dependencies": { | |
| "cookie": { | |
| "version": "0.3.1", | |
| "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", | |
| "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=" | |
| }, | |
| "cookie-signature": { | |
| "version": "1.0.6", | |
| "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", | |
| "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" | |
| } | |
| } | |
| }, | |
| "express": { | |
| "version": "4.12.4", | |
| "resolved": "https://registry.npmjs.org/express/-/express-4.12.4.tgz", | |
| "integrity": "sha1-j+wlECVbxrLlgQfEgjnA+jB8GqI=", | |
| "requires": { | |
| "accepts": "1.2.13", | |
| "content-disposition": "0.5.0", | |
| "content-type": "1.0.4", | |
| "cookie": "0.1.2", | |
| "cookie-signature": "1.0.6", | |
| "debug": "2.2.0", | |
| "depd": "1.0.1", | |
| "escape-html": "1.0.1", | |
| "etag": "1.6.0", | |
| "finalhandler": "0.3.6", | |
| "fresh": "0.2.4", | |
| "merge-descriptors": "1.0.0", | |
| "methods": "1.1.2", | |
| "on-finished": "2.2.1", | |
| "parseurl": "1.3.2", | |
| "path-to-regexp": "0.1.3", | |
| "proxy-addr": "1.0.10", | |
| "qs": "2.4.2", | |
| "range-parser": "1.0.3", | |
| "send": "0.12.3", | |
| "serve-static": "1.9.3", | |
| "type-is": "1.6.15", | |
| "utils-merge": "1.0.0", | |
| "vary": "1.0.1" | |
| }, | |
| "dependencies": { | |
| "accepts": { | |
| "version": "1.2.13", | |
| "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.2.13.tgz", | |
| "integrity": "sha1-5fHzkoxtlf2WVYw27D2dDeSm7Oo=", | |
| "requires": { | |
| "mime-types": "2.1.17", | |
| "negotiator": "0.5.3" | |
| }, | |
| "dependencies": { | |
| "mime-types": { | |
| "version": "2.1.17", | |
| "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz", | |
| "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=", | |
| "requires": { | |
| "mime-db": "1.30.0" | |
| }, | |
| "dependencies": { | |
| "mime-db": { | |
| "version": "1.30.0", | |
| "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz", | |
| "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=" | |
| } | |
| } | |
| }, | |
| "negotiator": { | |
| "version": "0.5.3", | |
| "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.5.3.tgz", | |
| "integrity": "sha1-Jp1cR2gQ7JLtvntsLygxY4T5p+g=" | |
| } | |
| } | |
| }, | |
| "content-disposition": { | |
| "version": "0.5.0", | |
| "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.0.tgz", | |
| "integrity": "sha1-QoT+auBjCHRjnkToCkGMKTQTXp4=" | |
| }, | |
| "content-type": { | |
| "version": "1.0.4", | |
| "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", | |
| "integrity": "sha1-4TjMdeBAxyexlm/l5fjJruJW/js=" | |
| }, | |
| "cookie": { | |
| "version": "0.1.2", | |
| "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.1.2.tgz", | |
| "integrity": "sha1-cv7D0k5Io0Mgc9kMEmQgBQYQBLE=" | |
| }, | |
| "cookie-signature": { | |
| "version": "1.0.6", | |
| "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", | |
| "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" | |
| }, | |
| "debug": { | |
| "version": "2.2.0", | |
| "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", | |
| "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", | |
| "requires": { | |
| "ms": "0.7.1" | |
| }, | |
| "dependencies": { | |
| "ms": { | |
| "version": "0.7.1", | |
| "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", | |
| "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=" | |
| } | |
| } | |
| }, | |
| "depd": { | |
| "version": "1.0.1", | |
| "resolved": "https://registry.npmjs.org/depd/-/depd-1.0.1.tgz", | |
| "integrity": "sha1-gK7GTJ1tl+ZcwqnKqTwKpqv3Oqo=" | |
| }, | |
| "escape-html": { | |
| "version": "1.0.1", | |
| "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.1.tgz", | |
| "integrity": "sha1-GBoobq05ejmpKFfPsdQwUuNWv/A=" | |
| }, | |
| "etag": { | |
| "version": "1.6.0", | |
| "resolved": "https://registry.npmjs.org/etag/-/etag-1.6.0.tgz", | |
| "integrity": "sha1-i8ssavElTEgd/IuZfJBu9ORCwgc=", | |
| "requires": { | |
| "crc": "3.2.1" | |
| }, | |
| "dependencies": { | |
| "crc": { | |
| "version": "3.2.1", | |
| "resolved": "https://registry.npmjs.org/crc/-/crc-3.2.1.tgz", | |
| "integrity": "sha1-XZyPt3okXNXsopHl0tAFM0urAII=" | |
| } | |
| } | |
| }, | |
| "finalhandler": { | |
| "version": "0.3.6", | |
| "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-0.3.6.tgz", | |
| "integrity": "sha1-2vnEFhsbBuABRmsUEd/baXO+E4s=", | |
| "requires": { | |
| "debug": "2.2.0", | |
| "escape-html": "1.0.1", | |
| "on-finished": "2.2.1" | |
| } | |
| }, | |
| "fresh": { | |
| "version": "0.2.4", | |
| "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.2.4.tgz", | |
| "integrity": "sha1-NYJJkgbJcjcUGQ7ddLRgT+tKYUw=" | |
| }, | |
| "merge-descriptors": { | |
| "version": "1.0.0", | |
| "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.0.tgz", | |
| "integrity": "sha1-IWnPdTjhsMyH+4jhUC2EdLv3mGQ=" | |
| }, | |
| "methods": { | |
| "version": "1.1.2", | |
| "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", | |
| "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" | |
| }, | |
| "on-finished": { | |
| "version": "2.2.1", | |
| "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.2.1.tgz", | |
| "integrity": "sha1-XIXBzDYpn3gCllP2Z/J7a5nrwCk=", | |
| "requires": { | |
| "ee-first": "1.1.0" | |
| }, | |
| "dependencies": { | |
| "ee-first": { | |
| "version": "1.1.0", | |
| "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.0.tgz", | |
| "integrity": "sha1-ag18YiHkkP7v2S7D9EHJzozQl/Q=" | |
| } | |
| } | |
| }, | |
| "parseurl": { | |
| "version": "1.3.2", | |
| "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", | |
| "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=" | |
| }, | |
| "path-to-regexp": { | |
| "version": "0.1.3", | |
| "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.3.tgz", | |
| "integrity": "sha1-IbmrgidCed4lsVbqCP0SylG4rss=" | |
| }, | |
| "proxy-addr": { | |
| "version": "1.0.10", | |
| "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-1.0.10.tgz", | |
| "integrity": "sha1-DUCoL4Afw1VWfS7LZe/j8HfxIcU=", | |
| "requires": { | |
| "forwarded": "0.1.2", | |
| "ipaddr.js": "1.0.5" | |
| }, | |
| "dependencies": { | |
| "forwarded": { | |
| "version": "0.1.2", | |
| "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", | |
| "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" | |
| }, | |
| "ipaddr.js": { | |
| "version": "1.0.5", | |
| "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.0.5.tgz", | |
| "integrity": "sha1-X6eM8wG4JceKvDBC2BJyMEnqI8c=" | |
| } | |
| } | |
| }, | |
| "qs": { | |
| "version": "2.4.2", | |
| "resolved": "https://registry.npmjs.org/qs/-/qs-2.4.2.tgz", | |
| "integrity": "sha1-9854jld33wtQENp/fE5zujJHD1o=" | |
| }, | |
| "range-parser": { | |
| "version": "1.0.3", | |
| "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.0.3.tgz", | |
| "integrity": "sha1-aHKCNTXGkuLCoBA4Jq/YLC4P8XU=" | |
| }, | |
| "send": { | |
| "version": "0.12.3", | |
| "resolved": "https://registry.npmjs.org/send/-/send-0.12.3.tgz", | |
| "integrity": "sha1-zRLcWP3iHk+RkCs5sv2gWnptm9w=", | |
| "requires": { | |
| "debug": "2.2.0", | |
| "depd": "1.0.1", | |
| "destroy": "1.0.3", | |
| "escape-html": "1.0.1", | |
| "etag": "1.6.0", | |
| "fresh": "0.2.4", | |
| "mime": "1.3.4", | |
| "ms": "0.7.1", | |
| "on-finished": "2.2.1", | |
| "range-parser": "1.0.3" | |
| }, | |
| "dependencies": { | |
| "destroy": { | |
| "version": "1.0.3", | |
| "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.3.tgz", | |
| "integrity": "sha1-tDO0ck5x/YVR2YhRdIUcX8N34sk=" | |
| }, | |
| "mime": { | |
| "version": "1.3.4", | |
| "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz", | |
| "integrity": "sha1-EV+eO2s9rylZmDyzjxSaLUDrXVM=" | |
| }, | |
| "ms": { | |
| "version": "0.7.1", | |
| "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", | |
| "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=" | |
| } | |
| } | |
| }, | |
| "serve-static": { | |
| "version": "1.9.3", | |
| "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.9.3.tgz", | |
| "integrity": "sha1-X42gcyOtOF/z3FQfGnkXsuQ261c=", | |
| "requires": { | |
| "escape-html": "1.0.1", | |
| "parseurl": "1.3.2", | |
| "send": "0.12.3", | |
| "utils-merge": "1.0.0" | |
| } | |
| }, | |
| "type-is": { | |
| "version": "1.6.15", | |
| "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.15.tgz", | |
| "integrity": "sha1-yrEPtJCeRByChC6v4a1kbIGARBA=", | |
| "requires": { | |
| "media-typer": "0.3.0", | |
| "mime-types": "2.1.17" | |
| }, | |
| "dependencies": { | |
| "media-typer": { | |
| "version": "0.3.0", | |
| "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", | |
| "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" | |
| }, | |
| "mime-types": { | |
| "version": "2.1.17", | |
| "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz", | |
| "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=", | |
| "requires": { | |
| "mime-db": "1.30.0" | |
| }, | |
| "dependencies": { | |
| "mime-db": { | |
| "version": "1.30.0", | |
| "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz", | |
| "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "utils-merge": { | |
| "version": "1.0.0", | |
| "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz", | |
| "integrity": "sha1-ApT7kiu5N1FTVBxPcJYjHyh8ivg=" | |
| }, | |
| "vary": { | |
| "version": "1.0.1", | |
| "resolved": "https://registry.npmjs.org/vary/-/vary-1.0.1.tgz", | |
| "integrity": "sha1-meSYFWaihhGN+yuBc1ffeZM3bRA=" | |
| } | |
| } | |
| }, | |
| "express-session": { | |
| "version": "1.10.4", | |
| "resolved": "https://registry.npmjs.org/express-session/-/express-session-1.10.4.tgz", | |
| "integrity": "sha1-BOHZLgBZOJPh92Vp6zrWMRPa+Uw=", | |
| "requires": { | |
| "cookie": "0.1.2", | |
| "cookie-signature": "1.0.6", | |
| "crc": "3.2.1", | |
| "debug": "2.1.3", | |
| "depd": "1.0.1", | |
| "on-headers": "1.0.1", | |
| "parseurl": "1.3.2", | |
| "uid-safe": "1.1.0", | |
| "utils-merge": "1.0.0" | |
| }, | |
| "dependencies": { | |
| "cookie": { | |
| "version": "0.1.2", | |
| "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.1.2.tgz", | |
| "integrity": "sha1-cv7D0k5Io0Mgc9kMEmQgBQYQBLE=" | |
| }, | |
| "cookie-signature": { | |
| "version": "1.0.6", | |
| "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", | |
| "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" | |
| }, | |
| "crc": { | |
| "version": "3.2.1", | |
| "resolved": "https://registry.npmjs.org/crc/-/crc-3.2.1.tgz", | |
| "integrity": "sha1-XZyPt3okXNXsopHl0tAFM0urAII=" | |
| }, | |
| "debug": { | |
| "version": "2.1.3", | |
| "resolved": "https://registry.npmjs.org/debug/-/debug-2.1.3.tgz", | |
| "integrity": "sha1-zoqxte6PvuK/o7Yzyrk9NmtjQY4=", | |
| "requires": { | |
| "ms": "0.7.0" | |
| }, | |
| "dependencies": { | |
| "ms": { | |
| "version": "0.7.0", | |
| "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.0.tgz", | |
| "integrity": "sha1-hlvpTC5zl62KV9pqYzpuLzB5i4M=" | |
| } | |
| } | |
| }, | |
| "depd": { | |
| "version": "1.0.1", | |
| "resolved": "https://registry.npmjs.org/depd/-/depd-1.0.1.tgz", | |
| "integrity": "sha1-gK7GTJ1tl+ZcwqnKqTwKpqv3Oqo=" | |
| }, | |
| "on-headers": { | |
| "version": "1.0.1", | |
| "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz", | |
| "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c=" | |
| }, | |
| "parseurl": { | |
| "version": "1.3.2", | |
| "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", | |
| "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=" | |
| }, | |
| "uid-safe": { | |
| "version": "1.1.0", | |
| "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-1.1.0.tgz", | |
| "integrity": "sha1-WNbF2r+N+9jVKDSDmAbAP9YUMjI=", | |
| "requires": { | |
| "base64-url": "1.2.1", | |
| "native-or-bluebird": "1.1.2" | |
| }, | |
| "dependencies": { | |
| "base64-url": { | |
| "version": "1.2.1", | |
| "resolved": "https://registry.npmjs.org/base64-url/-/base64-url-1.2.1.tgz", | |
| "integrity": "sha1-GZ/WYXAqDnt9yubgaYuwicUvbXg=" | |
| }, | |
| "native-or-bluebird": { | |
| "version": "1.1.2", | |
| "resolved": "https://registry.npmjs.org/native-or-bluebird/-/native-or-bluebird-1.1.2.tgz", | |
| "integrity": "sha1-OSHhECMtHreQ89rGG7NwUxx9NW4=" | |
| } | |
| } | |
| }, | |
| "utils-merge": { | |
| "version": "1.0.0", | |
| "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz", | |
| "integrity": "sha1-ApT7kiu5N1FTVBxPcJYjHyh8ivg=" | |
| } | |
| } | |
| }, | |
| "kurento-client": { | |
| "version": "6.6.0", | |
| "resolved": "https://registry.npmjs.org/kurento-client/-/kurento-client-6.6.0.tgz", | |
| "integrity": "sha1-5YYqQd9qYoPDYIF+nqCWWzP9KkA=", | |
| "requires": { | |
| "async": "1.2.1", | |
| "error-tojson": "0.0.1", | |
| "es6-promise": "3.3.1", | |
| "extend": "2.0.1", | |
| "inherits": "2.0.3", | |
| "kurento-client-core": "6.6.0", | |
| "kurento-client-elements": "6.6.0", | |
| "kurento-client-filters": "6.6.0", | |
| "kurento-jsonrpc": "5.1.3", | |
| "minimist": "1.2.0", | |
| "promise": "7.0.2", | |
| "promisecallback": "0.0.4", | |
| "reconnect-ws": "git://github.com/kurentoforks/reconnect-ws.git#7fb7020e3ca1ffeaaa8bb4ddd690cf28c8d02a2b" | |
| }, | |
| "dependencies": { | |
| "async": { | |
| "version": "1.2.1", | |
| "resolved": "https://registry.npmjs.org/async/-/async-1.2.1.tgz", | |
| "integrity": "sha1-pIFqF81f9RbfosdpikUzabl5DeA=" | |
| }, | |
| "error-tojson": { | |
| "version": "0.0.1", | |
| "resolved": "https://registry.npmjs.org/error-tojson/-/error-tojson-0.0.1.tgz", | |
| "integrity": "sha1-p7GqlP/ADpB4wuuibiBL2Hzyy7k=" | |
| }, | |
| "es6-promise": { | |
| "version": "3.3.1", | |
| "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz", | |
| "integrity": "sha1-oIzd6EzNvzTQJ6FFG8kdS80ophM=" | |
| }, | |
| "extend": { | |
| "version": "2.0.1", | |
| "resolved": "https://registry.npmjs.org/extend/-/extend-2.0.1.tgz", | |
| "integrity": "sha1-HugBBonnOV/5RIJByYZSvHWagmA=" | |
| }, | |
| "inherits": { | |
| "version": "2.0.3", | |
| "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", | |
| "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" | |
| }, | |
| "kurento-client-core": { | |
| "version": "6.6.0", | |
| "resolved": "https://registry.npmjs.org/kurento-client-core/-/kurento-client-core-6.6.0.tgz", | |
| "integrity": "sha1-VQ84XmEX31mNhyrR9TFjwG1Iq28=" | |
| }, | |
| "kurento-client-elements": { | |
| "version": "6.6.0", | |
| "resolved": "https://registry.npmjs.org/kurento-client-elements/-/kurento-client-elements-6.6.0.tgz", | |
| "integrity": "sha1-rDYy31NeR989LZ6uxejZpyMYF24=" | |
| }, | |
| "kurento-client-filters": { | |
| "version": "6.6.0", | |
| "resolved": "https://registry.npmjs.org/kurento-client-filters/-/kurento-client-filters-6.6.0.tgz", | |
| "integrity": "sha1-r1F+U03DKbERPkmVua823IC6lWg=" | |
| }, | |
| "kurento-jsonrpc": { | |
| "version": "5.1.3", | |
| "resolved": "https://registry.npmjs.org/kurento-jsonrpc/-/kurento-jsonrpc-5.1.3.tgz", | |
| "integrity": "sha1-zguXfiZ2qHjtLARkyCVCWFdCIDA=", | |
| "requires": { | |
| "inherits": "2.0.3", | |
| "sockjs-client": "1.1.1", | |
| "ws": "0.4.32" | |
| }, | |
| "dependencies": { | |
| "sockjs-client": { | |
| "version": "1.1.1", | |
| "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.1.1.tgz", | |
| "integrity": "sha1-KEhD6al4TXxHSxVxsyQPyp3aS7A=", | |
| "requires": { | |
| "debug": "2.6.9", | |
| "eventsource": "0.1.6", | |
| "faye-websocket": "0.11.1", | |
| "inherits": "2.0.3", | |
| "json3": "3.3.2", | |
| "url-parse": "1.2.0" | |
| }, | |
| "dependencies": { | |
| "debug": { | |
| "version": "2.6.9", | |
| "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", | |
| "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", | |
| "requires": { | |
| "ms": "2.0.0" | |
| }, | |
| "dependencies": { | |
| "ms": { | |
| "version": "2.0.0", | |
| "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", | |
| "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" | |
| } | |
| } | |
| }, | |
| "eventsource": { | |
| "version": "0.1.6", | |
| "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-0.1.6.tgz", | |
| "integrity": "sha1-Cs7ehJ7X3RzMMsgRuxG5RNTykjI=", | |
| "requires": { | |
| "original": "1.0.0" | |
| }, | |
| "dependencies": { | |
| "original": { | |
| "version": "1.0.0", | |
| "resolved": "https://registry.npmjs.org/original/-/original-1.0.0.tgz", | |
| "integrity": "sha1-kUf5P6FpbQS+YeAb1QuurKZWvTs=", | |
| "requires": { | |
| "url-parse": "1.0.5" | |
| }, | |
| "dependencies": { | |
| "url-parse": { | |
| "version": "1.0.5", | |
| "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.0.5.tgz", | |
| "integrity": "sha1-CFSGBCKv3P7+tsllxmLUgAFpkns=", | |
| "requires": { | |
| "querystringify": "0.0.4", | |
| "requires-port": "1.0.0" | |
| }, | |
| "dependencies": { | |
| "querystringify": { | |
| "version": "0.0.4", | |
| "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-0.0.4.tgz", | |
| "integrity": "sha1-DPf4T5Rj/wrlHExLFC2VvjdyTZw=" | |
| }, | |
| "requires-port": { | |
| "version": "1.0.0", | |
| "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", | |
| "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=" | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "faye-websocket": { | |
| "version": "0.11.1", | |
| "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.1.tgz", | |
| "integrity": "sha1-8O/hjE9W5PQK/H4Gxxn9XuYYjzg=", | |
| "requires": { | |
| "websocket-driver": "0.7.0" | |
| }, | |
| "dependencies": { | |
| "websocket-driver": { | |
| "version": "0.7.0", | |
| "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.0.tgz", | |
| "integrity": "sha1-DK+dLXVdk67gSdS90NP+LMoqJOs=", | |
| "requires": { | |
| "http-parser-js": "0.4.9", | |
| "websocket-extensions": "0.1.3" | |
| }, | |
| "dependencies": { | |
| "http-parser-js": { | |
| "version": "0.4.9", | |
| "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.9.tgz", | |
| "integrity": "sha1-6hoE+2St/wJC6ZdPKX3Uw8rSceE=" | |
| }, | |
| "websocket-extensions": { | |
| "version": "0.1.3", | |
| "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz", | |
| "integrity": "sha1-XS/yKXcAPsaHpLhwc9+7rBRszyk=" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "json3": { | |
| "version": "3.3.2", | |
| "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", | |
| "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=" | |
| }, | |
| "url-parse": { | |
| "version": "1.2.0", | |
| "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.2.0.tgz", | |
| "integrity": "sha1-OhnoqqbQI93SfcxEy0/I9/7COYY=", | |
| "requires": { | |
| "querystringify": "1.0.0", | |
| "requires-port": "1.0.0" | |
| }, | |
| "dependencies": { | |
| "querystringify": { | |
| "version": "1.0.0", | |
| "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-1.0.0.tgz", | |
| "integrity": "sha1-YoYkIRLFtxL6ZU5SZlK/ahP/Bcs=" | |
| }, | |
| "requires-port": { | |
| "version": "1.0.0", | |
| "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", | |
| "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "ws": { | |
| "version": "0.4.32", | |
| "resolved": "https://registry.npmjs.org/ws/-/ws-0.4.32.tgz", | |
| "integrity": "sha1-eHphVEFPPJntg8V3IVOyD+sM7DI=", | |
| "requires": { | |
| "commander": "2.1.0", | |
| "nan": "1.0.0", | |
| "options": "0.0.6", | |
| "tinycolor": "0.0.1" | |
| }, | |
| "dependencies": { | |
| "commander": { | |
| "version": "2.1.0", | |
| "resolved": "https://registry.npmjs.org/commander/-/commander-2.1.0.tgz", | |
| "integrity": "sha1-0SG7roYNmZKj1Re6lvVliOR8Z4E=" | |
| }, | |
| "nan": { | |
| "version": "1.0.0", | |
| "resolved": "https://registry.npmjs.org/nan/-/nan-1.0.0.tgz", | |
| "integrity": "sha1-riT4hQgY1mL8q1rPfzuVv6oszzg=" | |
| }, | |
| "options": { | |
| "version": "0.0.6", | |
| "resolved": "https://registry.npmjs.org/options/-/options-0.0.6.tgz", | |
| "integrity": "sha1-7CLTEoBrtT5zF3Pnza788cZDEo8=" | |
| }, | |
| "tinycolor": { | |
| "version": "0.0.1", | |
| "resolved": "https://registry.npmjs.org/tinycolor/-/tinycolor-0.0.1.tgz", | |
| "integrity": "sha1-MgtaUtg6u1l42Bo+iH1K77FaYWQ=" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "promise": { | |
| "version": "7.0.2", | |
| "resolved": "https://registry.npmjs.org/promise/-/promise-7.0.2.tgz", | |
| "integrity": "sha1-rO8B/BZ1DUn9W1uNiFNHlZEPxiU=", | |
| "requires": { | |
| "asap": "2.0.6" | |
| }, | |
| "dependencies": { | |
| "asap": { | |
| "version": "2.0.6", | |
| "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", | |
| "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" | |
| } | |
| } | |
| }, | |
| "promisecallback": { | |
| "version": "0.0.4", | |
| "resolved": "https://registry.npmjs.org/promisecallback/-/promisecallback-0.0.4.tgz", | |
| "integrity": "sha1-uTTxPATkQ2IrTWbeTkLqX2zmbnQ=" | |
| }, | |
| "reconnect-ws": { | |
| "version": "git://github.com/kurentoforks/reconnect-ws.git#7fb7020e3ca1ffeaaa8bb4ddd690cf28c8d02a2b", | |
| "requires": { | |
| "reconnect-core": "git://github.com/kurentoforks/reconnect-core.git#921d43e91578abb2fb2613f585c010c1939cf734", | |
| "websocket-stream": "0.5.1" | |
| }, | |
| "dependencies": { | |
| "reconnect-core": { | |
| "version": "git://github.com/kurentoforks/reconnect-core.git#921d43e91578abb2fb2613f585c010c1939cf734", | |
| "requires": { | |
| "backoff": "2.3.0" | |
| }, | |
| "dependencies": { | |
| "backoff": { | |
| "version": "2.3.0", | |
| "resolved": "https://registry.npmjs.org/backoff/-/backoff-2.3.0.tgz", | |
| "integrity": "sha1-7nx+OAk/kuRyhZ22NedlJFT8Ieo=" | |
| } | |
| } | |
| }, | |
| "websocket-stream": { | |
| "version": "0.5.1", | |
| "resolved": "https://registry.npmjs.org/websocket-stream/-/websocket-stream-0.5.1.tgz", | |
| "integrity": "sha1-YizR8FZvuEzgpNb4VFJvPcTXDkg=", | |
| "requires": { | |
| "isbuffer": "0.0.0", | |
| "through": "2.3.8", | |
| "ws": "0.4.32" | |
| }, | |
| "dependencies": { | |
| "isbuffer": { | |
| "version": "0.0.0", | |
| "resolved": "https://registry.npmjs.org/isbuffer/-/isbuffer-0.0.0.tgz", | |
| "integrity": "sha1-OMFG2d9Si4v5sHAcPUPPEt8/w5s=" | |
| }, | |
| "through": { | |
| "version": "2.3.8", | |
| "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", | |
| "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" | |
| }, | |
| "ws": { | |
| "version": "0.4.32", | |
| "resolved": "https://registry.npmjs.org/ws/-/ws-0.4.32.tgz", | |
| "integrity": "sha1-eHphVEFPPJntg8V3IVOyD+sM7DI=", | |
| "requires": { | |
| "commander": "2.1.0", | |
| "nan": "1.0.0", | |
| "options": "0.0.6", | |
| "tinycolor": "0.0.1" | |
| }, | |
| "dependencies": { | |
| "commander": { | |
| "version": "2.1.0", | |
| "resolved": "https://registry.npmjs.org/commander/-/commander-2.1.0.tgz", | |
| "integrity": "sha1-0SG7roYNmZKj1Re6lvVliOR8Z4E=" | |
| }, | |
| "nan": { | |
| "version": "1.0.0", | |
| "resolved": "https://registry.npmjs.org/nan/-/nan-1.0.0.tgz", | |
| "integrity": "sha1-riT4hQgY1mL8q1rPfzuVv6oszzg=" | |
| }, | |
| "options": { | |
| "version": "0.0.6", | |
| "resolved": "https://registry.npmjs.org/options/-/options-0.0.6.tgz", | |
| "integrity": "sha1-7CLTEoBrtT5zF3Pnza788cZDEo8=" | |
| }, | |
| "tinycolor": { | |
| "version": "0.0.1", | |
| "resolved": "https://registry.npmjs.org/tinycolor/-/tinycolor-0.0.1.tgz", | |
| "integrity": "sha1-MgtaUtg6u1l42Bo+iH1K77FaYWQ=" | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "minimist": { | |
| "version": "1.2.0", | |
| "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", | |
| "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" | |
| }, | |
| "uuid": { | |
| "version": "3.1.0", | |
| "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz", | |
| "integrity": "sha1-PdPT55Crwk17DToDT/q6vijrvAQ=" | |
| }, | |
| "ws": { | |
| "version": "1.0.1", | |
| "resolved": "https://registry.npmjs.org/ws/-/ws-1.0.1.tgz", | |
| "integrity": "sha1-fQsqLljN3YGQOcKcneZQReGzEOk=", | |
| "requires": { | |
| "options": "0.0.6", | |
| "ultron": "1.0.2" | |
| }, | |
| "dependencies": { | |
| "options": { | |
| "version": "0.0.6", | |
| "resolved": "https://registry.npmjs.org/options/-/options-0.0.6.tgz", | |
| "integrity": "sha1-7CLTEoBrtT5zF3Pnza788cZDEo8=" | |
| }, | |
| "ultron": { | |
| "version": "1.0.2", | |
| "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.0.2.tgz", | |
| "integrity": "sha1-rOEWq1V80Zc4ak6I9GhTeMiy5Po=" | |
| } | |
| } | |
| } | |
| } | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| { | |
| "name": "kurento-hello-world", | |
| "version": "6.6.1", | |
| "private": true, | |
| "dependencies": { | |
| "cookie-parser": "^1.3.5", | |
| "express": "~4.12.4", | |
| "express-session": "~1.10.3", | |
| "minimist": "^1.1.1", | |
| "ws": "~1.0.1", | |
| "kurento-client": "6.6.0", | |
| "uuid": "*" | |
| }, | |
| "devDependencies": { | |
| "bower": "^1.4.1" | |
| } | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| /* | |
| * (C) Copyright 2014-2015 Kurento (http://kurento.org/) | |
| * | |
| * Licensed under the Apache License, Version 2.0 (the "License"); | |
| * you may not use this file except in compliance with the License. | |
| * You may obtain a copy of the License at | |
| * | |
| * http://www.apache.org/licenses/LICENSE-2.0 | |
| * | |
| * Unless required by applicable law or agreed to in writing, software | |
| * distributed under the License is distributed on an "AS IS" BASIS, | |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| * See the License for the specific language governing permissions and | |
| * limitations under the License. | |
| * | |
| */ | |
| var path = require('path'); | |
| var url = require('url'); | |
| var cookieParser = require('cookie-parser') | |
| var express = require('express'); | |
| var session = require('express-session') | |
| var minimist = require('minimist'); | |
| var ws = require('ws'); | |
| var kurento = require('kurento-client'); | |
| var fs = require('fs'); | |
| var https = require('https'); | |
| var argv = minimist(process.argv.slice(1), { | |
| default: { | |
| ws_uri: 'ws://127.0.0.1:8888/kurento' | |
| } | |
| }); | |
| /* | |
| * Definition of global variables. | |
| */ | |
| var kurentoClient = null; | |
| var serverManager = null; | |
| var mediaPipelines = {}; | |
| var endpointsCount = 0; | |
| function formatFloat(n) { | |
| return +n.toFixed(3); | |
| } | |
| getKurentoClient(function (error, kurentoClient) { | |
| kurentoClient.getServerManager(function (error, server) { | |
| if (error) { | |
| console.log("getServerManager failed: " + error); | |
| return; | |
| } | |
| serverManager = server; | |
| getInfo(serverManager, function (error) { | |
| if (error) { | |
| return; | |
| } | |
| // console.log(JSON.stringify(mediaPipelines, null, 4)); | |
| // process.exit(0); | |
| var staleEndpoints = 0; | |
| var stalePipelines = 0; | |
| var staleRtp = 0; | |
| var staleWebrtc = 0; | |
| var info = { "audio": {}, "video": {} }; | |
| ["audio", "video"].forEach(function(media) { | |
| info[media]["duplex"] = 0; | |
| info[media]["rtp"] = 0; | |
| info[media]["webrtc"] = 0; | |
| ["inbound", "outbound"].forEach(function(direction) { | |
| info[media][direction] = 0; | |
| info[media][direction + "PacketsLostRateList"] = []; | |
| info[media][direction + "SumPacketsLost"] = 0; | |
| info[media][direction + "AvgPacketsLostRate"] = 0; | |
| info[media][direction + "MaxPacketsLostRate"] = 0; | |
| info[media][direction + "JitterList"] = []; | |
| info[media][direction + "AvgJitter"] = 0; | |
| info[media][direction + "MaxJitter"] = 0; | |
| }); | |
| }); | |
| for (var pipelineId in mediaPipelines) { | |
| var pipeline = mediaPipelines[pipelineId]; | |
| var itemStaleEndpoint = 0; | |
| for (var mediaEndpointId in pipeline.endpoints) { | |
| var mediaEndpoint = pipeline.endpoints[mediaEndpointId]; | |
| var rtp = false; | |
| var webrtc = false; | |
| if (mediaEndpointId.indexOf("kurento.RtpEndpoint") != -1) { | |
| rtp = true; | |
| } else if (mediaEndpointId.indexOf("kurento.WebRtcEndpoint") != -1) { | |
| webrtc = true; | |
| } | |
| var inbound = false; | |
| var outbound = false; | |
| ["audio", "video"].every(function(media, index) { | |
| for (var key in mediaEndpoint[media].stats) { | |
| if (mediaEndpoint[media].stats[key].type == "outboundrtp" && mediaEndpoint[media].stats[key].bytesSent > 0) { | |
| outbound = true; | |
| if (mediaEndpoint[media].stats[key].hasOwnProperty("packetsLost")) { | |
| info[media].outboundSumPacketsLost += mediaEndpoint[media].stats[key].packetsLost; | |
| if (mediaEndpoint[media].stats[key].hasOwnProperty("packetsSent")) { | |
| info[media].outboundPacketsLostRateList.push(mediaEndpoint[media].stats[key].packetsLost / (mediaEndpoint[media].stats[key].packetsLost + mediaEndpoint[media].stats[key].packetsSent)); | |
| } | |
| } | |
| if (mediaEndpoint[media].stats[key].hasOwnProperty("jitter")) { | |
| info[media].outboundJitterList.push(mediaEndpoint[media].stats[key].jitter); | |
| } | |
| } | |
| if (mediaEndpoint[media].stats[key].type == "inboundrtp" && mediaEndpoint[media].stats[key].bytesReceived > 0) { | |
| inbound = true; | |
| if (mediaEndpoint[media].stats[key].hasOwnProperty("packetsLost")) { | |
| info[media].inboundSumPacketsLost += mediaEndpoint[media].stats[key].packetsLost; | |
| if (mediaEndpoint[media].stats[key].hasOwnProperty("packetsReceived")) { | |
| info[media].inboundPacketsLostRateList.push(mediaEndpoint[media].stats[key].packetsLost / (mediaEndpoint[media].stats[key].packetsLost + mediaEndpoint[media].stats[key].packetsReceived)); | |
| } | |
| } | |
| if (mediaEndpoint[media].stats[key].hasOwnProperty("jitter")) { | |
| info[media].inboundJitterList.push(mediaEndpoint[media].stats[key].jitter); | |
| } | |
| } | |
| } | |
| if (inbound) { | |
| if (outbound) { | |
| info[media].duplex++; | |
| } else { | |
| info[media].inbound++; | |
| } | |
| } else { | |
| if (outbound) { | |
| info[media].outbound++; | |
| } else { | |
| } | |
| } | |
| if (inbound || outbound) { | |
| if (rtp) { | |
| info[media].rtp++; | |
| } else if (webrtc) { | |
| info[media].webrtc++; | |
| } | |
| return false; | |
| } | |
| return true; | |
| }) | |
| if (! inbound && ! outbound) { | |
| if (rtp) { | |
| staleRtp++; | |
| } else if (webrtc) { | |
| staleWebrtc++; | |
| } | |
| itemStaleEndpoint++; | |
| } | |
| // if (mediaEndpoint.stale == true) { | |
| // itemStaleEndpoint++; | |
| // } | |
| } | |
| staleEndpoints += itemStaleEndpoint; | |
| if (Object.keys(pipeline.endpoints).length == itemStaleEndpoint) { | |
| stalePipelines++; | |
| } | |
| } | |
| // console.log(JSON.stringify(info, null, 4)); | |
| var output = "pipelines: " + Object.keys(mediaPipelines).length | |
| + ", endpoints: " + endpointsCount | |
| + ", stale_pipelines: " + stalePipelines | |
| + ", stale_endpoints: " + staleEndpoints | |
| + ", stale_endpoints_rtp: " + staleRtp | |
| + ", stale_endpoints_webrtc: " + staleWebrtc; | |
| ["audio", "video"].forEach(function(media) { | |
| output += "\n" + media + "_endpoints: " + (info[media].inbound + info[media].outbound + info[media].duplex); | |
| output += ", " + media + "_duplex_endpoints: " + info[media].duplex; | |
| output += ", " + media + "_inbound_endpoints: " + info[media].inbound; | |
| if (info[media].inboundPacketsLostRateList.length > 0) { | |
| let inboundSumPacketsLostRate = info[media].inboundPacketsLostRateList.reduce((previous, current) => current += previous); | |
| let inboundAvgPacketsLostRate = info[media].inboundSumPacketsLostRate / info[media].inboundPacketsLostRateList.length; | |
| let inboundMaxPacketsLostRate = Math.max.apply(null, info[media].inboundPacketsLostRateList); | |
| output += ", " + media + "_inbound_avg_packet_loss_rate: " + formatFloat(info[media].inboundAvgPacketsLostRate) | |
| + ", " + media + "_inbound_max_packet_loss_rate: " + formatFloat(info[media].inboundMaxPacketsLostRate) | |
| + ", " + media + "_inbound_sum_packet_loss: " + info[media].inboundSumPacketsLost; | |
| } | |
| if (info[media].inboundJitterList.length > 0) { | |
| let inboundSumJitter = info[media].inboundJitterList.reduce((previous, current) => current += previous); | |
| let inboundAvgJitter = info[media].inboundSumJitter / info[media].inboundJitterList.length; | |
| let inboundMaxJitter = Math.max.apply(null, info[media].inboundJitterList); | |
| output += ", " + media + "_inbound_avg_jitter: " + formatFloat(info[media].inboundAvgJitter) | |
| + ", " + media + "_inbound_max_jitter: " + formatFloat(info[media].inboundMaxJitter); | |
| } | |
| output += ", " + media + "_outbound_endpoints: " + info[media].outbound; | |
| if (info[media].outboundPacketsLostRateList.length > 0) { | |
| let outboundSumPacketsLostRate = info[media].outboundPacketsLostRateList.reduce((previous, current) => current += previous); | |
| let outboundAvgPacketsLostRate = info[media].outboundSumPacketsLostRate / info[media].outboundPacketsLostRateList.length; | |
| let outboundMaxPacketsLostRate = Math.max.apply(null, info[media].outboundPacketsLostRateList); | |
| output += ", " + media + "_outbound_avg_packet_loss_rate: " + formatFloat(info[media].outboundAvgPacketsLostRate) | |
| + ", " + media + "_outbound_max_packet_loss_rate: " + formatFloat(info[media].outboundMaxPacketsLostRate) | |
| + ", " + media + "_outbound_sum_packet_loss: " + info[media].outboundSumPacketsLost; | |
| } | |
| if (info[media].outboundJitterList.length > 0) { | |
| let outboundSumJitter = info[media].outboundJitterList.reduce((previous, current) => current += previous); | |
| let outboundAvgJitter = info[media].outboundSumJitter / info[media].outboundJitterList.length; | |
| let outboundMaxJitter = Math.max.apply(null, info[media].outboundJitterList); | |
| output += ", " + media + "_outbound_avg_jitter: " + formatFloat(info[media].outboundAvgJitter) | |
| + ", " + media + "_outbound_max_jitter: " + formatFloat(info[media].outboundMaxJitter); | |
| } | |
| output += ", " + media + "_rtp_endpoints: " + info[media].rtp; | |
| output += ", " + media + "_webrtc_endpoints: " + info[media].webrtc; | |
| }); | |
| console.log(output); | |
| process.exit(0); | |
| }); | |
| }); | |
| }); | |
| /* | |
| * Definition of functions | |
| */ | |
| // Recover kurentoClient for the first time. | |
| function getKurentoClient(callback) { | |
| if (kurentoClient !== null) { | |
| return callback(null, kurentoClient); | |
| } | |
| kurento(argv.ws_uri, function (error, _kurentoClient) { | |
| if (error) { | |
| console.log("Could not find media server at address " + argv.ws_uri); | |
| return callback("Could not find media server at address" + argv.ws_uri | |
| + ". Exiting with error " + error); | |
| } | |
| kurentoClient = _kurentoClient; | |
| callback(null, kurentoClient); | |
| }); | |
| } | |
| function getInfo(server, callback) { | |
| if (!server) { | |
| return callback('error - failed to find server'); | |
| } | |
| server.getInfo(function (error, serverInfo) { | |
| if (error) { | |
| return callback(error); | |
| } | |
| getPipelinesInfo(server, callback); | |
| }) | |
| } | |
| function getAllFuncs(obj) { | |
| var props = []; | |
| do { | |
| props = props.concat(Object.getOwnPropertyNames(obj)); | |
| } while (obj = Object.getPrototypeOf(obj)); | |
| return props.filter(function(elem, pos) { | |
| return props.indexOf(elem) == pos; | |
| }).sort(); | |
| } | |
| function getPipelinesInfo(server, callback) { | |
| if (!server) { | |
| return callback('error - failed to find server'); | |
| } | |
| server.getPipelines(function (error, pipelines) { | |
| if (error) { | |
| return callback(error); | |
| } | |
| if (pipelines && (pipelines.length < 1)) { | |
| return callback(null); | |
| } | |
| var counter = 0; | |
| var promises = []; | |
| var firstPromises = []; | |
| pipelines.forEach(function (p, index, array) { | |
| mediaPipelines[p.id] = { "endpoints": {} }; | |
| firstPromises.push(setLatencyStats(p, mediaPipelines[p.id])); | |
| firstPromises.push(getCreationTime(p, mediaPipelines[p.id])); | |
| // console.log("===> " + JSON.stringify(getAllFuncs(p), null, 4)); | |
| // console.log("===> " + p.getCreationTime()); | |
| p.getChildren(function (error, elements) { | |
| endpointsCount += elements.length; | |
| mediaPipelines[p.id].hasPlayer = elements.length > 1; | |
| elements.forEach(function (me, index, array) { | |
| mediaPipelines[p.id].endpoints[me.id] = { "video": {}, "audio": {} }; | |
| promises.push(getCreationTime(me, mediaPipelines[p.id].endpoints[me.id])); | |
| promises.push(isFlowingIn(me, "VIDEO", mediaPipelines[p.id].endpoints[me.id].video)); | |
| promises.push(isFlowingIn(me, "AUDIO", mediaPipelines[p.id].endpoints[me.id].audio)); | |
| promises.push(isFlowingOut(me, "VIDEO", mediaPipelines[p.id].endpoints[me.id].video)); | |
| promises.push(isFlowingOut(me, "AUDIO", mediaPipelines[p.id].endpoints[me.id].audio)); | |
| promises.push(getStats(me, "VIDEO", mediaPipelines[p.id].endpoints[me.id].video)); | |
| promises.push(getStats(me, "AUDIO", mediaPipelines[p.id].endpoints[me.id].audio)); | |
| promises.push(getMediaState(me, mediaPipelines[p.id].endpoints[me.id])); | |
| }) | |
| counter++; | |
| if (counter == pipelines.length) { | |
| var rejectPromise = function(error) { | |
| return callback(error); | |
| } | |
| Promise.all(firstPromises).then(function(value) { | |
| Promise.all(promises).then(function(value) { | |
| return callback(); | |
| }, rejectPromise); | |
| }, rejectPromise); | |
| } | |
| }) | |
| }) | |
| }) | |
| } | |
| var setLatencyStats = function(pipeline, obj) { | |
| var promise = new Promise(function(resolve, reject) { | |
| pipeline.setLatencyStats(true, function (error) { | |
| if (error) { | |
| reject(error); | |
| } else { | |
| resolve(); | |
| } | |
| }); | |
| }); | |
| return promise; | |
| } | |
| var getCreationTime = function(element, obj) { | |
| var promise = new Promise(function(resolve, reject) { | |
| element.getCreationTime(function (error, result) { | |
| if (error) { | |
| reject(error); | |
| } else { | |
| // var t = new Date(result * 1000); | |
| // var formatted = t.toISOString(); | |
| // console.log(formatted); | |
| obj.creationTime = result; | |
| resolve(); | |
| } | |
| }); | |
| }); | |
| return promise; | |
| } | |
| var isFlowingIn = function(mediaElement, media, obj) { | |
| var promise = new Promise(function(resolve, reject) { | |
| mediaElement.isMediaFlowingIn(media, function (error, result) { | |
| if (error) { | |
| reject(error); | |
| } else { | |
| obj.mediaFlowingIn = result; | |
| resolve(); | |
| } | |
| }); | |
| }); | |
| return promise; | |
| } | |
| var isFlowingOut = function(mediaElement, media, obj) { | |
| var promise = new Promise(function(resolve, reject) { | |
| mediaElement.isMediaFlowingOut(media, function (error, result) { | |
| if (error) { | |
| reject(error); | |
| } else { | |
| obj.mediaFlowingOut = result; | |
| resolve(); | |
| } | |
| }); | |
| }); | |
| return promise; | |
| } | |
| var getStats = function(mediaElement, media, obj) { | |
| var promise = new Promise(function(resolve, reject) { | |
| mediaElement.getStats(media, function (error, result) { | |
| if (error) { | |
| reject(error); | |
| } else { | |
| obj.stats = result; | |
| resolve(); | |
| } | |
| }); | |
| }); | |
| return promise; | |
| } | |
| var getMediaState = function(mediaElement, obj) { | |
| var promise = new Promise(function(resolve, reject) { | |
| mediaElement.getMediaState(function (error, result) { | |
| if (error) { | |
| reject(error); | |
| } else { | |
| obj.stale = result == "DISCONNECTED"; | |
| resolve(); | |
| } | |
| }); | |
| }); | |
| return promise; | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment