UNPKG

dl

Version:

DreamLab Libs

75 lines (68 loc) 2.66 kB
var JsonRpcMethod = require('core').jsonrpc.JsonRpcMethod, Request = require('core').http.Request, Response = require('core').http.Response, Event = require('core').event.Event, BinaryData = require('core').data.BinaryData, OnetHeadersFilter = require('dl').utils.OnetHeadersFilter, NauthManager = require('dl').nauth.NauthManager; var QueryMethod = function () { JsonRpcMethod.apply(this, arguments); }; QueryMethod.prototype = Object.create(JsonRpcMethod.prototype); QueryMethod.prototype.execute = function (params) { var request = new Request(params.request), response = new Response({ "headers": { "content-type": "application/json; charset=utf-8" } }), manager = new NauthManager(request, response).setOnetApp('www.onet.pl.front.onetapi.pl'); if (request.getPath() == '/auth.html') { this._handleAuth(request, response, manager); } else { this._handleProfile(request, response, manager); } }; QueryMethod.prototype._handleAuth = function (request, response, manager) { var that = this; manager.getTokenFromCode(request.getQueryParam('code'), function (err) { if (err) { response.setStatusCode(302); response.setHeader( "location", "https://authorisation.grupaonet.pl/login.html?client_id=www.onet.pl.front", true ); that._sendResponse(request, response, err); return; } that._handleProfile(request, response, manager); }); }; QueryMethod.prototype._handleProfile = function (request, response, manager) { var that = this; manager.getUserProfile(function (err, data) { if (err) { response.setStatusCode(302); response.setHeader( "location", "https://authorisation.grupaonet.pl/login.html?client_id=www.onet.pl.front", true ); that._sendResponse(request, response, err); return; } response.setStatusCode(200); that._sendResponse(request, response, data); }); }; QueryMethod.prototype._sendResponse = function (request, response, body) { if (body) { body = new BinaryData(JSON.stringify(body), BinaryData.Encoding.TEXT, BinaryData.CharacterEncoding.UTF8); response.setBody(body); response.setHeader("content-length", body.length()); } OnetHeadersFilter.filter(request, response); this.dispatchEvent(new Event(JsonRpcMethod.Event.OK, response.toJson())); }; exports.QueryMethod = QueryMethod;