UNPKG

api-facebook

Version:

this zero-dependency package will provide a javascript-client for facebook's web-apis, with a working web-demo

394 lines (311 loc) 21.6 kB
# swgg-facebook this zero-dependency package will provide a javascript-client for facebook's web-apis, with a working web-demo # live web demo - [https://kaizhu256.github.io/node-swgg-facebook/build..beta..travis-ci.org/app/](https://kaizhu256.github.io/node-swgg-facebook/build..beta..travis-ci.org/app) [![screenshot](https://kaizhu256.github.io/node-swgg-facebook/build/screenshot.deployGithub.browser.%252Fnode-swgg-facebook%252Fbuild%252Fapp.png)](https://kaizhu256.github.io/node-swgg-facebook/build..beta..travis-ci.org/app) [![travis-ci.org build-status](https://api.travis-ci.org/kaizhu256/node-swgg-facebook.svg)](https://travis-ci.org/kaizhu256/node-swgg-facebook) [![coverage](https://kaizhu256.github.io/node-swgg-facebook/build/coverage.badge.svg)](https://kaizhu256.github.io/node-swgg-facebook/build/coverage.html/index.html) [![snyk.io vulnerabilities](https://snyk.io/test/github/kaizhu256/node-swgg-facebook/badge.svg)](https://snyk.io/test/github/kaizhu256/node-swgg-facebook) [![NPM](https://nodei.co/npm/swgg-facebook.png?downloads=true)](https://www.npmjs.com/package/swgg-facebook) [![build commit status](https://kaizhu256.github.io/node-swgg-facebook/build/build.badge.svg)](https://travis-ci.org/kaizhu256/node-swgg-facebook) | git-branch : | [master](https://github.com/kaizhu256/node-swgg-facebook/tree/master) | [beta](https://github.com/kaizhu256/node-swgg-facebook/tree/beta) | [alpha](https://github.com/kaizhu256/node-swgg-facebook/tree/alpha)| |--:|:--|:--|:--| | test-server-github : | [![github.com test-server](https://kaizhu256.github.io/node-swgg-facebook/GitHub-Mark-32px.png)](https://kaizhu256.github.io/node-swgg-facebook/build..master..travis-ci.org/app) | [![github.com test-server](https://kaizhu256.github.io/node-swgg-facebook/GitHub-Mark-32px.png)](https://kaizhu256.github.io/node-swgg-facebook/build..beta..travis-ci.org/app) | [![github.com test-server](https://kaizhu256.github.io/node-swgg-facebook/GitHub-Mark-32px.png)](https://kaizhu256.github.io/node-swgg-facebook/build..alpha..travis-ci.org/app)| | test-server-heroku : | [![heroku.com test-server](https://kaizhu256.github.io/node-swgg-facebook/heroku-logo.75x25.png)](https://h1-swgg-facebook-master.herokuapp.com) | [![heroku.com test-server](https://kaizhu256.github.io/node-swgg-facebook/heroku-logo.75x25.png)](https://h1-swgg-facebook-beta.herokuapp.com) | [![heroku.com test-server](https://kaizhu256.github.io/node-swgg-facebook/heroku-logo.75x25.png)](https://h1-swgg-facebook-alpha.herokuapp.com)| | test-report : | [![test-report](https://kaizhu256.github.io/node-swgg-facebook/build..master..travis-ci.org/test-report.badge.svg)](https://kaizhu256.github.io/node-swgg-facebook/build..master..travis-ci.org/test-report.html) | [![test-report](https://kaizhu256.github.io/node-swgg-facebook/build..beta..travis-ci.org/test-report.badge.svg)](https://kaizhu256.github.io/node-swgg-facebook/build..beta..travis-ci.org/test-report.html) | [![test-report](https://kaizhu256.github.io/node-swgg-facebook/build..alpha..travis-ci.org/test-report.badge.svg)](https://kaizhu256.github.io/node-swgg-facebook/build..alpha..travis-ci.org/test-report.html)| | coverage : | [![coverage](https://kaizhu256.github.io/node-swgg-facebook/build..master..travis-ci.org/coverage.badge.svg)](https://kaizhu256.github.io/node-swgg-facebook/build..master..travis-ci.org/coverage.html/index.html) | [![coverage](https://kaizhu256.github.io/node-swgg-facebook/build..beta..travis-ci.org/coverage.badge.svg)](https://kaizhu256.github.io/node-swgg-facebook/build..beta..travis-ci.org/coverage.html/index.html) | [![coverage](https://kaizhu256.github.io/node-swgg-facebook/build..alpha..travis-ci.org/coverage.badge.svg)](https://kaizhu256.github.io/node-swgg-facebook/build..alpha..travis-ci.org/coverage.html/index.html)| | build-artifacts : | [![build-artifacts](https://kaizhu256.github.io/node-swgg-facebook/glyphicons_144_folder_open.png)](https://github.com/kaizhu256/node-swgg-facebook/tree/gh-pages/build..master..travis-ci.org) | [![build-artifacts](https://kaizhu256.github.io/node-swgg-facebook/glyphicons_144_folder_open.png)](https://github.com/kaizhu256/node-swgg-facebook/tree/gh-pages/build..beta..travis-ci.org) | [![build-artifacts](https://kaizhu256.github.io/node-swgg-facebook/glyphicons_144_folder_open.png)](https://github.com/kaizhu256/node-swgg-facebook/tree/gh-pages/build..alpha..travis-ci.org)| [![npmPackageListing](https://kaizhu256.github.io/node-swgg-facebook/build/screenshot.npmPackageListing.svg)](https://github.com/kaizhu256/node-swgg-facebook) ![npmPackageDependencyTree](https://kaizhu256.github.io/node-swgg-facebook/build/screenshot.npmPackageDependencyTree.svg) # table of contents 1. [cdn download](#cdn-download) 1. [documentation](#documentation) 1. [quickstart standalone app](#quickstart-standalone-app) 1. [quickstart example.js](#quickstart-examplejs) 1. [extra screenshots](#extra-screenshots) 1. [package.json](#packagejson) 1. [changelog of last 50 commits](#changelog-of-last-50-commits) 1. [internal build script](#internal-build-script) 1. [misc](#misc) # cdn download - [https://kaizhu256.github.io/node-swgg-facebook/build..beta..travis-ci.org/app/assets.swgg_facebook.js](https://kaizhu256.github.io/node-swgg-facebook/build..beta..travis-ci.org/app/assets.swgg_facebook.js) - [https://kaizhu256.github.io/node-swgg-facebook/build..beta..travis-ci.org/app/assets.swgg.swagger.json](https://kaizhu256.github.io/node-swgg-facebook/build..beta..travis-ci.org/app/assets.swgg.swagger.json) # documentation #### cli help ![screenshot](https://kaizhu256.github.io/node-swgg-facebook/build/screenshot.npmPackageCliHelp.svg) #### api doc - [https://kaizhu256.github.io/node-swgg-facebook/build..beta..travis-ci.org/apidoc.html](https://kaizhu256.github.io/node-swgg-facebook/build..beta..travis-ci.org/apidoc.html) [![apidoc](https://kaizhu256.github.io/node-swgg-facebook/build/screenshot.buildCi.browser.%252Ftmp%252Fbuild%252Fapidoc.html.png)](https://kaizhu256.github.io/node-swgg-facebook/build..beta..travis-ci.org/apidoc.html) #### todo - continue adding extra facebook web-api's - none #### changelog for v2017.11.6 - npm publish 2017.11.6 - revert from 2-space-indent to 4-space-indent - add api DELETE /{facebook_graph_version}/{test-user-id}#requireTestUserId - add api POST /{facebook_graph_version}/{test-user-id}#requireTestUserId - add api POST /{facebook_graph_version}/{achievement-id}#requireAchievementId - add api GET /{facebook_graph_version}/{user-id}/achievements - none #### this package requires - darwin or linux os # quickstart standalone app #### to run this example, follow the instruction in the script below - [assets.app.js](https://kaizhu256.github.io/node-swgg-facebook/build..beta..travis-ci.org/app/assets.app.js) ```shell # example.sh # this shell script will download and run a web-demo of swgg-facebook as a standalone app # 1. download standalone app curl -O https://kaizhu256.github.io/node-swgg-facebook/build..beta..travis-ci.org/app/assets.app.js # 2. run standalone app node ./assets.app.js # 3. open a browser to http://127.0.0.1:8081 and play with the web-demo # 4. edit file assets.app.js to suit your needs ``` #### output from browser [![screenshot](https://kaizhu256.github.io/node-swgg-facebook/build/screenshot.testExampleSh.browser.%252F.png)](https://kaizhu256.github.io/node-swgg-facebook/build/app/assets.example.html) #### output from shell ![screenshot](https://kaizhu256.github.io/node-swgg-facebook/build/screenshot.testExampleSh.svg) # quickstart example.js [![screenshot](https://kaizhu256.github.io/node-swgg-facebook/build/screenshot.testExampleJs.browser.%252F.png)](https://kaizhu256.github.io/node-swgg-facebook/build/app/assets.example.html) #### to run this example, follow the instruction in the script below - [example.js](https://kaizhu256.github.io/node-swgg-facebook/build..beta..travis-ci.org/example.js) ```javascript /* example.js this script will run a web-demo of swgg-facebook instruction 1. save this script as example.js 2. run the shell command: $ npm install swgg-facebook && PORT=8081 node example.js 3. open a browser to http://127.0.0.1:8081 and play with the web-demo 4. edit this script to suit your needs */ /* istanbul instrument in package swgg_facebook */ /*jslint bitwise: true, browser: true, maxerr: 8, maxlen: 100, node: true, nomen: true, regexp: true, stupid: true */ (function () { 'use strict'; var local; // run shared js-env code - init-before (function () { // init local local = {}; // init modeJs local.modeJs = (function () { try { return typeof navigator.userAgent === 'string' && typeof document.querySelector('body') === 'object' && typeof XMLHttpRequest.prototype.open === 'function' && 'browser'; } catch (errorCaughtBrowser) { return module.exports && typeof process.versions.node === 'string' && typeof require('http').createServer === 'function' && 'node'; } }()); // init global local.global = local.modeJs === 'browser' ? window : global; // init utility2_rollup local = local.global.utility2_rollup || (local.modeJs === 'browser' ? local.global.utility2_swgg_facebook : require('swgg-facebook')); // init exports local.global.local = local; // init assets local.assetsDict['/assets.index.template.html'] = local.assetsDict['/assets.swgg.html']; }()); switch (local.modeJs) { // run browser js-env code - init-test /* istanbul ignore next */ case 'browser': break; // run node js-env code - init-test /* istanbul ignore next */ case 'node': // init exports module.exports = local; // require builtins Object.keys(process.binding('natives')).forEach(function (key) { if (!local[key] && !(/\/|^_|^sys$/).test(key)) { local[key] = require(key); } }); // init assets local.assetsDict = local.assetsDict || {}; [ 'assets.index.css', 'assets.index.template.html', 'assets.swgg.swagger.json', 'assets.swgg.swagger.server.json' ].forEach(function (file) { file = '/' + file; local.assetsDict[file] = local.assetsDict[file] || ''; if (local.fs.existsSync(local.__dirname + file)) { local.assetsDict[file] = local.fs.readFileSync( local.__dirname + file, 'utf8' ); } }); local.assetsDict['/'] = local.assetsDict['/assets.example.html'] = local.assetsDict['/assets.index.template.html'] .replace((/\{\{env\.(\w+?)\}\}/g), function (match0, match1) { // jslint-hack String(match0); switch (match1) { case 'npm_package_description': return 'the greatest app in the world!'; case 'npm_package_name': return 'swgg-facebook'; case 'npm_package_nameLib': return 'swgg_facebook'; case 'npm_package_version': return '0.0.1'; default: return match0; } }); // init cli if (module !== require.main || local.global.utility2_rollup) { break; } local.assetsDict['/assets.example.js'] = local.assetsDict['/assets.example.js'] || local.fs.readFileSync(__filename, 'utf8'); // bug-workaround - long $npm_package_buildCustomOrg /* jslint-ignore-begin */ local.assetsDict['/assets.swgg_facebook.js'] = local.assetsDict['/assets.swgg_facebook.js'] || local.fs.readFileSync( local.__dirname + '/lib.swgg_facebook.js', 'utf8' ).replace((/^#!/), '//'); /* jslint-ignore-end */ local.assetsDict['/favicon.ico'] = local.assetsDict['/favicon.ico'] || ''; // if $npm_config_timeout_exit exists, // then exit this process after $npm_config_timeout_exit ms if (Number(process.env.npm_config_timeout_exit)) { setTimeout(process.exit, Number(process.env.npm_config_timeout_exit)); } // start server if (local.global.utility2_serverHttp1) { break; } process.env.PORT = process.env.PORT || '8081'; console.error('server starting on port ' + process.env.PORT); local.http.createServer(function (request, response) { request.urlParsed = local.url.parse(request.url); if (local.assetsDict[request.urlParsed.pathname] !== undefined) { response.end(local.assetsDict[request.urlParsed.pathname]); return; } response.statusCode = 404; response.end(); }).listen(process.env.PORT); break; } }()); ``` #### output from browser [![screenshot](https://kaizhu256.github.io/node-swgg-facebook/build/screenshot.testExampleJs.browser.%252F.png)](https://kaizhu256.github.io/node-swgg-facebook/build/app/assets.example.html) #### output from shell ![screenshot](https://kaizhu256.github.io/node-swgg-facebook/build/screenshot.testExampleJs.svg) # extra screenshots 1. [https://kaizhu256.github.io/node-swgg-facebook/build/screenshot.buildCi.browser.%252Ftmp%252Fbuild%252Fapidoc.html.png](https://kaizhu256.github.io/node-swgg-facebook/build/screenshot.buildCi.browser.%252Ftmp%252Fbuild%252Fapidoc.html.png) [![screenshot](https://kaizhu256.github.io/node-swgg-facebook/build/screenshot.buildCi.browser.%252Ftmp%252Fbuild%252Fapidoc.html.png)](https://kaizhu256.github.io/node-swgg-facebook/build/screenshot.buildCi.browser.%252Ftmp%252Fbuild%252Fapidoc.html.png) 1. [https://kaizhu256.github.io/node-swgg-facebook/build/screenshot.buildCi.browser.%252Ftmp%252Fbuild%252Fcoverage.lib.html.png](https://kaizhu256.github.io/node-swgg-facebook/build/screenshot.buildCi.browser.%252Ftmp%252Fbuild%252Fcoverage.lib.html.png) [![screenshot](https://kaizhu256.github.io/node-swgg-facebook/build/screenshot.buildCi.browser.%252Ftmp%252Fbuild%252Fcoverage.lib.html.png)](https://kaizhu256.github.io/node-swgg-facebook/build/screenshot.buildCi.browser.%252Ftmp%252Fbuild%252Fcoverage.lib.html.png) 1. [https://kaizhu256.github.io/node-swgg-facebook/build/screenshot.buildCi.browser.%252Ftmp%252Fbuild%252Ftest-report.html.png](https://kaizhu256.github.io/node-swgg-facebook/build/screenshot.buildCi.browser.%252Ftmp%252Fbuild%252Ftest-report.html.png) [![screenshot](https://kaizhu256.github.io/node-swgg-facebook/build/screenshot.buildCi.browser.%252Ftmp%252Fbuild%252Ftest-report.html.png)](https://kaizhu256.github.io/node-swgg-facebook/build/screenshot.buildCi.browser.%252Ftmp%252Fbuild%252Ftest-report.html.png) 1. [https://kaizhu256.github.io/node-swgg-facebook/build/screenshot.deployGithub.browser.%252Fnode-swgg-facebook%252Fbuild%252Fapp%252Fassets.swgg.html.png](https://kaizhu256.github.io/node-swgg-facebook/build/screenshot.deployGithub.browser.%252Fnode-swgg-facebook%252Fbuild%252Fapp%252Fassets.swgg.html.png) [![screenshot](https://kaizhu256.github.io/node-swgg-facebook/build/screenshot.deployGithub.browser.%252Fnode-swgg-facebook%252Fbuild%252Fapp%252Fassets.swgg.html.png)](https://kaizhu256.github.io/node-swgg-facebook/build/screenshot.deployGithub.browser.%252Fnode-swgg-facebook%252Fbuild%252Fapp%252Fassets.swgg.html.png) 1. [https://kaizhu256.github.io/node-swgg-facebook/build/screenshot.deployGithub.browser.%252Fnode-swgg-facebook%252Fbuild%252Fapp.png](https://kaizhu256.github.io/node-swgg-facebook/build/screenshot.deployGithub.browser.%252Fnode-swgg-facebook%252Fbuild%252Fapp.png) [![screenshot](https://kaizhu256.github.io/node-swgg-facebook/build/screenshot.deployGithub.browser.%252Fnode-swgg-facebook%252Fbuild%252Fapp.png)](https://kaizhu256.github.io/node-swgg-facebook/build/screenshot.deployGithub.browser.%252Fnode-swgg-facebook%252Fbuild%252Fapp.png) 1. [https://kaizhu256.github.io/node-swgg-facebook/build/screenshot.deployGithubTest.browser.%252Fnode-swgg-facebook%252Fbuild%252Fapp.png](https://kaizhu256.github.io/node-swgg-facebook/build/screenshot.deployGithubTest.browser.%252Fnode-swgg-facebook%252Fbuild%252Fapp.png) [![screenshot](https://kaizhu256.github.io/node-swgg-facebook/build/screenshot.deployGithubTest.browser.%252Fnode-swgg-facebook%252Fbuild%252Fapp.png)](https://kaizhu256.github.io/node-swgg-facebook/build/screenshot.deployGithubTest.browser.%252Fnode-swgg-facebook%252Fbuild%252Fapp.png) 1. [https://kaizhu256.github.io/node-swgg-facebook/build/screenshot.deployHeroku.browser.%252Fassets.swgg.html.png](https://kaizhu256.github.io/node-swgg-facebook/build/screenshot.deployHeroku.browser.%252Fassets.swgg.html.png) [![screenshot](https://kaizhu256.github.io/node-swgg-facebook/build/screenshot.deployHeroku.browser.%252Fassets.swgg.html.png)](https://kaizhu256.github.io/node-swgg-facebook/build/screenshot.deployHeroku.browser.%252Fassets.swgg.html.png) 1. [https://kaizhu256.github.io/node-swgg-facebook/build/screenshot.deployHeroku.browser.%252F.png](https://kaizhu256.github.io/node-swgg-facebook/build/screenshot.deployHeroku.browser.%252F.png) [![screenshot](https://kaizhu256.github.io/node-swgg-facebook/build/screenshot.deployHeroku.browser.%252F.png)](https://kaizhu256.github.io/node-swgg-facebook/build/screenshot.deployHeroku.browser.%252F.png) 1. [https://kaizhu256.github.io/node-swgg-facebook/build/screenshot.deployHerokuTest.browser.%252F.png](https://kaizhu256.github.io/node-swgg-facebook/build/screenshot.deployHerokuTest.browser.%252F.png) [![screenshot](https://kaizhu256.github.io/node-swgg-facebook/build/screenshot.deployHerokuTest.browser.%252F.png)](https://kaizhu256.github.io/node-swgg-facebook/build/screenshot.deployHerokuTest.browser.%252F.png) 1. [https://kaizhu256.github.io/node-swgg-facebook/build/screenshot.npmTest.browser.%252F.png](https://kaizhu256.github.io/node-swgg-facebook/build/screenshot.npmTest.browser.%252F.png) [![screenshot](https://kaizhu256.github.io/node-swgg-facebook/build/screenshot.npmTest.browser.%252F.png)](https://kaizhu256.github.io/node-swgg-facebook/build/screenshot.npmTest.browser.%252F.png) 1. [https://kaizhu256.github.io/node-swgg-facebook/build/screenshot.testExampleJs.browser.%252F.png](https://kaizhu256.github.io/node-swgg-facebook/build/screenshot.testExampleJs.browser.%252F.png) [![screenshot](https://kaizhu256.github.io/node-swgg-facebook/build/screenshot.testExampleJs.browser.%252F.png)](https://kaizhu256.github.io/node-swgg-facebook/build/screenshot.testExampleJs.browser.%252F.png) 1. [https://kaizhu256.github.io/node-swgg-facebook/build/screenshot.testExampleSh.browser.%252F.png](https://kaizhu256.github.io/node-swgg-facebook/build/screenshot.testExampleSh.browser.%252F.png) [![screenshot](https://kaizhu256.github.io/node-swgg-facebook/build/screenshot.testExampleSh.browser.%252F.png)](https://kaizhu256.github.io/node-swgg-facebook/build/screenshot.testExampleSh.browser.%252F.png) # package.json ```json { "author": "kai zhu <kaizhu256@gmail.com>", "description": "this zero-dependency package will provide a javascript-client for facebook's web-apis, with a working web-demo", "devDependencies": { "electron-lite": "kaizhu256/node-electron-lite#alpha", "utility2": "kaizhu256/node-utility2#alpha" }, "engines": { "node": ">=4.0" }, "homepage": "https://github.com/kaizhu256/node-swgg-facebook", "keywords": [ "facebook-graph" ], "license": "MIT", "main": "lib.swgg_facebook.js", "name": "swgg-facebook", "nameAliasPublish": "api-facebook", "nameLib": "swgg_facebook", "nameOriginal": "swgg-facebook", "os": [ "darwin", "linux" ], "repository": { "type": "git", "url": "https://github.com/kaizhu256/node-swgg-facebook.git" }, "scripts": { "build-ci": "utility2 shReadmeTest build_ci.sh", "env": "env", "heroku-postbuild": "npm uninstall utility2 2>/dev/null; npm install kaizhu256/node-utility2#alpha && utility2 shDeployHeroku", "postinstall": "[ ! -f npm_scripts.sh ] || ./npm_scripts.sh postinstall", "start": "PORT=${PORT:-8080} utility2 start test.js", "test": "PORT=$(utility2 shServerPortRandom) utility2 test test.js" }, "version": "2017.11.6" } ``` # changelog of last 50 commits [![screenshot](https://kaizhu256.github.io/node-swgg-facebook/build/screenshot.gitLog.svg)](https://github.com/kaizhu256/node-swgg-facebook/commits) # internal build script - build_ci.sh ```shell # build_ci.sh # this shell script will run the build for this package shBuildCiAfter() {(set -e shDeployGithub shDeployHeroku shReadmeTest example.sh )} shBuildCiBefore() {(set -e shNpmTestPublished shReadmeTest example.js )} # run shBuildCi eval $(utility2 source) shBuildCi ``` # misc - this package was created with [utility2](https://github.com/kaizhu256/node-utility2)