dl
Version:
DreamLab Libs
75 lines (68 loc) • 2.66 kB
JavaScript
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;