<commit_before># eveonline.js [![](https://secure.travis-ci.org/MichaelErmer/eveonlinejs.png)](http://travis-ci.org/#!/MichaelErmer/eveonlinejs)


**An asynchronous EVE Online API client for Node.js** 

- no function mapping
- direct access
- asynchronous
- caching

**This is a continued version of https://github.com/kuja/hamster**

### Installation

```
npm install eveonlinejs
```

### Examples

```javascript
var eveonlinejs = require('eveonlinejs')

// Print a list of skill groups
eveonlinejs.fetch('eve:SkillTree', function (err, result) {
  if (err) throw err

  for (var groupID in result.skillGroups) {
    console.log(result.skillGroups[groupID].groupName)
  }
})

// Set default parameters (useful for setting keyID and vCode)
eveonlinejs.setParams({
  keyID: '1234567',
  vCode: 'some random vcode'
})

// Default parameters will get merged with the parameters passed into fetch().
// The actual request will include all three parameters: keyID, vCode and characterID
eveonlinejs.fetch('char:AccountBalance', {characterID: 12345}, function (err, result) {
  if (err) throw err
  // do stuff
})
```


### Client object

The `eveonlinejs` object is multi-purpose in that it is both a namespace container and an instance of `eveonlinejs.Client`. Client objects individually maintain their own cache state and server details. If you do not want to use the default `eveonlinejs` object, feel free to construct your own client objects as you see fit.

```javascript
var eveonlinejs = require('eveonlinejs')
  , client = new eveonlinejs.Client({url: url, cache: cache})

client.fetch('...', function (err, result) {
  // ...
})
```


### Caching

* Easily extendible
* Asynchronous store/read
* Ships with `eveonlinejs.cache.FileCache` and `eveonlinejs.cache.MemoryCache`
* Defaults to `eveonlinejs.cache.MemoryCache` (it is highly recommended you switch to FileCache)

```javascript
var eveonlinejs = require('eveonlinejs')

eveonlinejs.setCache(new eveonlinejs.cache.FileCache({path: '...'}))
```

### Tests

eveonline.js is mostly tested, but not completely. Any contributions, especially to tests are greatly appreciated.

Run tests with (requires mocha):
```
npm test
```

### License

Hamser is licensed under the MIT license:
```
Copyright (c) 2012 <NAME>

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
associated documentation files (the "Software"), to deal in the Software without restriction,
including without limitation the rights to use, copy, modify, merge, publish, distribute,<commit_msg>added localAddress as interface to options<commit_after># eveonline.js [![](https://secure.travis-ci.org/MichaelErmer/eveonlinejs.png)](http://travis-ci.org/#!/MichaelErmer/eveonlinejs)


**An asynchronous EVE Online API client for Node.js** 

- no function mapping
- direct access
- asynchronous
- caching

**This is a continued version of https://github.com/kuja/hamster**

### Installation

```
npm install eveonlinejs
```

### Examples

```javascript
var eveonlinejs = require('eveonlinejs')

// Print a list of skill groups
eveonlinejs.fetch('eve:SkillTree', function (err, result) {
  if (err) throw err

  for (var groupID in result.skillGroups) {
    console.log(result.skillGroups[groupID].groupName)
  }
})

// Set default parameters (useful for setting keyID and vCode)
eveonlinejs.setParams({
  keyID: '1234567',
  vCode: 'some random vcode'
})

// Default parameters will get merged with the parameters passed into fetch().
// The actual request will include all three parameters: keyID, vCode and characterID
eveonlinejs.fetch('char:AccountBalance', {characterID: 12345}, function (err, result) {
  if (err) throw err
  // do stuff
})
```


### Client object

The `eveonlinejs` object is multi-purpose in that it is both a namespace container and an instance of `eveonlinejs.Client`. Client objects individually maintain their own cache state and server details. If you do not want to use the default `eveonlinejs` object, feel free to construct your own client objects as you see fit.

```javascript
var eveonlinejs = require('eveonlinejs')
  , client = new eveonlinejs.Client({url: url, cache: cache})

client.fetch('...', function (err, result) {
  // ...
})
```


### Caching

* Easily extendible
* Asynchronous store/read
* Ships with `eveonlinejs.cache.FileCache` and `eveonlinejs.cache.MemoryCache`
* Defaults to `eveonlinejs.cache.MemoryCache` (it is highly recommended you switch to FileCache)

```javascript
var eveonlinejs = require('eveonlinejs')

eveonlinejs.setCache(new eveonlinejs.cache.FileCache({path: '...'}))
```

### Multiple outgoing addresses

```javascript
eveonlinejs.setInterface('172.16.58.3');
```


### Tests

eveonline.js is mostly tested, but not completely. Any contributions, especially to tests are greatly appreciated.

Run tests with (requires mocha):
```
npm test
```

### License

Hamser is licensed under the MIT license:
```
Copyright (c) 2012 <NAME>

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
associated documentation files (the "Software"), to deal in the Software without restriction,
including without limitation the rights to use, copy, modify, merge, publish, distribute,
{'fraction_non_alphanumeric': 0.11502570938868786, 'fraction_numerical': 0.0076175966482574745, 'mean_word_length': 4.771428571428571, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 5, 'https://': 4, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 1, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3415631', 'n_tokens_mistral': 1594, 'n_tokens_neox': 1486, 'n_words': 561}