UNPKG

chen-facebook

Version:
107 lines 3.48 kB
"use strict"; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; const web_1 = require('chen/web'); const core_1 = require('chen/core'); const auth_1 = require('./auth'); const api_1 = require('./api'); /** * Facebook class */ let Facebook_1 = class Facebook extends core_1.Service { /** * Init hook */ init() { this.credentials = this.context.config.get('extensions.chen-facebook', {}); if (!this.credentials.appId) { throw new core_1.Exception('facebook app id is required'); } if (!this.credentials.appSecret) { throw new core_1.Exception('facebook app secret is required'); } if (!this.credentials.version) { throw new core_1.Exception('facebook api version is required'); } } /** * Create facebook api caller * @return {FacebookApi} */ api(token) { return new api_1.FacebookApi(this.credentials.version, token || this.getAccessToken()); } /** * Set App ID * @param {string} id */ setAppId(id) { this.credentials.appId = id; } /** * Set App Secret * @param {string} secret */ setAppSecret(secret) { this.credentials.appSecret = secret; } getLoginHelper(redirectUri) { if (!(this.context instanceof web_1.Context)) { throw new core_1.Exception(`Can't do facebook login in a non web context`); } return new auth_1.FacebookLogin(this, this.context, redirectUri); } /** * Get credentials * @return {FacebookCredentials} */ getCredentials() { return core_1._.clone(this.credentials); } /** * Get access token session key * @return {string} */ getSessionKey(name) { return `${Facebook_1.FB_SESS_PREFIX}${this.credentials.appId}_${name}`; } /** * Set access token * @param {string} token */ setAccessToken(token) { this.accessToken = token; if (this.context instanceof web_1.Context) { this.context.request.session.set(this.getSessionKey('token'), token); } } /** * Get access token * @return {string} */ getAccessToken() { if (!this.accessToken && this.context instanceof web_1.Context) { return this.context.request.session.get(this.getSessionKey('token'), null); } return this.accessToken || null; } }; let Facebook = Facebook_1; /** * FB session key * @type {string} */ Facebook.FB_SESS_PREFIX = '__$$chen_facebook_'; Facebook = Facebook_1 = __decorate([ core_1.injectable, __metadata('design:paramtypes', function () { return []; }) ], Facebook); exports.Facebook = Facebook; //# sourceMappingURL=service.js.map