mirror of
https://github.com/ENSL/ensl_gathers.git
synced 2025-02-12 07:01:33 +00:00
Add method to extract steam and hive id
This commit is contained in:
parent
00e00cd284
commit
87e0ad99b4
2 changed files with 93 additions and 7 deletions
|
@ -5,9 +5,12 @@
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
var client = require("../ensl/client")();
|
var async = require("async");
|
||||||
var mongoose = require("mongoose");
|
var mongoose = require("mongoose");
|
||||||
var Profile = mongoose.model("Profile");
|
var Profile = mongoose.model("Profile");
|
||||||
|
var steam = require('steamidconvert')();
|
||||||
|
var enslClient = require("../ensl/client")();
|
||||||
|
var hiveClient = require("../hive/client")();
|
||||||
|
|
||||||
function User (user) {
|
function User (user) {
|
||||||
this.id = user['id'];
|
this.id = user['id'];
|
||||||
|
@ -15,24 +18,49 @@ function User (user) {
|
||||||
this.username = user['username'];
|
this.username = user['username'];
|
||||||
this.country = user['country'];
|
this.country = user['country'];
|
||||||
this.time_zone = user['time_zone'];
|
this.time_zone = user['time_zone'];
|
||||||
this.avatar = client.baseUrl + user['avatar'];
|
this.avatar = enslClient.baseUrl + user['avatar'];
|
||||||
this.admin = user['admin'];
|
this.admin = user['admin'];
|
||||||
this.team = user['team'];
|
this.team = user['team'];
|
||||||
this.bans = user['bans'];
|
this.bans = user['bans'];
|
||||||
this.steam = {
|
this.steam = {
|
||||||
|
id: null,
|
||||||
url: user['steam']['url'] || null,
|
url: user['steam']['url'] || null,
|
||||||
nickname: user['steam']['nickname'] || null
|
nickname: user['steam']['nickname'] || null
|
||||||
};
|
};
|
||||||
this.profile = null;
|
this.profile = null;
|
||||||
|
this.hive = {
|
||||||
|
id: null
|
||||||
|
};
|
||||||
|
|
||||||
|
if (this.steam.url) {
|
||||||
|
this.steam.id = this.getSteamId();
|
||||||
|
this.hive.id = this.getHiveId();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
User.prototype.updateProfile = function (data, callback) {
|
User.prototype.getSteamId = () => {
|
||||||
|
if (this.steam.url === null) return null;
|
||||||
|
var urlId = this.steam.url.match(/\d*$/);
|
||||||
|
if (!urlId) return null;
|
||||||
|
return steam.convertToText(urlId[0]);
|
||||||
|
};
|
||||||
|
|
||||||
|
User.prototype.getHiveId = () => {
|
||||||
|
var steamId = this.getSteamId();
|
||||||
|
if (!steamId) return null;
|
||||||
|
var index = steamId.match(/:0:/) ? 0 : 1;
|
||||||
|
var tailId = parseInt(steamId.match(/\d*$/), 10);
|
||||||
|
return index === 1 ? (tailId * 2) + 1 : tailId * 2;
|
||||||
|
};
|
||||||
|
|
||||||
|
User.prototype.updateProfile = (data, callback) => {
|
||||||
let self = this;
|
let self = this;
|
||||||
Profile.update({
|
Profile.update({
|
||||||
userId: self.id
|
userId: self.id
|
||||||
}, data, function (error) {
|
}, data, error => {
|
||||||
if (error) return callback(error);
|
if (error) return callback(error);
|
||||||
Profile.findOne({userId: self.id}, function (error, profile) {
|
Profile.findOne({userId: self.id}, (error, profile) => {
|
||||||
if (error) return callback(error);
|
if (error) return callback(error);
|
||||||
self.profile = profile.toJson();
|
self.profile = profile.toJson();
|
||||||
return callback(error, profile);
|
return callback(error, profile);
|
||||||
|
@ -41,13 +69,13 @@ User.prototype.updateProfile = function (data, callback) {
|
||||||
};
|
};
|
||||||
|
|
||||||
User.find = (id, callback) => {
|
User.find = (id, callback) => {
|
||||||
client.getUserById({
|
enslClient.getUserById({
|
||||||
id: id
|
id: id
|
||||||
}, (error, response, body) => {
|
}, (error, response, body) => {
|
||||||
if (error) return callback(error);
|
if (error) return callback(error);
|
||||||
if (response.statusCode !== 200) return callback(new Error("Unable to auth user against API"));
|
if (response.statusCode !== 200) return callback(new Error("Unable to auth user against API"));
|
||||||
let user = new User(body);
|
let user = new User(body);
|
||||||
Profile.findOrCreate(user, function (error, profile) {
|
Profile.findOrCreate(user, (error, profile) => {
|
||||||
if (error) return callback(error);
|
if (error) return callback(error);
|
||||||
user.profile = profile.toJson();
|
user.profile = profile.toJson();
|
||||||
return callback(null, user);
|
return callback(null, user);
|
||||||
|
|
58
spec/user.js
Normal file
58
spec/user.js
Normal file
|
@ -0,0 +1,58 @@
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
var helper = require("./helpers/index.js");
|
||||||
|
var User = helper.User;
|
||||||
|
var assert = require("chai").assert;
|
||||||
|
var async = require("async");
|
||||||
|
var userCount = 0;
|
||||||
|
|
||||||
|
describe("User", () => {
|
||||||
|
var user, userAttributes;
|
||||||
|
|
||||||
|
before(() => {
|
||||||
|
userCount++;
|
||||||
|
userAttributes = {
|
||||||
|
id: userCount,
|
||||||
|
username: "FearLess90",
|
||||||
|
country: "CA",
|
||||||
|
time_zone: "Eastern Time (US & Canada)",
|
||||||
|
avatar: "/images/icons/" + userCount + ".png",
|
||||||
|
admin: false,
|
||||||
|
steam: {
|
||||||
|
url: "http://steamcommunity.com/profiles/76561198076460617",
|
||||||
|
nickname: "FearLess90"
|
||||||
|
},
|
||||||
|
bans: {
|
||||||
|
gather: false,
|
||||||
|
mute: false,
|
||||||
|
site: false
|
||||||
|
},
|
||||||
|
team: {
|
||||||
|
id: 622,
|
||||||
|
name: "National Gamers"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("#getSteamId", () => {
|
||||||
|
beforeEach(() => {
|
||||||
|
user = new User(userAttributes);
|
||||||
|
});
|
||||||
|
it ("returns steamid", () => {
|
||||||
|
assert.equal(user.getSteamId(), "STEAM_0:1:58097444");
|
||||||
|
});
|
||||||
|
it ("returns null if no steamid", () => {
|
||||||
|
user.steam.url = null;
|
||||||
|
assert.isNull(user.getSteamId());
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("#getHiveId", () => {
|
||||||
|
beforeEach(() => {
|
||||||
|
user = new User(userAttributes);
|
||||||
|
});
|
||||||
|
it ("returns hive id", () => {
|
||||||
|
console.log(user.getHiveId());
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
Loading…
Reference in a new issue