node-nicovideo-api
Version:
nicovideo api (video, live, etc..) wrapper package for node.js
175 lines (138 loc) • 4.65 kB
JavaScript
// Generated by CoffeeScript 1.10.0
/**
*
*
*
* Methods
* - attr(attr: string)
* 指定したプロパティの値を取得します。
* - isDefaultList(): boolean
* このリストが"とりあえずマイリスト"か判定します。
* - getInterface(): MyList
* 現在のインスタンスのマイリストと対応するMyListインスタンスを取得します。
* - toJSON(): Object
* インスタンスのプロパティを複製します。
*
* Events
* (none)
*
* Properties
* attrメソッドを介して取得します。(とりあえずマイリストの場合,idとname以外設定されません。)
* Example. mylist.attr("id") // -> マイリストIDを取得
*/
(function() {
var MyList, MyListMeta, _, __;
_ = require("lodash");
__ = require("lodash-deep");
MyList = require("./MyList");
/**
* マイリストのメタデータを表すクラスです。
* このモデルからマイリストを操作することはできません。
* @class MyListMeta
*/
module.exports = MyListMeta = (function() {
function MyListMeta() {}
MyListMeta.defaults = {
id: -1,
name: null,
description: null,
"public": null,
iconId: -1,
defaultSort: -1,
sortOrder: -1,
userId: -1,
createTime: null,
updateTime: null
};
/**
* @param {Object} metaInfo Result of mylistgroup/list API
*/
MyListMeta.instance = function(metaInfo) {
var meta;
meta = new MyListMeta;
meta._attr = MyListMeta.parse(metaInfo);
Object.defineProperties(meta, {
id: {
value: meta.get("id")
}
});
return meta;
};
/**
* @param {Object} metaInfo Result of mylistgroup/list API
*/
MyListMeta.parse = function(metaInfo) {
var attr;
if (metaInfo === "home") {
attr = _.defaults({
id: "home",
name: "とりあえずマイリスト",
"public": false
}, MyListMeta.defaults);
return attr;
}
attr = _.defaults({
id: metaInfo.id | 0,
name: metaInfo.name,
description: metaInfo.description,
"public": (metaInfo["public"] | 0) === 1,
iconId: metaInfo.icon_id | 0,
defaultSort: metaInfo.default_sort | 0,
sortOrder: metaInfo.sort_order | 0,
userId: metaInfo.user_id | 0,
createTime: new Date(metaInfo.create_time * 1000),
updateTime: new Date(metaInfo.update_time * 1000)
}, MyListMeta.defaults);
return attr;
};
/**
* @private
* @property {String|Number} _id
*/
MyListMeta.prototype._id = null;
/**
* @private
* @property {Number} _attributes.id マイリストID
* @property {String} _attributes.description マイリストの説明
* @property {Number} _attributes.userId ユーザー番号
* @property {Number} _attributes.defaultSort 標準のソート方法(?)
* @property {Number} _attributes.sortOrder ソート方式(?)
* @property {Number} _attributes.iconId マイリストのアイコンID
* @property {String} _attributes.name リスト名
* @property {Boolean} _attributes.public 公開マイリストかどうか
* @property {Date} _attributes.createTime マイリストの作成日
* @property {Date} _attributes.updateTime マイリストの更新日
*/
MyListMeta.prototype._attr = null;
/**
* 指定したプロパティの値を取得します。
* @param {string} attr プロパティ名
*/
MyListMeta.prototype.get = function(attr) {
return __.deepGet(this._attr, attr);
};
/**
* このマイリストが"とりあえずマイリスト"か検証します。
* @return {boolean}
* "とりあえずマイリスト"ならtrueを返します。
*/
MyListMeta.prototype.isDefaultList = function() {
return this.attr("id") === "home";
};
/**
* オブジェクトと対応するMyListインスタンスを取得します。
* @return {Promise}
*/
MyListMeta.prototype.getMyList = function() {
return new MyList(this.get("id"));
};
/**
* インスタンスのプロパティを複製します。
* @return {Object}
*/
MyListMeta.prototype.toJSON = function() {
return _.clone(this._attr);
};
return MyListMeta;
})();
}).call(this);