ealjs v0.1.6
EAL.js
EAL.js is a Node.js library for EVE Online API.
Requirements
Node.js v0.10+
Installation
$ npm install ealjs
Usage
Quick Start
Get server status:
var eveapi = require('ealjs');
var srv = eveapi.server();
srv.get('serverstatus', function(err, result) {
if (! err)
console.dir(result);
});
Get information about API key:
var keyid = 1234567
var vcode = "qwertyuiop"
var apiKey = eveapi.key(keyID, vCode);
apiKey.get('apikeyinfo', function(err, result) {
// ...
})
Get mail bodies by given ids:
var char = eveapi.char(keyID, vCode, characterID);
char.get('mailbodies', {ids: [345676097, 332636164]}, function(err, result) {
// ...
});
Scopes
Server
Includes all API functions that don't need authentication by keyID and vCode,
such as 'serverstatus'
, public 'characterinfo'
, character id to name conversion.
var srv = eveapi.server();
Key
Information about API key ('apikeyinfo'
and 'accountstatus'
).
var key = eveapi.key(keyid, vcode);
Char
Character functions ('characterinfo'
, 'charactersheet'
, 'mailmessages'
, 'mailbodies'
)
var char = eveapi.char(keyid, vcode, characterid[, accessmask]);
Note: if you don't set access mask, access check will be disabled.
Corp
Corporation functions ('corporationsheet'
, 'outpostlist'
)
var corp = eveapi.corp(keyid, vcode[, accessmask]);
Note: if you don't set access mask, access check will be disabled.
Methods:
Note: Each <rowset>
field in received XML will be named as it's "name"
attribute.
Quick example
var param = {
rowcount: 250
}
char.get('walletjournal', param, callback);
Detailed example
var eveapi = require('ealjs');
var apiKey = eveapi.key(keyid, vcode);
apiKey.get('apikeyinfo', callback);
Example XML of the response:
<eveapi version="2">
<currentTime>2015-02-19 12:08:08</currentTime>
<result>
<key accessMask="268435455" type="Account" expires="">
<rowset name="characters" key="characterID" columns="characterID,characterName,corporationID,corporationName,allianceID,allianceName,factionID,factionName">
<row characterID="94681458" characterName="Gallente Citizen 013241" corporationID="1001176" corporationName="Flying dummies" allianceID="0" allianceName="" factionID="0" factionName=""/>
<row characterID="477311614" characterName="Caldari Citizen 24190" corporationID="98169130" corporationName="Corpname" allianceID="0" allianceName="" factionID="0" factionName=""/>
</rowset>
</key>
</result>
<cachedUntil>2015-02-19 12:13:02</cachedUntil>
</eveapi>
result
will be:
{ type: 'apikeyinfo', // name of the API function
data:
{ type: 'Account',
accessMask: '268435455',
expires: 'never',
cachedUntil: '2015-02-19 12:13:02',
characters: [
{ characterID: '94681458',
characterName: 'Gallente Citizen 013241',
corporationID: '1001176',
corporationName: 'Flying dummies',
allianceID: '0',
allianceName: '',
factionID: '0',
factionName: '' },
{ characterID: '477311614',
characterName: 'Caldari Citizen 24190',
corporationID: '98169130',
corporationName: 'Corpname',
allianceID: '0',
allianceName: '',
factionID: '0',
factionName: '' } ] },
param: // call parameters
{ keyid: '3412784',
vcode: 'qwertyuiop' } }
Property named apikeyinfo
will be added to the apiKey
. Other words, you can access result.data
as apiKey.apikeyinfo
console.dir(apiKey.apikeyinfo)
// see result.data above
Example 1
var apiKey = eveapi.key(keyid, vcode);
console.dir(apiKey.access(268435455));
/* [ 134217728, 67108864, 33554432, 16777216, 8388608, 4194304, 2097152, 1048576, 524288, 262144, 131072, 65536, 32768, 16384, 8192, 4096, 2048, 1024, 512, 256, 128, 64, 32, 16, 8, 4, 2, 1 ] */
Example 2
var apiKey = eveapi.key(keyid, vcode);
console.dir(apiKey.access(268435455, true));
/* [ 'accountstatus' ] */
Example 3
var char = eveapi.char(keyid, vcode, characterid);
console.dir(char.access(268435455, true));
/* [ 'accountstatus', 'accountbalance', 'assetlist', 'blueprints', 'calendareventattendees', 'characterinfo', 'charactersheet', 'contactlist', 'contactnotifications', 'contractbids', 'contractitems', 'contracts', 'facwarstats', 'industryjobs', 'industryjobshistory', 'killmails', 'locations', 'mailbodies', 'mailinglists', 'mailmessages', 'marketorders', 'medals', 'notifications', 'notificationtexts', 'planetarycolonies', 'planetarylinks', 'planetarypins', 'planetaryroutes', 'research', 'skillintraining', 'skillqueue', 'standings', 'upcomingcalendarevents', 'walletjournal', 'wallettransactions' ] */
apiType
- name of the API function (see New Eden Development or config/config.js in the module folder).mask
- provide custom access mask if you want. ElseaccessMask
property will be used (if it doesn't exist, method will returntrue
).
Example
// apikey.accessMask = 268435455;
console.dir(apiKey.hasAccess('mailmessages'));
// true
console.dir(apiKey.hasAccess('mailmessages', 1));
// false