eaal 0.1.7 → 0.1.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/History.txt +2 -2
- data/README.rdoc +6 -6
- data/lib/eaal.rb +5 -5
- data/lib/eaal/api.rb +28 -24
- data/lib/eaal/cache/base.rb +1 -1
- data/lib/eaal/cache/file.rb +14 -12
- data/lib/eaal/exception.rb +7 -7
- data/lib/eaal/result.rb +12 -12
- data/lib/eaal/rowset.rb +10 -10
- data/test/test_eaal.rb +6 -6
- metadata +93 -107
data/History.txt
CHANGED
data/README.rdoc
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
|
4
4
|
== DESCRIPTION:
|
5
5
|
|
6
|
-
EAAL (Eve API Access Layer) is a ruby library for accessing data of the API of
|
6
|
+
EAAL (Eve API Access Layer) is a ruby library for accessing data of the API of
|
7
7
|
the game Eve Online
|
8
8
|
|
9
9
|
== FEATURES/PROBLEMS:
|
@@ -18,7 +18,7 @@ Initialize the API Object
|
|
18
18
|
|
19
19
|
api = EAAL::API.new("my Userid", "my API key"[, "scope for requests"])
|
20
20
|
|
21
|
-
the scope is the one used for the API requests,
|
21
|
+
the scope is the one used for the API requests,
|
22
22
|
ex. account/char/corp/eve/map/server
|
23
23
|
see http://wiki.eve-id.net/APIv2_Page_Index
|
24
24
|
the scope can be changed during runtime and defaults to account
|
@@ -44,17 +44,17 @@ Example 2, getting the id for a given character name
|
|
44
44
|
|
45
45
|
Example 3, Example 2 in short
|
46
46
|
puts EAAL::Api.new("my userid", "my API key", "eve").CharacterID(:names => "Peter Powers").characters.name
|
47
|
-
|
47
|
+
|
48
48
|
|
49
49
|
Errors returned by the EVE API are handled a bit unique,
|
50
|
-
since i wanted to have them pretty much dynamic (so i dont need to hack EAAL
|
50
|
+
since i wanted to have them pretty much dynamic (so i dont need to hack EAAL
|
51
51
|
whenever CCP adds a new Error) you have to use dynamic created classes to catch 'em
|
52
52
|
(if you dont want to catch EAAL::Exception::EveAPIException in general)
|
53
53
|
so what you do is:
|
54
54
|
|
55
55
|
Example 4, catching a specific EVE API Exception
|
56
56
|
begin
|
57
|
-
api.Killlog("characterID" => "12345") #this example offcourse
|
57
|
+
api.Killlog("characterID" => "12345") #this example offcourse
|
58
58
|
# assumes your not having the key for character 12345 loaded ;)
|
59
59
|
rescue EAAL::Exception.EveAPIException(201)
|
60
60
|
#dosomething
|
@@ -89,7 +89,7 @@ the XML file will be load.
|
|
89
89
|
* sudo gem install eaal
|
90
90
|
|
91
91
|
== THANKS:
|
92
|
-
special thanks go to James "Ix_Forres" Harrison for his code cleanups and
|
92
|
+
special thanks go to James "Ix_Forres" Harrison for his code cleanups and
|
93
93
|
his memcache cache handler
|
94
94
|
thanks also go to Davide Rambaldi and Ian Delahorno who contributed
|
95
95
|
several bug fixes.
|
data/lib/eaal.rb
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
# This library is licensed under the terms found in
|
4
4
|
# the LICENSE file distributed with it
|
5
5
|
#
|
6
|
-
# TODO:
|
6
|
+
# TODO:
|
7
7
|
# - more documenation
|
8
8
|
# - write tests (i know, i know, i fail badly)
|
9
9
|
# - more error handling (im certain i missed a few possibles)
|
@@ -12,7 +12,7 @@
|
|
12
12
|
# THANKS:
|
13
13
|
# thanks go to all people on irc.coldfront.net, channel #eve-dev
|
14
14
|
# special thanks go to lisa (checkout her eve api library, reve,
|
15
|
-
# much more mature then mine) for answering my endless questions
|
15
|
+
# much more mature then mine) for answering my endless questions
|
16
16
|
# about ruby stuff (and for one or two snippets i stole from reve)
|
17
17
|
#++
|
18
18
|
# Neat little hack to get around path issues on require
|
@@ -35,12 +35,12 @@ require 'eaal/result'
|
|
35
35
|
require 'eaal/rowset'
|
36
36
|
module EAAL
|
37
37
|
mattr_reader :version_string
|
38
|
-
VERSION = "0.1.
|
38
|
+
VERSION = "0.1.8" # fix for Hoe.spec 2.x
|
39
39
|
@@version_string = "EAAL" + VERSION # the version string, used as client name in http requests
|
40
|
-
|
40
|
+
|
41
41
|
mattr_accessor :api_base, :additional_request_parameters, :cache
|
42
42
|
@@api_base = "http://api.eve-online.com/" # the url used as basis for all requests, you might want to use gatecamper url or a personal proxy instead
|
43
|
-
@@additional_request_parameters = {} # hash, if :key => value pairs are added those will be added to each request
|
43
|
+
@@additional_request_parameters = {} # hash, if :key => value pairs are added those will be added to each request
|
44
44
|
@@cache = EAAL::Cache::NoCache.new # caching object, see EAAL::Cache::FileCache for an Example
|
45
45
|
end
|
46
46
|
require 'eaal/api'
|
data/lib/eaal/api.rb
CHANGED
@@ -1,37 +1,37 @@
|
|
1
1
|
|
2
2
|
# EAAL::API class
|
3
3
|
# Usage Example:
|
4
|
-
# api = EAAL::API.new("my
|
4
|
+
# api = EAAL::API.new("my keyID", "my API key")
|
5
5
|
# result = api.Characters
|
6
6
|
# result.characters.each{|character|
|
7
7
|
# puts character.name
|
8
8
|
# }
|
9
9
|
class EAAL::API
|
10
|
-
attr_accessor :
|
11
|
-
|
10
|
+
attr_accessor :keyid, :vcode, :scope
|
11
|
+
|
12
12
|
# constructor
|
13
13
|
# Expects:
|
14
|
-
# *
|
15
|
-
# *
|
14
|
+
# * keyID (String | Integer) the keyID
|
15
|
+
# * vCode (String) the vCode
|
16
16
|
# * scope (String) defaults to account
|
17
|
-
def initialize(
|
18
|
-
self.
|
19
|
-
self.
|
17
|
+
def initialize(keyid, vcode, scope="account")
|
18
|
+
self.keyid = keyid.to_s
|
19
|
+
self.vcode = vcode.to_s
|
20
20
|
self.scope = scope.to_s
|
21
21
|
end
|
22
|
-
|
22
|
+
|
23
23
|
# create an xml request according to the method called
|
24
|
-
# this is used to dynamicaly create api calls and
|
24
|
+
# this is used to dynamicaly create api calls and
|
25
25
|
# should usually not be called directly
|
26
|
-
# * method (const)
|
27
|
-
# * args
|
26
|
+
# * method (const)
|
27
|
+
# * args
|
28
28
|
def method_missing(method, *args)
|
29
29
|
scope = self.scope
|
30
30
|
args_hash = args.first
|
31
31
|
args_hash = {} unless args_hash
|
32
32
|
self.request_xml(scope, method.id2name, args_hash)
|
33
33
|
end
|
34
|
-
|
34
|
+
|
35
35
|
# make a request to the api. will use cache if set.
|
36
36
|
# usually not called by the user directly
|
37
37
|
# * scope (String)
|
@@ -39,39 +39,43 @@ class EAAL::API
|
|
39
39
|
# * opts (Hash)
|
40
40
|
def request_xml(scope, name, opts)
|
41
41
|
opts = EAAL.additional_request_parameters.merge(opts)
|
42
|
-
xml = EAAL.cache.load(self.
|
42
|
+
xml = EAAL.cache.load(self.keyid, self.vcode, scope, name,opts)
|
43
43
|
if not xml
|
44
44
|
source = URI.parse(EAAL.api_base + scope + '/' + name +'.xml.aspx')
|
45
45
|
req_path = source.path + format_url_request(opts.merge({
|
46
|
-
:
|
47
|
-
:
|
46
|
+
:keyid => self.keyid,
|
47
|
+
:vcode => self.vcode}))
|
48
48
|
req = Net::HTTP::Get.new(req_path)
|
49
49
|
req[EAAL.version_string]
|
50
|
-
res = Net::HTTP.new(source.host, source.port).start {|http| http.request(req) } #one request for now
|
50
|
+
res = Net::HTTP.new(source.host, source.port).start {|http| http.request(req) } #one request for now
|
51
51
|
case res
|
52
52
|
when Net::HTTPOK
|
53
53
|
when Net::HTTPNotFound
|
54
54
|
raise EAAL::Exception::APINotFoundError.new("The requested API (#{scope} / #{name}) could not be found.")
|
55
|
-
else
|
55
|
+
else
|
56
56
|
raise EAAL::Exception::HTTPError.new("An HTTP Error occured, body: " + res.body)
|
57
57
|
end
|
58
|
-
EAAL.cache.save(self.
|
58
|
+
EAAL.cache.save(self.keyid, self.vcode, scope,name,opts, res.body)
|
59
59
|
xml = res.body
|
60
60
|
end
|
61
61
|
doc = Hpricot.XML(xml)
|
62
62
|
result = EAAL::Result.new(scope.capitalize + name, doc)
|
63
63
|
end
|
64
|
-
|
64
|
+
|
65
65
|
# Turns a hash into ?var=baz&bam=boo
|
66
66
|
# stolen from Reve (thx lisa)
|
67
67
|
# * opts (Hash)
|
68
68
|
def format_url_request(opts)
|
69
|
-
req =
|
69
|
+
req = ''
|
70
|
+
|
71
|
+
opts.delete_if {|k,v| v.nil? }
|
72
|
+
return req if opts.empty?
|
73
|
+
|
70
74
|
opts.stringify_keys!
|
71
|
-
opts.keys.sort.
|
72
|
-
|
75
|
+
opts = opts.keys.sort.map do |key|
|
76
|
+
"#{CGI.escape(key.to_s)}=#{CGI.escape(opts[key].to_s)}"
|
73
77
|
end
|
74
|
-
req
|
78
|
+
req = '?' + opts.join('&')
|
75
79
|
end
|
76
80
|
|
77
81
|
end
|
data/lib/eaal/cache/base.rb
CHANGED
data/lib/eaal/cache/file.rb
CHANGED
@@ -6,27 +6,27 @@
|
|
6
6
|
# EAAL.cache = EAAL::Cache::FileCache.new("/path/to/place/to/store/xml/data")
|
7
7
|
class EAAL::Cache::FileCache
|
8
8
|
attr_accessor :basepath
|
9
|
-
|
9
|
+
|
10
10
|
# constructor, takes one argument which is the path
|
11
11
|
# where files should be written
|
12
12
|
# * basepath (String) path which should be used to store cached data. defaults to $HOME/.eaal/cache/
|
13
13
|
def initialize(basepath = "#{ENV['HOME']}/.eaal/cache")
|
14
14
|
if basepath[(basepath.length) -1, basepath.length] != "/"
|
15
|
-
basepath += "/"
|
15
|
+
basepath += "/"
|
16
16
|
end
|
17
17
|
@basepath = basepath
|
18
18
|
end
|
19
|
-
|
19
|
+
|
20
20
|
# create the path/filename for the cache file
|
21
21
|
def filename(userid, apikey, scope, name, args)
|
22
22
|
ret =""
|
23
23
|
args.delete_if { |k,v| (v || "").to_s.length == 0 }
|
24
24
|
h = args.stringify_keys
|
25
|
-
ret += h.sort.flatten.collect{ |e| e.to_s }.join('
|
26
|
-
hash = ret.gsub(
|
25
|
+
ret += h.sort.flatten.collect{ |e| e.to_s }.join('_')
|
26
|
+
hash = ret.gsub(/_$/,'')
|
27
27
|
"#{@basepath}#{userid}/#{apikey}/#{scope}/#{name}/Request_#{hash}.xml"
|
28
28
|
end
|
29
|
-
|
29
|
+
|
30
30
|
# load xml if available, return false if not available, or cachedUntil ran out
|
31
31
|
def load(userid, apikey, scope, name, args)
|
32
32
|
filename = self.filename(userid, apikey,scope,name,args)
|
@@ -42,21 +42,23 @@ class EAAL::Cache::FileCache
|
|
42
42
|
end
|
43
43
|
ret
|
44
44
|
end
|
45
|
-
|
45
|
+
|
46
46
|
# validate cached datas cachedUntil
|
47
47
|
def validate_cache(xml, name)
|
48
48
|
doc = Hpricot.XML(xml)
|
49
|
+
cached_until = (doc/"/eveapi/cachedUntil").inner_html.to_time
|
49
50
|
if name == "WalletJournal"
|
50
|
-
|
51
|
-
|
52
|
-
|
51
|
+
result = Time.at(cached_until.to_i + 3600) > Time.now.utc
|
52
|
+
else
|
53
|
+
result = cached_until > Time.now.utc
|
53
54
|
end
|
55
|
+
result
|
54
56
|
end
|
55
|
-
|
57
|
+
|
56
58
|
# save xml data to file
|
57
59
|
def save(userid, apikey, scope, name, args, xml)
|
58
60
|
filename = self.filename(userid, apikey,scope,name,args)
|
59
61
|
FileUtils.mkdir_p(File.dirname(filename))
|
60
|
-
File.open(filename,'
|
62
|
+
File.open(filename,'wb') { |f| f.print xml }
|
61
63
|
end
|
62
64
|
end
|
data/lib/eaal/exception.rb
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
module EAAL::Exception
|
7
7
|
# creates the class for an EveAPIException
|
8
8
|
def self.EveAPIException(nr)
|
9
|
-
classname = "EveAPIException#{nr}"
|
9
|
+
classname = "EveAPIException#{nr}"
|
10
10
|
if not Object.const_defined? classname
|
11
11
|
klass = Object.const_set(classname, Class.new(EAAL::Exception::EveAPIException))
|
12
12
|
else
|
@@ -14,27 +14,27 @@ module EAAL::Exception
|
|
14
14
|
end
|
15
15
|
klass
|
16
16
|
end
|
17
|
-
|
17
|
+
|
18
18
|
# raise the eve API exceptions, class will be dynamicaly created by classname
|
19
19
|
# EveAPIException followed by the APIs exception Number
|
20
20
|
def self.raiseEveAPIException(nr, msg)
|
21
21
|
raise EAAL::Exception.EveAPIException(nr).new(msg)
|
22
22
|
end
|
23
|
-
|
23
|
+
|
24
24
|
# all EAAL exceptions should extend this.
|
25
25
|
class EAALError < StandardError
|
26
26
|
end
|
27
|
-
|
27
|
+
|
28
28
|
# Used when an http error is encountered
|
29
29
|
class HTTPError < EAALError
|
30
30
|
end
|
31
|
-
|
31
|
+
|
32
32
|
# Used when the Eve API returns a 404
|
33
33
|
class APINotFoundError < HTTPError
|
34
34
|
end
|
35
|
-
|
35
|
+
|
36
36
|
# All API Errors should be derived from this
|
37
37
|
class EveAPIException < EAALError
|
38
38
|
end
|
39
|
-
|
39
|
+
|
40
40
|
end
|
data/lib/eaal/result.rb
CHANGED
@@ -6,20 +6,20 @@
|
|
6
6
|
module EAAL
|
7
7
|
|
8
8
|
module Result
|
9
|
-
|
9
|
+
|
10
10
|
# base class for automated result class creation
|
11
11
|
class ResultBase
|
12
12
|
attr_accessor :request_time, :cached_until
|
13
13
|
end
|
14
|
-
|
15
|
-
# Result Container class, ...
|
14
|
+
|
15
|
+
# Result Container class, ...
|
16
16
|
class ResultContainer
|
17
17
|
attr_accessor :container
|
18
18
|
|
19
19
|
def initialize
|
20
20
|
self.container = {}
|
21
21
|
end
|
22
|
-
|
22
|
+
|
23
23
|
def add_element(key, val)
|
24
24
|
self.container.merge!({key => val})
|
25
25
|
end
|
@@ -34,7 +34,7 @@ module EAAL
|
|
34
34
|
attr_accessor :name, :value, :attribs
|
35
35
|
def initialize(name, value)
|
36
36
|
self.name = name
|
37
|
-
self.value = value
|
37
|
+
self.value = value
|
38
38
|
self.attribs = {}
|
39
39
|
end
|
40
40
|
|
@@ -46,12 +46,12 @@ module EAAL
|
|
46
46
|
if self.attribs.has_key?(method.id2name)
|
47
47
|
self.attribs[method.id2name]
|
48
48
|
else
|
49
|
-
self.value.send(method, *args)
|
49
|
+
self.value.send(method, *args)
|
50
50
|
end
|
51
|
-
|
51
|
+
|
52
52
|
end
|
53
|
-
|
54
|
-
# parses an xml element to create either the ResultElement, ResultContainer or Rowset
|
53
|
+
|
54
|
+
# parses an xml element to create either the ResultElement, ResultContainer or Rowset
|
55
55
|
# necessary
|
56
56
|
def self.parse_element(prefix, element)
|
57
57
|
if element.name == "rowset" then
|
@@ -64,13 +64,13 @@ module EAAL
|
|
64
64
|
cel = EAAL::Result::ResultElement.parse_element(prefix, celement)
|
65
65
|
if celement.attributes.to_hash.length > 0
|
66
66
|
container.add_element(cel.name, cel)
|
67
|
-
else
|
67
|
+
else
|
68
68
|
container.add_element(cel.name, cel.value)
|
69
69
|
end
|
70
70
|
}
|
71
71
|
value = container
|
72
72
|
else
|
73
|
-
value = element.inner_html
|
73
|
+
value = element.inner_html.gsub(/\W+/, "") #Mainly to filter tags within description element in corporationsheet.
|
74
74
|
end
|
75
75
|
re = ResultElement.new(key, value)
|
76
76
|
if element.attributes.to_hash.length > 0
|
@@ -104,7 +104,7 @@ module EAAL
|
|
104
104
|
end
|
105
105
|
}
|
106
106
|
if not Object.const_defined? classname
|
107
|
-
klass = Object.const_set(classname, Class.new(EAAL::Result::ResultBase))
|
107
|
+
klass = Object.const_set(classname, Class.new(EAAL::Result::ResultBase))
|
108
108
|
klass.class_eval do
|
109
109
|
attr_accessor(*members)
|
110
110
|
end
|
data/lib/eaal/rowset.rb
CHANGED
@@ -6,11 +6,11 @@
|
|
6
6
|
module EAAL
|
7
7
|
|
8
8
|
module Rowset
|
9
|
-
|
9
|
+
|
10
10
|
# RowsetBase class, all RowSets should be derived from this
|
11
11
|
class RowsetBase < Array
|
12
12
|
attr_accessor :name, :columns, :rowclass
|
13
|
-
|
13
|
+
|
14
14
|
# create a new row in this RowSet
|
15
15
|
def create_row(xml)
|
16
16
|
row = self.rowclass.new
|
@@ -22,32 +22,32 @@ module EAAL
|
|
22
22
|
el = EAAL::Result::ResultElement.parse_element(self.rowclass.name, child)
|
23
23
|
row.add_element(el.name, el)
|
24
24
|
}
|
25
|
-
end
|
25
|
+
end
|
26
26
|
row
|
27
27
|
end
|
28
28
|
end
|
29
|
-
|
29
|
+
|
30
30
|
# BaseClass for Rows, all Rows should be derived from this
|
31
31
|
class RowBase < EAAL::Result::ResultContainer
|
32
32
|
end
|
33
|
-
|
33
|
+
|
34
34
|
# create a new RowSet Object
|
35
35
|
# * prefix string prefix for building the RowSet name
|
36
36
|
# * xml the xml for the RowSet
|
37
37
|
def self.new(prefix, xml)
|
38
38
|
name = xml['name']
|
39
39
|
columns = xml['columns'].split(',')
|
40
|
-
|
40
|
+
|
41
41
|
classname = prefix + 'Rowset' + name.capitalize
|
42
42
|
rowname = classname + 'Row'
|
43
|
-
|
43
|
+
|
44
44
|
if not Object.const_defined? classname
|
45
|
-
klass = Object.const_set(classname, Class.new(EAAL::Rowset::RowsetBase))
|
45
|
+
klass = Object.const_set(classname, Class.new(EAAL::Rowset::RowsetBase))
|
46
46
|
else
|
47
47
|
klass = Object.const_get(classname)
|
48
48
|
end
|
49
49
|
rowset = klass.new
|
50
|
-
|
50
|
+
|
51
51
|
if not Object.const_defined? rowname
|
52
52
|
klass = Object.const_set(rowname, Class.new(EAAL::Rowset::RowBase))
|
53
53
|
klass.class_eval do
|
@@ -56,7 +56,7 @@ module EAAL
|
|
56
56
|
else
|
57
57
|
klass = Object.const_get(rowname)
|
58
58
|
end
|
59
|
-
|
59
|
+
|
60
60
|
rowset.name = name
|
61
61
|
rowset.columns = columns
|
62
62
|
rowset.rowclass = klass
|
data/test/test_eaal.rb
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
require File.dirname(__FILE__) + '/test_helper.rb'
|
2
2
|
|
3
3
|
class TestEaal < Test::Unit::TestCase
|
4
|
-
|
5
|
-
# prepare the api object. sets EAAL to use FileCache to load fixtures
|
4
|
+
|
5
|
+
# prepare the api object. sets EAAL to use FileCache to load fixtures
|
6
6
|
def setup
|
7
7
|
EAAL.cache = EAAL::Cache::FileCache.new(File.dirname(__FILE__) + '/fixtures/')
|
8
8
|
@api = EAAL::API.new('test','test')
|
@@ -15,7 +15,7 @@ class TestEaal < Test::Unit::TestCase
|
|
15
15
|
|
16
16
|
# some random tests if parsing the xml builds the right class
|
17
17
|
def test_api_classes
|
18
|
-
@api.scope = "char"
|
18
|
+
@api.scope = "char"
|
19
19
|
assert_raise EAAL::Exception.EveAPIException(105) do @api.Killlog end
|
20
20
|
assert_equal @api.Killlog(:characterID => 12345).class.name, "CharKilllogResult"
|
21
21
|
assert_equal @api.Killlog(:characterID => 12345).kills.class.name, "CharKilllogRowsetKills"
|
@@ -23,13 +23,13 @@ class TestEaal < Test::Unit::TestCase
|
|
23
23
|
assert_equal @api.Killlog(:characterID => 12345).kills.first.victim.class.name, "EAAL::Result::ResultElement"
|
24
24
|
assert_equal @api.Killlog(:characterID => 12345).kills.first.attackers.first.class.name, "CharKilllogRowsetKillsRowRowsetAttackersRow"
|
25
25
|
end
|
26
|
-
|
26
|
+
|
27
27
|
# some random data checks to ensure stuff can be read
|
28
28
|
def test_api_parse_data
|
29
29
|
@api.scope = "account"
|
30
30
|
assert_equal @api.Characters.characters.first.name, "Test Tester"
|
31
31
|
assert_equal @api.Characters.characters.second.corporationID, "7890"
|
32
|
-
@api.scope = "char"
|
32
|
+
@api.scope = "char"
|
33
33
|
assert_equal @api.Killlog(:characterID => 12345).kills.length, 1
|
34
34
|
assert_equal @api.Killlog(:characterID => 12345).kills.first.victim.characterName, "Peter Powers"
|
35
35
|
assert_equal @api.Killlog(:characterID => 12345).kills.first.attackers.first.characterID, "12345"
|
@@ -81,7 +81,7 @@ class TestEaal < Test::Unit::TestCase
|
|
81
81
|
# Note if I run memcached I get a new error: EAAL::Exception::APINotFoundError: The requested API (account / Chracters) could not be found.
|
82
82
|
# this beacuse eaal request to EVE api the Test Tester PG....
|
83
83
|
# TODO: API needs mocking properly instead of depending on file cache for test loading.
|
84
|
-
|
84
|
+
|
85
85
|
EAAL.cache = EAAL::Cache::MemcachedCache.new
|
86
86
|
|
87
87
|
assert_instance_of EAAL::Cache::MemcachedCache, EAAL.cache
|
metadata
CHANGED
@@ -1,116 +1,110 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: eaal
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.8
|
5
5
|
prerelease:
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 1
|
9
|
-
- 7
|
10
|
-
version: 0.1.7
|
11
6
|
platform: ruby
|
12
|
-
authors:
|
7
|
+
authors:
|
13
8
|
- Peter Petermann
|
14
9
|
autorequire:
|
15
10
|
bindir: bin
|
16
11
|
cert_chain: []
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
dependencies:
|
21
|
-
- !ruby/object:Gem::Dependency
|
12
|
+
date: 2012-08-30 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
22
15
|
name: activesupport
|
23
|
-
|
24
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
25
17
|
none: false
|
26
|
-
requirements:
|
27
|
-
- -
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
hash: 11
|
30
|
-
segments:
|
31
|
-
- 2
|
32
|
-
- 0
|
33
|
-
- 2
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
34
21
|
version: 2.0.2
|
35
22
|
type: :runtime
|
36
|
-
version_requirements: *id001
|
37
|
-
- !ruby/object:Gem::Dependency
|
38
|
-
name: hpricot
|
39
23
|
prerelease: false
|
40
|
-
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
25
|
none: false
|
42
|
-
requirements:
|
43
|
-
- -
|
44
|
-
- !ruby/object:Gem::Version
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 2.0.2
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: hpricot
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0.6'
|
50
38
|
type: :runtime
|
51
|
-
version_requirements: *id002
|
52
|
-
- !ruby/object:Gem::Dependency
|
53
|
-
name: memcache-client
|
54
39
|
prerelease: false
|
55
|
-
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
56
41
|
none: false
|
57
|
-
requirements:
|
58
|
-
- -
|
59
|
-
- !ruby/object:Gem::Version
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0.6'
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: memcache-client
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ! '>='
|
52
|
+
- !ruby/object:Gem::Version
|
65
53
|
version: 1.7.1
|
66
54
|
type: :runtime
|
67
|
-
version_requirements: *id003
|
68
|
-
- !ruby/object:Gem::Dependency
|
69
|
-
name: newgem
|
70
55
|
prerelease: false
|
71
|
-
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 1.7.1
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: newgem
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
72
65
|
none: false
|
73
|
-
requirements:
|
74
|
-
- -
|
75
|
-
- !ruby/object:Gem::Version
|
76
|
-
hash: 5
|
77
|
-
segments:
|
78
|
-
- 1
|
79
|
-
- 5
|
80
|
-
- 3
|
66
|
+
requirements:
|
67
|
+
- - ! '>='
|
68
|
+
- !ruby/object:Gem::Version
|
81
69
|
version: 1.5.3
|
82
70
|
type: :development
|
83
|
-
version_requirements: *id004
|
84
|
-
- !ruby/object:Gem::Dependency
|
85
|
-
name: hoe
|
86
71
|
prerelease: false
|
87
|
-
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: 1.5.3
|
78
|
+
- !ruby/object:Gem::Dependency
|
79
|
+
name: hoe
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
88
81
|
none: false
|
89
|
-
requirements:
|
90
|
-
- -
|
91
|
-
- !ruby/object:Gem::Version
|
92
|
-
|
93
|
-
segments:
|
94
|
-
- 2
|
95
|
-
- 9
|
96
|
-
- 1
|
97
|
-
version: 2.9.1
|
82
|
+
requirements:
|
83
|
+
- - ~>
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: '3.0'
|
98
86
|
type: :development
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
87
|
+
prerelease: false
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ~>
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: '3.0'
|
94
|
+
description: ! 'EAAL (Eve API Access Layer) is a ruby library for accessing data of
|
95
|
+
the API of
|
96
|
+
|
97
|
+
the game Eve Online'
|
98
|
+
email:
|
104
99
|
- ppetermann80@googlemail.com
|
105
100
|
executables: []
|
106
|
-
|
107
101
|
extensions: []
|
108
|
-
|
109
|
-
extra_rdoc_files:
|
102
|
+
extra_rdoc_files:
|
110
103
|
- History.txt
|
111
104
|
- LICENSE.txt
|
112
105
|
- Manifest.txt
|
113
|
-
|
106
|
+
- README.rdoc
|
107
|
+
files:
|
114
108
|
- History.txt
|
115
109
|
- LICENSE.txt
|
116
110
|
- Manifest.txt
|
@@ -134,41 +128,33 @@ files:
|
|
134
128
|
- test/test_eaal.rb
|
135
129
|
- test/test_helper.rb
|
136
130
|
- .gemtest
|
137
|
-
has_rdoc: true
|
138
131
|
homepage: http://eaal.rubyforge.org
|
139
132
|
licenses: []
|
140
|
-
|
141
133
|
post_install_message:
|
142
|
-
rdoc_options:
|
134
|
+
rdoc_options:
|
143
135
|
- --main
|
144
|
-
- README.
|
145
|
-
require_paths:
|
136
|
+
- README.rdoc
|
137
|
+
require_paths:
|
146
138
|
- lib
|
147
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
139
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
148
140
|
none: false
|
149
|
-
requirements:
|
150
|
-
- -
|
151
|
-
- !ruby/object:Gem::Version
|
152
|
-
|
153
|
-
|
154
|
-
- 0
|
155
|
-
version: "0"
|
156
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
141
|
+
requirements:
|
142
|
+
- - ! '>='
|
143
|
+
- !ruby/object:Gem::Version
|
144
|
+
version: '0'
|
145
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
157
146
|
none: false
|
158
|
-
requirements:
|
159
|
-
- -
|
160
|
-
- !ruby/object:Gem::Version
|
161
|
-
|
162
|
-
segments:
|
163
|
-
- 0
|
164
|
-
version: "0"
|
147
|
+
requirements:
|
148
|
+
- - ! '>='
|
149
|
+
- !ruby/object:Gem::Version
|
150
|
+
version: '0'
|
165
151
|
requirements: []
|
166
|
-
|
167
152
|
rubyforge_project: eaal
|
168
|
-
rubygems_version: 1.
|
153
|
+
rubygems_version: 1.8.23
|
169
154
|
signing_key:
|
170
155
|
specification_version: 3
|
171
|
-
summary: EAAL (Eve API Access Layer) is a ruby library for accessing data of the API
|
172
|
-
|
156
|
+
summary: EAAL (Eve API Access Layer) is a ruby library for accessing data of the API
|
157
|
+
of the game Eve Online
|
158
|
+
test_files:
|
173
159
|
- test/test_eaal.rb
|
174
160
|
- test/test_helper.rb
|