eaal 0.1.7 → 0.1.8

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,8 +1,8 @@
1
1
  == 0.1.7 2011-03-16
2
2
  * 1 fix:
3
- * should now work with current active_support / rails
3
+ * should now work with current active_support / rails
4
4
 
5
- == 0.1.6 2010-01-21
5
+ == 0.1.6 2010-01-21
6
6
  * 1 fix:
7
7
  * should now work with latest hpricot
8
8
 
@@ -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.
@@ -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.7" # fix for Hoe.spec 2.x
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'
@@ -1,37 +1,37 @@
1
1
 
2
2
  # EAAL::API class
3
3
  # Usage Example:
4
- # api = EAAL::API.new("my userid", "my API key")
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 :userid, :key, :scope
11
-
10
+ attr_accessor :keyid, :vcode, :scope
11
+
12
12
  # constructor
13
13
  # Expects:
14
- # * userid (String | Integer) the users id
15
- # * key (String) the apikey Full or Restricted
14
+ # * keyID (String | Integer) the keyID
15
+ # * vCode (String) the vCode
16
16
  # * scope (String) defaults to account
17
- def initialize(userid, key, scope="account")
18
- self.userid = userid.to_s
19
- self.key = key.to_s
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.userid, self.key, scope, name,opts)
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
- :userid => self.userid,
47
- :apikey => self.key}))
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.userid, self.key, scope,name,opts, res.body)
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.each do |key|
72
- req += "#{CGI.escape(key.to_s)}=#{CGI.escape(opts[key].to_s)}&" if opts[key]
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.chop # We are lazy and append a & to each pair even if it's the last one. FIXME: Don't do this.
78
+ req = '?' + opts.join('&')
75
79
  end
76
80
 
77
81
  end
@@ -21,7 +21,7 @@ module EAAL
21
21
  def save(userid, apikey, scope, name, args, xml)
22
22
  end
23
23
  end
24
-
24
+
25
25
  end
26
26
  end
27
27
 
@@ -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
- Time.at((doc/"/eveapi/cachedUntil").inner_html.to_time.to_i + 3600) > Time.now
51
- else
52
- (doc/"/eveapi/cachedUntil").inner_html.to_time > Time.now
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,'w') { |f| f.print xml }
62
+ File.open(filename,'wb') { |f| f.print xml }
61
63
  end
62
64
  end
@@ -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
@@ -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
@@ -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
@@ -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
- hash: 21
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
- date: 2011-03-16 00:00:00 +01:00
19
- default_executable:
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
- prerelease: false
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
- requirement: &id002 !ruby/object:Gem::Requirement
24
+ version_requirements: !ruby/object:Gem::Requirement
41
25
  none: false
42
- requirements:
43
- - - ">="
44
- - !ruby/object:Gem::Version
45
- hash: 7
46
- segments:
47
- - 0
48
- - 6
49
- version: "0.6"
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
- requirement: &id003 !ruby/object:Gem::Requirement
40
+ version_requirements: !ruby/object:Gem::Requirement
56
41
  none: false
57
- requirements:
58
- - - ">="
59
- - !ruby/object:Gem::Version
60
- hash: 9
61
- segments:
62
- - 1
63
- - 7
64
- - 1
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
- requirement: &id004 !ruby/object:Gem::Requirement
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
- requirement: &id005 !ruby/object:Gem::Requirement
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
- hash: 41
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
- version_requirements: *id005
100
- description: |-
101
- EAAL (Eve API Access Layer) is a ruby library for accessing data of the API of
102
- the game Eve Online
103
- email:
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
- files:
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.txt
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
- hash: 3
153
- segments:
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
- hash: 3
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.6.2
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 of the game Eve Online
172
- test_files:
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