eve-api 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/README +8 -0
- data/lib/eve-api.rb +6 -0
- data/lib/eve-api/common.rb +7 -0
- data/lib/eve-api/eve-api.rb +138 -0
- data/lib/eve-api/exceptions.rb +16 -0
- data/lib/eve-api/transport.rb +288 -0
- data/tests/general.rb +82 -0
- metadata +52 -0
data/README
ADDED
data/lib/eve-api.rb
ADDED
@@ -0,0 +1,138 @@
|
|
1
|
+
module EveAPI
|
2
|
+
|
3
|
+
class API
|
4
|
+
include Common
|
5
|
+
def initialize(*args)
|
6
|
+
@keystore = KeyStore.new
|
7
|
+
@keystore << User.new(extract_options_from_args!(args)) if args.length > 0
|
8
|
+
end
|
9
|
+
def keystore
|
10
|
+
@keystore
|
11
|
+
end
|
12
|
+
def users
|
13
|
+
@keystore.users
|
14
|
+
end
|
15
|
+
def <<(user)
|
16
|
+
@keystore << user
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
class KeyStore
|
21
|
+
def initialize(*args)
|
22
|
+
@users = {}
|
23
|
+
args.each do |user|
|
24
|
+
users[user.id] = user
|
25
|
+
end
|
26
|
+
end
|
27
|
+
def <<(user)
|
28
|
+
@users[user.id] = user
|
29
|
+
end
|
30
|
+
def users
|
31
|
+
@users.values
|
32
|
+
end
|
33
|
+
def [](id)
|
34
|
+
@users[id]
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
class Base
|
39
|
+
def initialize(options, api=nil)
|
40
|
+
@api ||= api
|
41
|
+
@api ||= Transport::API.new(options)
|
42
|
+
@options = options
|
43
|
+
end
|
44
|
+
def id
|
45
|
+
return(@options[:id])
|
46
|
+
end
|
47
|
+
def type
|
48
|
+
return(@options[:type])
|
49
|
+
end
|
50
|
+
def method_missing(method, *args)
|
51
|
+
return(@options[method]) if @options.has_key?(method)
|
52
|
+
raise(Exceptions::AttributeException,"unknown attribute #{method}")
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
class User < Base
|
57
|
+
include Common
|
58
|
+
def initialize(*args)
|
59
|
+
super(extract_options_from_args!(args))
|
60
|
+
raise(Exceptions::InputException, "id required") unless @options[:id]
|
61
|
+
raise(Exceptions::InputException, "api_key required") unless @options[:api_key]
|
62
|
+
end
|
63
|
+
def characters
|
64
|
+
characters = []
|
65
|
+
@api.characters.each do |raw_character_id, raw_character|
|
66
|
+
characters << Character.new(raw_character, @api)
|
67
|
+
end
|
68
|
+
return characters
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
class Character < Base
|
73
|
+
def corporation
|
74
|
+
return(Corporation.new({:id => corporation_id, :name => corporation_name}, @api, self))
|
75
|
+
end
|
76
|
+
def accounts
|
77
|
+
accounts = []
|
78
|
+
@api.account_balances(id, :char).each do |raw_account|
|
79
|
+
accounts << Account.new(raw_account, @api, self, :char)
|
80
|
+
end
|
81
|
+
return accounts
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
class Corporation < Base
|
86
|
+
def initialize(options, api, character)
|
87
|
+
super(options, api)
|
88
|
+
options[:character] = character
|
89
|
+
@character = character
|
90
|
+
end
|
91
|
+
def accounts
|
92
|
+
accounts = []
|
93
|
+
@api.account_balances(@character.id, :corp).each do |raw_account|
|
94
|
+
accounts << Account.new(raw_account, @api, @character, :corp)
|
95
|
+
end
|
96
|
+
return accounts
|
97
|
+
end
|
98
|
+
def members
|
99
|
+
members = []
|
100
|
+
@api.member_tracking(@character.id).each do |raw_member_id, raw_member|
|
101
|
+
members << Member.new(raw_member, @api)
|
102
|
+
end
|
103
|
+
return members
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
107
|
+
class Account < Base
|
108
|
+
def initialize(options, api, character, type)
|
109
|
+
super(options, api)
|
110
|
+
options[:character] = character
|
111
|
+
options[:type] = type
|
112
|
+
end
|
113
|
+
def journal
|
114
|
+
journal = []
|
115
|
+
@api.account_journal(character.id, type, key).each do |raw_journal_entry|
|
116
|
+
journal << JournalEntry.new(raw_journal_entry, @api)
|
117
|
+
end
|
118
|
+
return journal
|
119
|
+
end
|
120
|
+
def transactions
|
121
|
+
transactions = []
|
122
|
+
@api.account_transactions(character.id, type, key).each do |raw_transaction|
|
123
|
+
transactions << Transaction.new(raw_transaction, @api)
|
124
|
+
end
|
125
|
+
return transactions
|
126
|
+
end
|
127
|
+
end
|
128
|
+
|
129
|
+
class JournalEntry < Base
|
130
|
+
end
|
131
|
+
|
132
|
+
class Transaction < Base
|
133
|
+
end
|
134
|
+
|
135
|
+
class Member < Base
|
136
|
+
end
|
137
|
+
|
138
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module EveAPI
|
2
|
+
module Exceptions
|
3
|
+
class BaseException < Exception
|
4
|
+
end
|
5
|
+
class OptionsException < BaseException
|
6
|
+
end
|
7
|
+
class InputException < BaseException
|
8
|
+
end
|
9
|
+
class CredentialsException < BaseException
|
10
|
+
end
|
11
|
+
class APIException < BaseException
|
12
|
+
end
|
13
|
+
class AttributeException < BaseException
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,288 @@
|
|
1
|
+
require 'date'
|
2
|
+
require 'rexml/document'
|
3
|
+
require 'net/http'
|
4
|
+
require 'uri'
|
5
|
+
|
6
|
+
module EveAPI
|
7
|
+
|
8
|
+
module Transport
|
9
|
+
|
10
|
+
class API
|
11
|
+
|
12
|
+
include Common
|
13
|
+
|
14
|
+
def initialize(*args)
|
15
|
+
@options = extract_options_from_args!(args)
|
16
|
+
@transport = HTTP.new(@options)
|
17
|
+
end
|
18
|
+
|
19
|
+
def characters
|
20
|
+
result = {}
|
21
|
+
doc = @transport.call('account/Characters.xml.aspx')
|
22
|
+
doc.each_element('//rowset[@name="characters"]/row') do |row|
|
23
|
+
character = {
|
24
|
+
:id => row.attributes['characterID'].to_i,
|
25
|
+
:name => row.attributes['name'],
|
26
|
+
:corporation_id => row.attributes['corporationID'].to_i,
|
27
|
+
:corporation_name => row.attributes['corporationName']
|
28
|
+
}
|
29
|
+
result[character[:id]] = character
|
30
|
+
end
|
31
|
+
return result
|
32
|
+
end
|
33
|
+
|
34
|
+
def reftypes
|
35
|
+
result = {}
|
36
|
+
doc = @transport.call('eve/RefTypes.xml.aspx')
|
37
|
+
doc.each_element('//rowset[@name="refTypes"]/row') do |row|
|
38
|
+
reftype = {
|
39
|
+
:id => row.attributes['refTypeID'].to_i,
|
40
|
+
:name => row.attributes['refTypeName']
|
41
|
+
}
|
42
|
+
result[reftype[:id]] = reftype
|
43
|
+
end
|
44
|
+
return result
|
45
|
+
end
|
46
|
+
|
47
|
+
def skills(character_id)
|
48
|
+
doc = @transport.call('char/CharacterSheet.xml.aspx', :characterID => character_id)
|
49
|
+
base = doc.elements['//result']
|
50
|
+
result = {
|
51
|
+
:race => base.elements['race'].text,
|
52
|
+
:bloodline => base.elements['bloodLine'].text,
|
53
|
+
:gender => base.elements['gender'].text,
|
54
|
+
:balance => base.elements['balance'].text.to_f
|
55
|
+
}
|
56
|
+
attributes = base.elements['attributes'].elements
|
57
|
+
result[:attributes] = {
|
58
|
+
:intelligence => attributes['intelligence'].text.to_i,
|
59
|
+
:memory => attributes['memory'].text.to_i,
|
60
|
+
:charisma => attributes['charisma'].text.to_i,
|
61
|
+
:perception => attributes['perception'].text.to_i,
|
62
|
+
:willpower => attributes['willpower'].text.to_i
|
63
|
+
}
|
64
|
+
skills = {}
|
65
|
+
base.each_element('rowset[@name="skills"]/row') do |row|
|
66
|
+
skill = {
|
67
|
+
:id => row.attributes['typeID'].to_i,
|
68
|
+
:level => row.attributes['level'].to_i,
|
69
|
+
:skillpoints => row.attributes['skillpoints'].to_i
|
70
|
+
}
|
71
|
+
skills[skill[:id]] = skill
|
72
|
+
end
|
73
|
+
result[:skills] = skills
|
74
|
+
return result
|
75
|
+
end
|
76
|
+
|
77
|
+
def skill_in_training(character_id)
|
78
|
+
skill = {}
|
79
|
+
doc = @transport.call('char/SkillInTraining.xml.aspx', :characterID => character_id)
|
80
|
+
result = doc.elements['//result']
|
81
|
+
skill = {
|
82
|
+
:skill_id => result.elements['trainingTypeID'].text.to_i,
|
83
|
+
:to_level => result.elements['trainingToLevel'].text.to_i,
|
84
|
+
:started_at => DateTime.parse(result.elements['trainingStartTime'].text),
|
85
|
+
:ends_at => DateTime.parse(result.elements['trainingEndTime'].text),
|
86
|
+
:skillpoints => {
|
87
|
+
:from => result.elements['trainingStartSP'].text.to_i,
|
88
|
+
:to => result.elements['trainingDestinationSP'].text.to_i
|
89
|
+
}
|
90
|
+
}
|
91
|
+
return skill
|
92
|
+
end
|
93
|
+
|
94
|
+
def skilltree
|
95
|
+
result = {
|
96
|
+
:skillgroups => {},
|
97
|
+
:skills => {}
|
98
|
+
}
|
99
|
+
doc = @transport.call('eve/SkillTree.xml.aspx')
|
100
|
+
doc.each_element('//rowset[@name="skillGroups"]/row') do |row|
|
101
|
+
skillgroup = {
|
102
|
+
:id => row.attributes['groupID'].to_i,
|
103
|
+
:name => row.attributes['groupName'],
|
104
|
+
}
|
105
|
+
skills = []
|
106
|
+
row.each_element('rowset[@name="skills"]/row') do |skill_row|
|
107
|
+
skill = {
|
108
|
+
:id => skill_row.attributes['typeID'].to_i,
|
109
|
+
:name => skill_row.attributes['typeName'],
|
110
|
+
:rank => skill_row.elements['rank'].text.to_i,
|
111
|
+
:description => skill_row.elements['description'].text
|
112
|
+
}
|
113
|
+
prerequisites = []
|
114
|
+
skill_row.each_element('rowset[@name="requiredSkills"]/row') do |prerequisite_row|
|
115
|
+
prerequisites << prerequisite_row.attributes["typeID"].to_i
|
116
|
+
end
|
117
|
+
skill[:prerequisites] = prerequisites
|
118
|
+
skills << skill[:id]
|
119
|
+
result[:skills][skill[:id]] = skill
|
120
|
+
end
|
121
|
+
skillgroup[:skills] = skills
|
122
|
+
result[:skillgroups][skillgroup[:id]] = skillgroup
|
123
|
+
break
|
124
|
+
end
|
125
|
+
return result
|
126
|
+
end
|
127
|
+
|
128
|
+
def sovereignty
|
129
|
+
sovereignty = {}
|
130
|
+
doc = @transport.call('map/Sovereignty.xml.aspx')
|
131
|
+
doc.each_element('//rowset[@name="solarSystems"]/row') do |row|
|
132
|
+
solarsystem = {
|
133
|
+
:id => row.attributes['solarSystemID'].to_i,
|
134
|
+
:name => row.attributes['solarSystemName'],
|
135
|
+
:alliance_id => row.attributes['allianceID'].to_i,
|
136
|
+
:faction_id => row.attributes['factionID'].to_i,
|
137
|
+
:constellation_sovereignty => (row.attributes['constellationSovereignty'] != '0'),
|
138
|
+
:sovereignty_level => row.attributes['sovereigntyLevel'].to_i
|
139
|
+
}
|
140
|
+
sovereignty[solarsystem[:id]] = solarsystem
|
141
|
+
end
|
142
|
+
return sovereignty
|
143
|
+
end
|
144
|
+
|
145
|
+
def account_balances(character_id, type)
|
146
|
+
accounts = []
|
147
|
+
doc = @transport.call("#{type.to_s}/AccountBalance.xml.aspx", :characterID => character_id)
|
148
|
+
doc.each_element('//rowset[@name="accounts"]/row') do |row|
|
149
|
+
account = {
|
150
|
+
:id => row.attributes['accountID'].to_i,
|
151
|
+
:key => row.attributes['accountKey'].to_i,
|
152
|
+
:balance => row.attributes['balance'].to_f
|
153
|
+
}
|
154
|
+
accounts << account
|
155
|
+
end
|
156
|
+
return accounts
|
157
|
+
end
|
158
|
+
|
159
|
+
def account_journal(character_id, type, account_key)
|
160
|
+
journal = []
|
161
|
+
doc = @transport.call("#{type.to_s}/WalletJournal.xml.aspx", :characterID => character_id, :accountKey => account_key)
|
162
|
+
doc.each_element('//rowset[@name="entries"]/row') do |row|
|
163
|
+
entry = {
|
164
|
+
:id => row.attributes['refID'].to_i,
|
165
|
+
:reftype_id => row.attributes['refTypeID'].to_i,
|
166
|
+
:owner1 => {
|
167
|
+
:id => row.attributes['ownerID1'].to_i,
|
168
|
+
:name => row.attributes['ownerName1'].to_i
|
169
|
+
},
|
170
|
+
:owner2 => {
|
171
|
+
:id => row.attributes['ownerID2'].to_i,
|
172
|
+
:name => row.attributes['ownerName2'].to_i
|
173
|
+
},
|
174
|
+
:arg => {
|
175
|
+
:id => row.attributes['argID1'].to_i,
|
176
|
+
:name => row.attributes['argName1'].to_i
|
177
|
+
},
|
178
|
+
:amount => row.attributes['amount'].to_f,
|
179
|
+
:balance => row.attributes['balance'].to_f,
|
180
|
+
:date => DateTime.parse(row.attributes['date']),
|
181
|
+
:reason => row.attributes['reason']
|
182
|
+
}
|
183
|
+
journal << entry
|
184
|
+
end
|
185
|
+
return journal
|
186
|
+
end
|
187
|
+
|
188
|
+
def account_transactions(character_id, type, account_key)
|
189
|
+
transactions = []
|
190
|
+
doc = @transport.call("#{type.to_s}/WalletTransactions.xml.aspx", :characterID => character_id, :accountKey => account_key)
|
191
|
+
doc.each_element('//rowset[@name="transactions"]/row') do |row|
|
192
|
+
transaction = {
|
193
|
+
:id => row.attributes['transactionID'].to_i,
|
194
|
+
:type => row.attributes['transactionType'],
|
195
|
+
:date => DateTime.parse(row.attributes['transactionDateTime']),
|
196
|
+
:quantity => row.attributes['quantity'].to_i,
|
197
|
+
:item => {
|
198
|
+
:id => row.attributes['typeID'].to_i,
|
199
|
+
:name => row.attributes['typeName']
|
200
|
+
},
|
201
|
+
:price => row.attributes['price'].to_f,
|
202
|
+
:client => {
|
203
|
+
:id => row.attributes['clientID'].to_i,
|
204
|
+
:name => row.attributes['clientName']
|
205
|
+
},
|
206
|
+
:seller => {
|
207
|
+
:id => row.attributes['characterID'].to_i,
|
208
|
+
:name => row.attributes['characterName']
|
209
|
+
},
|
210
|
+
:station => {
|
211
|
+
:id => row.attributes['stationID'].to_i,
|
212
|
+
:name => row.attributes['stationName']
|
213
|
+
}
|
214
|
+
}
|
215
|
+
transactions << transaction
|
216
|
+
end
|
217
|
+
return transactions
|
218
|
+
end
|
219
|
+
|
220
|
+
def member_tracking(character_id)
|
221
|
+
members = {}
|
222
|
+
doc = @transport.call('corp/MemberTracking.xml.aspx', :characterID => character_id)
|
223
|
+
doc.each_element('//rowset[@name="members"]/row') do |row|
|
224
|
+
member = {
|
225
|
+
:id => row.attributes['characterID'].to_i,
|
226
|
+
:name => row.attributes['name'],
|
227
|
+
:title => row.attributes['title'],
|
228
|
+
:base => {
|
229
|
+
:id => row.attributes['baseID'].to_i,
|
230
|
+
:name => row.attributes['base']
|
231
|
+
},
|
232
|
+
:ship => {
|
233
|
+
:id => row.attributes['shipTypeID'].to_i,
|
234
|
+
:name => row.attributes['shipType']
|
235
|
+
},
|
236
|
+
:last => {
|
237
|
+
:logon => DateTime.parse(row.attributes['logonDateTime']),
|
238
|
+
:logoff => DateTime.parse(row.attributes['logoffDateTime'])
|
239
|
+
},
|
240
|
+
:location => {
|
241
|
+
:id => row.attributes['locationID'].to_i,
|
242
|
+
:name => row.attributes['location']
|
243
|
+
},
|
244
|
+
:roles => row.attributes['roles'].to_i,
|
245
|
+
:grantable_roles => row.attributes['grantableRoles'].to_i
|
246
|
+
}
|
247
|
+
members[member[:id]] = member
|
248
|
+
end
|
249
|
+
return members
|
250
|
+
end
|
251
|
+
end
|
252
|
+
|
253
|
+
class HTTP
|
254
|
+
|
255
|
+
include Common
|
256
|
+
|
257
|
+
EVE_API_URI_BASE = "http://api.eve-online.com/"
|
258
|
+
|
259
|
+
def initialize(*args)
|
260
|
+
options = extract_options_from_args!(args)
|
261
|
+
@base_params = {}
|
262
|
+
@base_params[:userID] = options[:id] or raise Exceptions::OptionsException, "id is missing"
|
263
|
+
@base_params[:apiKey] = options[:api_key] or raise Exceptions::OptionsException, "api_key is missing"
|
264
|
+
@base_params[:betaAccess] = options[:beta_key] if options[:beta_key]
|
265
|
+
end
|
266
|
+
|
267
|
+
def call(uri, *args)
|
268
|
+
params = extract_options_from_args!(args).merge(@base_params)
|
269
|
+
#pp params
|
270
|
+
res = Net::HTTP.post_form(URI.parse("#{EVE_API_URI_BASE}#{uri}"), params)
|
271
|
+
xml = '<?xml version="1.0"?>' + res.body
|
272
|
+
doc = REXML::Document.new(xml)
|
273
|
+
#puts doc
|
274
|
+
if error = doc.elements['//error']
|
275
|
+
case error.attributes['code'][0,1]
|
276
|
+
when '1': raise Exceptions::InputException, error.text
|
277
|
+
when '2': raise Exceptions::CredentialsException, error.text
|
278
|
+
else raise Exceptions::APIException, error.text
|
279
|
+
end
|
280
|
+
end
|
281
|
+
return doc
|
282
|
+
end
|
283
|
+
|
284
|
+
end
|
285
|
+
|
286
|
+
end
|
287
|
+
|
288
|
+
end
|
data/tests/general.rb
ADDED
@@ -0,0 +1,82 @@
|
|
1
|
+
require 'eve-api'
|
2
|
+
require 'yaml'
|
3
|
+
|
4
|
+
include EveAPI
|
5
|
+
|
6
|
+
# create a file called "config.yml" in the tests dir that looks like:
|
7
|
+
#
|
8
|
+
# user_id: <EVE API User ID>
|
9
|
+
# api_key: <EVE API Key>
|
10
|
+
|
11
|
+
config = YAML::load_file('../tests/config.yml')
|
12
|
+
|
13
|
+
raise "config.yml missing attribute user_id" unless config.has_key?('user_id')
|
14
|
+
raise "config.yml missing attribute api_key" unless config.has_key?('api_key')
|
15
|
+
|
16
|
+
api = Transport::API.new(:id => config['user_id'], :api_key => config['api_key'])
|
17
|
+
api.characters.each do |char_id, character|
|
18
|
+
begin
|
19
|
+
pp api.member_tracking(char_id)
|
20
|
+
rescue Exceptions::CredentialsException => ex
|
21
|
+
puts "CREDENTIALS EXCEPTION: #{ex.message}"
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
api = API.new(:id => config['user_id'], :api_key => config['api_key'])
|
26
|
+
|
27
|
+
api = API.new
|
28
|
+
api << User.new(:id => config['user_id'], :api_key => config['api_key'])
|
29
|
+
|
30
|
+
api.users.each do |user|
|
31
|
+
user.characters.each do |character|
|
32
|
+
puts "CHARACTER: #{character.name}"
|
33
|
+
puts " SELF ACCOUNTS:"
|
34
|
+
character.accounts.each do |account|
|
35
|
+
begin
|
36
|
+
puts " ACCOUNT: #{account.key} [balance=#{account.balance}]"
|
37
|
+
puts " TRANSACTIONS: "
|
38
|
+
account.transactions.each do |transaction|
|
39
|
+
puts " TRANSACTION: #{transaction.id} [date=#{transaction.date.strftime("%Y-%m-%d %H:%m")}]"
|
40
|
+
end
|
41
|
+
puts " JOURNAL: "
|
42
|
+
account.journal.each do |entry|
|
43
|
+
puts " ENTRY: #{entry.id} [balance=#{entry.balance}]"
|
44
|
+
end
|
45
|
+
rescue Exceptions::InputException => ex
|
46
|
+
puts " INPUT ERROR: #{ex.message}"
|
47
|
+
end
|
48
|
+
end
|
49
|
+
begin
|
50
|
+
puts " CORP MEMBERS:"
|
51
|
+
character.corporation.members.each do |member|
|
52
|
+
puts " MEMBER: #{member.id} [name=#{member.name}]"
|
53
|
+
end
|
54
|
+
rescue Exceptions::CredentialsException => ex
|
55
|
+
print " CREDENTIALS EXCEPTION: #{ex.message}"
|
56
|
+
end
|
57
|
+
puts " CORP ACCOUNTS:"
|
58
|
+
begin
|
59
|
+
character.corporation.accounts.each do |account|
|
60
|
+
begin
|
61
|
+
puts " ACCOUNT: #{account.key} [balance=#{account.balance}]"
|
62
|
+
puts " TRANSACTIONS: "
|
63
|
+
account.transactions.each do |transaction|
|
64
|
+
puts " TRANSACTION: #{transaction.id} [date=#{transaction.date.strftime("%Y-%m-%d %H:%m")}]"
|
65
|
+
end
|
66
|
+
puts " JOURNAL: "
|
67
|
+
account.journal.each do |entry|
|
68
|
+
puts " ENTRY: #{entry.id} [balance=#{entry.balance}]"
|
69
|
+
end
|
70
|
+
rescue Exceptions::InputException => ex
|
71
|
+
puts " INPUT ERROR: #{ex.message}"
|
72
|
+
end
|
73
|
+
end
|
74
|
+
rescue Exceptions::CredentialsException => ex
|
75
|
+
puts " CREDENTIALS ERROR: #{ex.message}"
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
|
81
|
+
|
82
|
+
|
metadata
ADDED
@@ -0,0 +1,52 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
rubygems_version: 0.9.2
|
3
|
+
specification_version: 1
|
4
|
+
name: eve-api
|
5
|
+
version: !ruby/object:Gem::Version
|
6
|
+
version: 0.0.1
|
7
|
+
date: 2007-06-21 00:00:00 -04:00
|
8
|
+
summary: Ruby support for EVE Online's API
|
9
|
+
require_paths:
|
10
|
+
- lib
|
11
|
+
email: ddollar@gmail.com
|
12
|
+
homepage: ""
|
13
|
+
rubyforge_project:
|
14
|
+
description:
|
15
|
+
autorequire: eve-api
|
16
|
+
default_executable:
|
17
|
+
bindir: bin
|
18
|
+
has_rdoc: true
|
19
|
+
required_ruby_version: !ruby/object:Gem::Version::Requirement
|
20
|
+
requirements:
|
21
|
+
- - ">"
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: 0.0.0
|
24
|
+
version:
|
25
|
+
platform: ruby
|
26
|
+
signing_key:
|
27
|
+
cert_chain:
|
28
|
+
post_install_message:
|
29
|
+
authors:
|
30
|
+
- David Dollar
|
31
|
+
files:
|
32
|
+
- lib/eve-api
|
33
|
+
- lib/eve-api.rb
|
34
|
+
- lib/eve-api/common.rb
|
35
|
+
- lib/eve-api/eve-api.rb
|
36
|
+
- lib/eve-api/exceptions.rb
|
37
|
+
- lib/eve-api/transport.rb
|
38
|
+
- README
|
39
|
+
test_files:
|
40
|
+
- tests/general.rb
|
41
|
+
rdoc_options: []
|
42
|
+
|
43
|
+
extra_rdoc_files:
|
44
|
+
- README
|
45
|
+
executables: []
|
46
|
+
|
47
|
+
extensions: []
|
48
|
+
|
49
|
+
requirements: []
|
50
|
+
|
51
|
+
dependencies: []
|
52
|
+
|