Add avatarName2KeyAndName

This commit is contained in:
Casper Warden
2019-11-22 16:50:24 +00:00
parent 4bf699deaf
commit 1bc4d1086b
3 changed files with 106 additions and 32 deletions

View File

@@ -251,6 +251,76 @@ export class GridCommands extends CommandsBase
});
}
avatarName2KeyAndName(name: string): Promise<{avatarKey: UUID, avatarName: string}>
{
const check = name.split('.');
if (check.length > 1)
{
name = check.join(' ');
}
else
{
name += ' resident';
}
name = name.toLowerCase();
const queryID = UUID.random();
return new Promise<{avatarKey: UUID, avatarName: string}>((resolve, reject) =>
{
const aprm = new AvatarPickerRequestMessage();
aprm.AgentData = {
AgentID: this.agent.agentID,
SessionID: this.circuit.sessionID,
QueryID: queryID
};
aprm.Data = {
Name: Utils.StringToBuffer(name)
};
this.circuit.sendMessage(aprm, PacketFlags.Reliable);
this.circuit.waitForMessage<AvatarPickerReplyMessage>(Message.AvatarPickerReply, 10000, (apr: AvatarPickerReplyMessage): FilterResponse =>
{
if (apr.AgentData.QueryID.toString() === queryID.toString())
{
return FilterResponse.Finish;
}
else
{
return FilterResponse.NoMatch;
}
}).then((apr: AvatarPickerReplyMessage) =>
{
let foundKey: UUID | undefined;
let foundName: string | undefined;
apr.Data.forEach((dataBlock) =>
{
const resultName = (Utils.BufferToStringSimple(dataBlock.FirstName) + ' ' +
Utils.BufferToStringSimple(dataBlock.LastName));
if (resultName.toLowerCase() === name)
{
foundKey = dataBlock.AvatarID;
foundName = resultName;
}
});
if (foundKey !== undefined && foundName !== undefined)
{
resolve({
avatarName: foundName,
avatarKey: foundKey
});
}
else
{
reject('Name not found')
}
}).catch((err) =>
{
reject(err);
});
});
}
avatarName2Key(name: string): Promise<UUID>
{
const check = name.split('.');

46
package-lock.json generated
View File

@@ -1,6 +1,6 @@
{
"name": "@caspertech/node-metaverse",
"version": "0.5.1",
"version": "0.5.2",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
@@ -20,9 +20,9 @@
"dev": true
},
"@types/caseless": {
"version": "0.12.1",
"resolved": "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.1.tgz",
"integrity": "sha512-FhlMa34NHp9K5MY1Uz8yb+ZvuX0pnvn3jScRSNAb75KHGB8d3rEU6hqMs3Z2vjuytcMfRg6c5CHMc3wtYyD2/A==",
"version": "0.12.2",
"resolved": "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.2.tgz",
"integrity": "sha512-6ckxMjBBD8URvjB6J3NcnuAn5Pkl7t3TizAg+xdlzzQGSPSmBcXf8KoIH0ua/i+tio+ZRUHEXp0HEmvaR4kt0w==",
"dev": true
},
"@types/events": {
@@ -31,15 +31,6 @@
"integrity": "sha512-KEIlhXnIutzKwRbQkGWb/I4HFqBuUykAdHgDED6xqwXJfONCjF5VoE0cXEiurh3XauygxzeDzgtXUqvLkxFzzA==",
"dev": true
},
"@types/form-data": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/@types/form-data/-/form-data-2.2.1.tgz",
"integrity": "sha512-JAMFhOaHIciYVh8fb5/83nmuO/AHwmto+Hq7a9y8FzLDcC1KCU344XDOMEmahnrTFlHjgh4L0WJFczNIX2GxnQ==",
"dev": true,
"requires": {
"@types/node": "*"
}
},
"@types/long": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.0.tgz",
@@ -66,15 +57,28 @@
"integrity": "sha512-j6Sqt38ssdMKutXBUuAcmWF8QtHW1Fwz/mz4Y+Wd9mzpBiVFirjpNQf363hG5itkG+yGaD+oiLyb50HxJ36l9Q=="
},
"@types/request": {
"version": "2.47.1",
"resolved": "https://registry.npmjs.org/@types/request/-/request-2.47.1.tgz",
"integrity": "sha512-TV3XLvDjQbIeVxJ1Z3oCTDk/KuYwwcNKVwz2YaT0F5u86Prgc4syDAp6P96rkTQQ4bIdh+VswQIC9zS6NjY7/g==",
"version": "2.48.3",
"resolved": "https://registry.npmjs.org/@types/request/-/request-2.48.3.tgz",
"integrity": "sha512-3Wo2jNYwqgXcIz/rrq18AdOZUQB8cQ34CXZo+LUwPJNpvRAL86+Kc2wwI8mqpz9Cr1V+enIox5v+WZhy/p3h8w==",
"dev": true,
"requires": {
"@types/caseless": "*",
"@types/form-data": "*",
"@types/node": "*",
"@types/tough-cookie": "*"
"@types/tough-cookie": "*",
"form-data": "^2.5.0"
},
"dependencies": {
"form-data": {
"version": "2.5.1",
"resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz",
"integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==",
"dev": true,
"requires": {
"asynckit": "^0.4.0",
"combined-stream": "^1.0.6",
"mime-types": "^2.1.12"
}
}
}
},
"@types/tape": {
@@ -92,9 +96,9 @@
"dev": true
},
"@types/tough-cookie": {
"version": "2.3.3",
"resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-2.3.3.tgz",
"integrity": "sha512-MDQLxNFRLasqS4UlkWMSACMKeSm1x4Q3TxzUC7KQUsh6RK1ZrQ0VEyE3yzXcBu+K8ejVj4wuX32eUG02yNp+YQ==",
"version": "2.3.5",
"resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-2.3.5.tgz",
"integrity": "sha512-SCcK7mvGi3+ZNz833RRjFIxrn4gI1PPR3NtuIS+6vMkvmsGjosqTJwRt5bAEFLRz+wtJMWv8+uOnZf2hi2QXTg==",
"dev": true
},
"@types/uuid": {

View File

@@ -1,6 +1,6 @@
{
"name": "@caspertech/node-metaverse",
"version": "0.5.2",
"version": "0.5.4",
"description": "A node.js interface for Second Life.",
"main": "dist/index.js",
"types": "dist/index.d.ts",
@@ -23,16 +23,6 @@
"url": "git+https://github.com/CasperTech/node-metaverse.git"
},
"devDependencies": {
"@types/micromatch": "^3.1.0",
"@types/mocha": "^5.2.5",
"@types/node": "^10.14.19",
"@types/request": "^2.47.1",
"@types/tiny-async-pool": "^1.0.0",
"@types/uuid": "^3.4.4",
"@types/validator": "^9.4.2",
"@types/xml": "^1.0.2",
"@types/xml2js": "^0.4.3",
"@types/xmlrpc": "^1.3.5",
"mocha": "^5.2.0",
"source-map-support": "^0.5.9",
"ts-node": "^7.0.1",
@@ -43,6 +33,16 @@
"dependencies": {
"@caspertech/llsd": "^1.0.0",
"@types/long": "^4.0.0",
"@types/request": "^2.48.3",
"@types/micromatch": "^3.1.0",
"@types/mocha": "^5.2.5",
"@types/node": "^10.14.19",
"@types/tiny-async-pool": "^1.0.0",
"@types/uuid": "^3.4.4",
"@types/validator": "^9.4.2",
"@types/xml": "^1.0.2",
"@types/xml2js": "^0.4.3",
"@types/xmlrpc": "^1.3.5",
"ipaddr.js": "^1.8.1",
"long": "^4.0.0",
"micromatch": "^3.1.10",