aladac/eveapi

View on GitHub
README.md

Summary

Maintainability
Test Coverage
# DEPRECATED!
see: [https://developers.eveonline.com/blog/article/a-eulogy-for-xml-crest](https://developers.eveonline.com/blog/article/a-eulogy-for-xml-crest)


![EVEApi for ruby](https://github.com/aladac/eveapi/raw/master/doc/eveapi.png)

[![Gem Version](https://badge.fury.io/rb/eveapi.svg)](http://badge.fury.io/rb/eveapi)
[![Build Status](https://secure.travis-ci.org/aladac/eveapi.svg?branch=master)](https://travis-ci.org/aladac/eveapi)
[![Code Climate](https://codeclimate.com/github/aladac/eveapi/badges/gpa.svg)](https://codeclimate.com/github/aladac/eveapi)
[![Test Coverage](https://codeclimate.com/github/aladac/eveapi/badges/coverage.svg)](https://codeclimate.com/github/aladac/eveapi/coverage)

## TOC
- [Description](#desc)
- [Documentation](#doc)
- [Install](#install)
- [Working methods](#methods)
  - [`Client`](#client)
  - [`Character`](#character)
  - [`Alliance`](#alliance)
  - [`Crest`](#crest_methods)
- [CREST](#crest)
- [Features](#feats)
- [Examples](#examples)
- [Requirements](#reqs)
- [Contributing](https://github.com/aladac/eveapi/blob/master/CONTRIBUTING.md)

<a name="name"></a>
## Description
EVE Online API Client for ruby

<a name="doc"></a>
## Documentation
- [rubydoc.info](http://rdoc.info/gems/eveapi)
- [legacy methods (wiki)](https://github.com/aladac/eveapi/wiki)

<a name="install"></a>
## Install
    $ gem install eveapi

<a name="methods"></a>
## Working methods
Working `Client` methods names can be listed by calling `EVEApi::Client#working_methods`.

Check out [rubydoc.info](http://rdoc.info/gems/eveapi) for the documentation.

*Legacy methods are available [here](https://github.com/aladac/eveapi/wiki)*

<a name="client"></a>
#### Client

- [`EVEApi::Client.new`](http://www.rubydoc.info/gems/eveapi/EVEApi/Client)
- [`EVEApi::Client#characters`](http://www.rubydoc.info/gems/eveapi/EVEApi/Client#characters-instance_method)
- [`EVEApi::Client#server_status`](http://www.rubydoc.info/gems/eveapi/EVEApi/Client#server_status-instance_method)
- [`EVEApi::Client#call_list`](http://www.rubydoc.info/gems/eveapi/EVEApi/Client#call_list-instance_method)
- [`EVEApi::Client#working_methods`](http://www.rubydoc.info/gems/eveapi/EVEApi/Client#working_methods-instance_method)
- [`EVEApi::Client#account_status`](http://www.rubydoc.info/gems/eveapi/EVEApi/Client#account_status-instance_method)
- [`EVEApi::Client#key_info`](http://www.rubydoc.info/gems/eveapi/EVEApi/Client#key_info-instance_method)

<a name="characters"></a>
#### Character

- [`EVEApi::Character#wallet_journal`](http://www.rubydoc.info/gems/eveapi/EVEApi/Character#wallet_journal-instance_method)
- [`EVEApi::Character#contracts`](http://www.rubydoc.info/gems/eveapi/EVEApi/Character#contracts-instance_method)
- [`EVEApi::Character#wallet_transactions`](http://www.rubydoc.info/gems/eveapi/EVEApi/Character#wallet_transactions-instance_method)
- [`EVEApi::Character#upcoming_calendar_events`](http://www.rubydoc.info/gems/eveapi/EVEApi/Character#upcoming_calendar_events-instance_method)
- [`EVEApi::Character#standings`](http://www.rubydoc.info/gems/eveapi/EVEApi/Character#standings-instance_method)
- [`EVEApi::Character#skill_queue`](http://www.rubydoc.info/gems/eveapi/EVEApi/Character#wallet_journal-instance_method)
- [`EVEApi::Character#skill_in_training`](http://www.rubydoc.info/gems/eveapi/EVEApi/Character#skill_in_training-instance_method)
- [`EVEApi::Character#research`](http://www.rubydoc.info/gems/eveapi/EVEApi/Character#research-instance_method)
- [`EVEApi::Character#notifications`](http://www.rubydoc.info/gems/eveapi/EVEApi/Character#notifications-instance_method)
- [`EVEApi::Character#medals`](http://www.rubydoc.info/gems/eveapi/EVEApi/Character#medals-instance_method)
- [`EVEApi::Character#market_orders`](http://www.rubydoc.info/gems/eveapi/EVEApi/Character#market_orders-instance_method)
- [`EVEApi::Character#mail_messages`](http://www.rubydoc.info/gems/eveapi/EVEApi/Character#mail_messages-instance_method)
- [`EVEApi::Character#mailing_lists`](http://www.rubydoc.info/gems/eveapi/EVEApi/Character#mailing_lists-instance_method)
- [`EVEApi::Character#industry_jobs`](http://www.rubydoc.info/gems/eveapi/EVEApi/Character#industry_jobs-instance_method)
- [`EVEApi::Character#contact_notifications`](http://www.rubydoc.info/gems/eveapi/EVEApi/Character#contact_notifications-instance_method)
- [`EVEApi::Character#contact_list`](http://www.rubydoc.info/gems/eveapi/EVEApi/Character#contact_list-instance_method)
- [`EVEApi::Character#character_sheet`](http://www.rubydoc.info/gems/eveapi/EVEApi/Character#character_sheet-instance_method)
- [`EVEApi::Character#asset_list`](http://www.rubydoc.info/gems/eveapi/EVEApi/Character#asset_list-instance_method)
- [`EVEApi::Character#account_balance`](http://www.rubydoc.info/gems/eveapi/EVEApi/Character#account_balance-instance_method)

<a name="crest_methods"></a>
#### Crest

- [`EVEApi::Crest.new`](http://www.rubydoc.info/gems/eveapi/EVEApi/Crest)
- [`EVEApi::Crest#alliances`](http://www.rubydoc.info/gems/eveapi/EVEApi/Crest#alliances-instance_method)
- [`EVEApi::Crest#types`](http://www.rubydoc.info/gems/eveapi/EVEApi/Crest#types-instance_method)

<a name="alliance"></a>
#### Alliance

- [`EVEApi::Alliance.find(id = nil)`](http://www.rubydoc.info/gems/eveapi/EVEApi/Alliance#find-instance_method)
- [`EVEApi::Alliance#info`](http://www.rubydoc.info/gems/eveapi/EVEApi/Alliance#info-instance_method)
- [`EVEApi::Alliance#corporations`](http://www.rubydoc.info/gems/eveapi/EVEApi/Alliance#corporations-instance_method)
- [`EVEApi::Alliance#to_h`](http://www.rubydoc.info/gems/eveapi/EVEApi/Alliance#to_h-instance_method)

<a name="crest"></a>
## CREST

Rudimentary CREST support is added via the `EVEApi::Crest` class.
Working mehtods


```ruby
a = Crest.new.alliances.select { |a| a.name == "Goonswarm Federation" }.first
=> #<EVEApi::Alliance:0x007fd511c48248 ...>
a.to_h
=> {
          :href => "https://public-crest.eveonline.com/alliances/1354830081/",
        :id_str => "1354830081",
    :short_name => "CONDI",
          :name => "Goonswarm Federation",
            :id => 1354830081
}
a.info['url']
=> "http://www.goonfleet.com"
a.info.keys
=> [
    [ 0] "startDate",
    [ 1] "corporationsCount",
    [ 2] "description",
    [ 3] "executorCorporation",
    [ 4] "primeHour_str",
    [ 5] "primeHour",
    [ 6] "deleted",
    [ 7] "corporationsCount_str",
    [ 8] "creatorCorporation",
    [ 9] "url",
    [10] "id_str",
    [11] "creatorCharacter",
    [12] "capitalSystem",
    [13] "corporations",
    [14] "shortName",
    [15] "id",
    [16] "name"
]
```

<a name="feats"></a>
## Features

Uses [excon](https://github.com/excon/excon),  [crack](https://github.com/jnunemaker/crack), `method_missing` and a couple of rescue blocks to automate access to EVE Online API.
- returns results as `Hash` or `Array`
- raises exceptions with messages from the API itself
- converts ruby methods like `account_api_info` to an EVE Online API request like `GET /account/APIKeyInfo.xml.aspx` along with query params.

<a name="examples"></a>
## Examples

### Getting Implant names for character
```ruby
require 'eveapi'
# initialize the client with key_id, vcode, character_id
client = Client.new(4278167, "supersecretstuff", 95512059)
# => #<EVEApi::Client:0x007fe349ad0d48 ... >
client.characters.first.character_sheet[:implants].map { |i| i[:type_name] }
# => [
#     [0] "Social Adaptation Chip - Basic",
#     [1] "Cybernetic Subprocessor - Standard",
#     [2] "Memory Augmentation - Standard",
#     [3] "Neural Boost - Standard",
#     [4] "Ocular Filter - Standard"
# ]
```

### Server status
```ruby
require 'eveapi'
client.server_status
# => {
#        :server_open => "True",
#     :online_players => "32500"
# }
```

### Showing accounts characters

```ruby
require 'eveapi'
client = EVEApi::Client.new
client.key_id = 4278167
client.vcode = "7QJg6p5BZNpDBp2FIz39dGwa7jnNaXAuYyLUVitlTQ3rY60VPBcaTpJVfYIkiW5l"
client.characters
# => {
#                 :name => "Quint Slade",
#         :character_id => "95512059",
#     :corporation_name => "Imperial Academy",
#       :corporation_id => "1000166",
#          :alliance_id => "0",
#        :alliance_name => "",
#           :faction_id => "0",
#         :faction_name => ""
# }
```

## Requirements
<a name="reqs"></a>
`excon` and `crack` automatically installed as dependencies during `gem install`, or `bundle install` in development.

## Copyright

Copyright (c) 2015 Adam Ladachowski

See [LICENSE.txt](https://github.com/aladac/eveapi/blob/master/LICENSE.txt) for details.