@cthos/gw2-api
v4.0.1
Published
GuildWars 2 API interface
Downloads
50
Readme
GW2-API
⚠️ 4.0.0 breaks out all of the API calls into multiple classes so you can use them independently or through the main export. Type definitions are coming, but are not yet completed.
This is a node module which is designed to facilitate communication with the Guild Wars 2 API. It is fan maintained, and has no official relationship with Arenanet or GuildWars 2 (legal disclaimer at the bottom).
The goal is to provide some convenience methods around getting things out of the API. This includes ways to cache API call results in memory, localStorage, or whatever storage system you desire. This is useful for the big aggregate lists (for example /items
).
Instructions
The gw2
package comes with 2 objects exported. gw2
is the actual interface to the API with a default storage mechanism of localStorage
. Since this isn't available in all applications, it also provides memStore
, which simply caches things in RAM. Storage can also be disabled by calling api.setCache(false)
.
API Documentation
Example (for ^3.0.0)
Typescript
import { GW2API, Memstore } from "@cthos/gw2-api";
const api = new GW2API();
// Set storage system to RAM if no access to localStorage
api.setStorage(new Memstore());
// Get daily pve achievement names:
const achievements = await api.getDailyAchievements(true); // the true is default, but this will translate the IDs to their objects directly
const achievementNames = achievements.map((a) => a.name);
// Get all character names associated with an account.
await api.setAPIKey("YOUR-TOKEN-GOES-HERE");
api.getCharacters().then(function (res) {
for (var i = 0, len = res.length; i < len; i++) {
// This API call just returns an array of string character names.
console.log(res[i]);
}
});
// Get Character Details
api.getCharacters("Zojja").then(function (res) {
console.log(res);
});
Javascript
Example (for 2.2.2)
var gw2 = require("gw2-api");
var api = new gw2.gw2();
// Set storage system to RAM if no access to localStorage
api.setStorage(new gw2.memStore());
// Get daily pve achievement names:
api
.getDailyAchievements()
.then(function (res) {
if (!res.pve) {
return;
}
var achievementIds = [];
for (var i = 0, len = res.pve.length; i < len; i++) {
achievementIds.push(res.pve[i].id);
}
return api.getAchievements(achievementIds);
})
.then(function (res) {
for (var i = 0, len = res.length; i < len; i++) {
console.log(res[i].name);
}
});
// Get all character names associated with an account.
api.setAPIKey("YOUR-TOKEN-GOES-HERE");
api.getCharacters().then(function (res) {
for (var i = 0, len = res.length; i < len; i++) {
// This API call just returns an array of string character names.
console.log(res[i]);
}
});
// Get Character Details
api.getCharacters("Zojja").then(function (res) {
console.log(res);
});
Gotchas
CORS Errors
Unfortunately, near as I can tell the GW2 API doesn't support responding to CORS OPTIONS requests, so if you want to call this from a browser you can't use the Authorization header method (which is now defaulted to off, and instead using a query parameter instead).
Legal stuff
Use of the Guild Wars 2 API constitutes compliance with the Content Terms of Use and the Website Terms of Use.
Full API documentation is found on the Wiki.
Their copyright notice is:
© 2015 ArenaNet, LLC. All rights reserved. NCSOFT, the interlocking NC logo, ArenaNet, Guild Wars, Guild Wars Factions, Guild Wars Nightfall, Guild Wars: Eye of the North, Guild Wars 2, Heart of Thorns, and all associated logos and designs are trademarks or registered trademarks of NCSOFT Corporation. All other trademarks are the property of their respective owners.