UNPKG

node-nicovideo-api

Version:

nicovideo api (video, live, etc..) wrapper package for node.js

111 lines (93 loc) 2.6 kB
// Generated by CoffeeScript 1.10.0 (function() { var APIEndpoints, NicoException, NicoUser, __, deepFreeze; __ = require("lodash-deep"); deepFreeze = require("deep-freeze"); APIEndpoints = require("../APIEndpoints"); NicoException = require("../NicoException"); module.exports = NicoUser = (function() { /** * @return {Promise} */ NicoUser.instance = function(userId, session) { if (userId === 0) { return Promise.resolve(this.makeAnonymousUser()); } return APIEndpoints.user.info(session, { userId: userId }).then((function(_this) { return function(res) { var data, e, error, props, result, user; try { result = JSON.parse(res.body); data = result.nicovideo_user_response; } catch (error) { e = error; Promise.reject(new NicoException({ message: "Failed to parse user info response.", response: res, previous: e })); } if (data["@status"] !== "ok") { return Promise.reject(new NicoException({ message: data.error.description, code: data.error.code, response: result })); } props = deepFreeze(_this.parseResponse(result)); user = new NicoUser(props); return Promise.resolve(user); }; })(this)); }; /** * @param {Object} res */ NicoUser.parseResponse = function(res) { var data, user; data = res.nicovideo_user_response; user = data.user; return { id: user.id | 0, name: user.nickname, thumbnailURL: user.thumbnail_url, additionals: data.additionals, vita: { userSecret: data.vita_option.user_secret | 0 } }; }; NicoUser.makeAnonymousUser = function() { var props, user; props = deepFreeze({ id: 0, name: "", thumbnailURL: "http://uni.res.nimg.jp/img/user/thumb/blank.jpg", additionals: "", vita: { userSecret: 0 } }); return user = new NicoUser(props); }; /** * @param {Object} props */ function NicoUser(props) { Object.defineProperties(this, { id: { value: props.id }, _props: { value: props } }); } NicoUser.prototype.get = function(key) { return __.deepGet(this._props, key); }; return NicoUser; })(); }).call(this);