eve_online 0.6.0 → 0.7.0

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.
Files changed (36) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +6 -2
  3. data/LICENSE.txt +1 -1
  4. data/README.md +197 -132
  5. data/eve_online.gemspec +3 -5
  6. data/lib/eve_online.rb +11 -3
  7. data/lib/eve_online/account/api_key_info.rb +4 -5
  8. data/lib/eve_online/account/characters.rb +3 -3
  9. data/lib/eve_online/account/status.rb +5 -7
  10. data/lib/eve_online/base.rb +6 -31
  11. data/lib/eve_online/base_crest.rb +11 -0
  12. data/lib/eve_online/base_xml.rb +32 -0
  13. data/lib/eve_online/blueprint.rb +1 -1
  14. data/lib/eve_online/bookmark.rb +69 -0
  15. data/lib/eve_online/bookmark_folder.rb +24 -0
  16. data/lib/eve_online/characters/account_balance.rb +3 -3
  17. data/lib/eve_online/characters/asset_list.rb +30 -6
  18. data/lib/eve_online/characters/blueprints.rb +3 -3
  19. data/lib/eve_online/characters/bookmarks.rb +29 -4
  20. data/lib/eve_online/characters/calendar_event_attendees.rb +3 -3
  21. data/lib/eve_online/characters/character_sheet.rb +3 -3
  22. data/lib/eve_online/characters/contact_list.rb +3 -3
  23. data/lib/eve_online/characters/contact_notifications.rb +3 -3
  24. data/lib/eve_online/characters/skill_in_training.rb +14 -17
  25. data/lib/eve_online/characters/upcoming_calendar_events.rb +3 -3
  26. data/lib/eve_online/eve/character_id.rb +41 -0
  27. data/lib/eve_online/event.rb +1 -2
  28. data/lib/eve_online/event_response_object.rb +4 -4
  29. data/lib/eve_online/item.rb +49 -0
  30. data/lib/eve_online/server/status.rb +3 -3
  31. data/lib/eve_online/sovereignty/campaigns.rb +28 -0
  32. data/lib/eve_online/version.rb +1 -1
  33. metadata +18 -14
  34. data/lib/eve_online/eve/skill_tree.rb +0 -12
  35. data/lib/eve_online/skill.rb +0 -5
  36. data/lib/eve_online/skill_group.rb +0 -5
data/eve_online.gemspec CHANGED
@@ -20,14 +20,12 @@ Gem::Specification.new do |spec|
20
20
  spec.required_ruby_version = '>= 1.9.3'
21
21
 
22
22
  spec.add_development_dependency 'bundler', '~> 1.10'
23
- spec.add_development_dependency 'rake', '~> 10.0'
23
+ spec.add_development_dependency 'rake'
24
24
  spec.add_development_dependency 'rspec'
25
25
  spec.add_development_dependency 'rspec-its'
26
26
  spec.add_development_dependency 'webmock'
27
27
 
28
- # http://weblog.rubyonrails.org/2016/1/25/Rails-5-0-0-beta1-1-4-2-5-1-4-1-14-1-3-2-22-1-and-rails-html-sanitizer-1-0-3-have-been-released/
29
- spec.add_runtime_dependency 'activesupport', '>= 4.2.5.1'
28
+ spec.add_runtime_dependency 'activesupport', '>= 3.0.0'
30
29
  spec.add_runtime_dependency 'nori', '~> 2.6'
31
- # https://github.com/sparklemotion/nokogiri/blob/v1.6.7.2/CHANGELOG.rdoc
32
- spec.add_runtime_dependency 'nokogiri', '>= 1.6.7.2'
30
+ spec.add_runtime_dependency 'json'
33
31
  end
data/lib/eve_online.rb CHANGED
@@ -1,11 +1,17 @@
1
1
  require 'eve_online/version'
2
+
2
3
  require 'eve_online/base'
4
+ require 'eve_online/base_xml'
5
+ require 'eve_online/base_crest'
6
+
3
7
  require 'eve_online/blueprint'
8
+ require 'eve_online/bookmark'
9
+ require 'eve_online/bookmark_folder'
4
10
  require 'eve_online/character'
5
11
  require 'eve_online/event'
6
12
  require 'eve_online/event_response_object'
7
- require 'eve_online/skill'
8
- require 'eve_online/skill_group'
13
+ require 'eve_online/item'
14
+
9
15
  require 'eve_online/account/api_key_info'
10
16
  require 'eve_online/account/characters'
11
17
  require 'eve_online/account/status'
@@ -19,8 +25,10 @@ require 'eve_online/characters/contact_notifications'
19
25
  require 'eve_online/characters/character_sheet'
20
26
  require 'eve_online/characters/upcoming_calendar_events'
21
27
  require 'eve_online/characters/skill_in_training'
22
- require 'eve_online/eve/skill_tree'
28
+ require 'eve_online/eve/character_id'
23
29
  require 'eve_online/server/status'
24
30
 
31
+ require 'eve_online/sovereignty/campaigns'
32
+
25
33
  module EveOnline
26
34
  end
@@ -1,8 +1,8 @@
1
1
  module EveOnline
2
2
  module Account
3
- # https://eveonline-third-party-documentation.readthedocs.org/en/latest/xmlapi/account_apikeyinfo/
4
- class ApiKeyInfo < Base
5
- API_ENDPOINT = 'https://api.eveonline.com/account/APIKeyInfo.xml.aspx'
3
+ # https://eveonline-third-party-documentation.readthedocs.org/en/latest/xmlapi/account/account_apikeyinfo.html
4
+ class ApiKeyInfo < BaseXML
5
+ API_ENDPOINT = 'https://api.eveonline.com/account/APIKeyInfo.xml.aspx'.freeze
6
6
 
7
7
  attr_reader :key_id, :v_code
8
8
 
@@ -36,8 +36,7 @@ module EveOnline
36
36
  end
37
37
 
38
38
  def expires
39
- @expires ||= \
40
- ActiveSupport::TimeZone['UTC'].parse(key.fetch('@expires'))
39
+ @expires ||= ActiveSupport::TimeZone['UTC'].parse(key.fetch('@expires'))
41
40
  end
42
41
 
43
42
  def type
@@ -1,8 +1,8 @@
1
1
  module EveOnline
2
2
  module Account
3
- # https://eveonline-third-party-documentation.readthedocs.org/en/latest/xmlapi/account_characters/
4
- class Characters < Base
5
- API_ENDPOINT = 'https://api.eveonline.com/account/Characters.xml.aspx'
3
+ # https://eveonline-third-party-documentation.readthedocs.org/en/latest/xmlapi/account/account_characters.html
4
+ class Characters < BaseXML
5
+ API_ENDPOINT = 'https://api.eveonline.com/account/Characters.xml.aspx'.freeze
6
6
 
7
7
  attr_reader :key_id, :v_code
8
8
 
@@ -1,8 +1,8 @@
1
1
  module EveOnline
2
2
  module Account
3
- # https://eveonline-third-party-documentation.readthedocs.org/en/latest/xmlapi/account_accountstatus/
4
- class Status < Base
5
- API_ENDPOINT = 'https://api.eveonline.com/account/AccountStatus.xml.aspx'
3
+ # https://eveonline-third-party-documentation.readthedocs.org/en/latest/xmlapi/account/account_accountstatus.html
4
+ class Status < BaseXML
5
+ API_ENDPOINT = 'https://api.eveonline.com/account/AccountStatus.xml.aspx'.freeze
6
6
 
7
7
  attr_reader :key_id, :v_code
8
8
 
@@ -24,13 +24,11 @@ module EveOnline
24
24
  end
25
25
 
26
26
  def paid_until
27
- @paid_until ||= \
28
- ActiveSupport::TimeZone['UTC'].parse(result.fetch('paidUntil'))
27
+ @paid_until ||= ActiveSupport::TimeZone['UTC'].parse(result.fetch('paidUntil'))
29
28
  end
30
29
 
31
30
  def create_date
32
- @create_date ||= \
33
- ActiveSupport::TimeZone['UTC'].parse(result.fetch('createDate'))
31
+ @create_date ||= ActiveSupport::TimeZone['UTC'].parse(result.fetch('createDate'))
34
32
  end
35
33
 
36
34
  def logon_count
@@ -1,43 +1,18 @@
1
1
  require 'open-uri'
2
- require 'nori'
3
- require 'active_support/time'
4
2
 
5
3
  module EveOnline
6
4
  class Base
7
- attr_reader :parser
8
-
9
- def initialize
10
- @parser = Nori.new(advanced_typecasting: false)
11
- end
12
-
13
- def result
14
- @result ||= eveapi.fetch('result')
15
- end
16
-
17
- def cached_until
18
- @cached_until ||= \
19
- ActiveSupport::TimeZone['UTC'].parse(eveapi.fetch('cachedUntil'))
20
- end
21
-
22
- def current_time
23
- @current_time ||= \
24
- ActiveSupport::TimeZone['UTC'].parse(eveapi.fetch('currentTime'))
25
- end
26
-
27
- def version
28
- eveapi.fetch('@version').to_i
29
- end
30
-
31
- def eveapi
32
- @eveapi ||= response.fetch('eveapi')
33
- end
34
-
35
5
  def url
36
6
  raise NotImplementedError
37
7
  end
38
8
 
9
+ def user_agent
10
+ @user_agent ||= "EveOnline API (https://github.com/biow0lf/eve_online) v#{ EveOnline::VERSION }"
11
+ end
12
+
39
13
  def content
40
- @content ||= open(url, open_timeout: 60, read_timeout: 60).read
14
+ @content ||= open(url, open_timeout: 60, read_timeout: 60,
15
+ 'User-Agent' => user_agent).read
41
16
  end
42
17
 
43
18
  def response
@@ -0,0 +1,11 @@
1
+ require 'json'
2
+
3
+ module EveOnline
4
+ class BaseCREST < Base
5
+ attr_reader :parser
6
+
7
+ def initialize
8
+ @parser = JSON
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,32 @@
1
+ require 'nori'
2
+ require 'active_support/time'
3
+
4
+ module EveOnline
5
+ class BaseXML < Base
6
+ attr_reader :parser
7
+
8
+ def initialize
9
+ @parser = Nori.new(advanced_typecasting: false)
10
+ end
11
+
12
+ def result
13
+ @result ||= eveapi.fetch('result')
14
+ end
15
+
16
+ def cached_until
17
+ @cached_until ||= ActiveSupport::TimeZone['UTC'].parse(eveapi.fetch('cachedUntil'))
18
+ end
19
+
20
+ def current_time
21
+ @current_time ||= ActiveSupport::TimeZone['UTC'].parse(eveapi.fetch('currentTime'))
22
+ end
23
+
24
+ def version
25
+ eveapi.fetch('@version').to_i
26
+ end
27
+
28
+ def eveapi
29
+ @eveapi ||= response.fetch('eveapi')
30
+ end
31
+ end
32
+ end
@@ -40,7 +40,7 @@ module EveOnline
40
40
  @flag_id ||= options.fetch('@flagID').to_i
41
41
  end
42
42
 
43
- # TODO: return EvevOnline::Blueprint::Quantity
43
+ # TODO: return EveOnline::Blueprint::Quantity
44
44
  def quantity
45
45
  @quantity ||= options.fetch('@quantity').to_i
46
46
  end
@@ -0,0 +1,69 @@
1
+ module EveOnline
2
+ class Bookmark
3
+ attr_reader :options
4
+
5
+ def initialize(options = {})
6
+ @options = options
7
+ end
8
+
9
+ def as_json(*args)
10
+ {
11
+ bookmark_id: bookmark_id,
12
+ creator_id: creator_id,
13
+ created: created,
14
+ item_id: item_id,
15
+ type_id: type_id,
16
+ location_id: location_id,
17
+ x: x,
18
+ y: y,
19
+ z: z,
20
+ memo: memo,
21
+ note: note
22
+ }
23
+ end
24
+
25
+ def bookmark_id
26
+ @bookmark_id ||= options.fetch('@bookmarkID').to_i
27
+ end
28
+
29
+ def creator_id
30
+ @creator_id ||= options.fetch('@creatorID').to_i
31
+ end
32
+
33
+ def created
34
+ @created ||= ActiveSupport::TimeZone['UTC'].parse(options.fetch('@created'))
35
+ end
36
+
37
+ def item_id
38
+ @item_id ||= options.fetch('@itemID').to_i
39
+ end
40
+
41
+ def type_id
42
+ @type_id ||= options.fetch('@typeID').to_i
43
+ end
44
+
45
+ def location_id
46
+ @location_id ||= options.fetch('@locationID').to_i
47
+ end
48
+
49
+ def x
50
+ @x ||= options.fetch('@x').to_f
51
+ end
52
+
53
+ def y
54
+ @y ||= options.fetch('@y').to_f
55
+ end
56
+
57
+ def z
58
+ @z ||= options.fetch('@z').to_f
59
+ end
60
+
61
+ def memo
62
+ @memo ||= options.fetch('@memo')
63
+ end
64
+
65
+ def note
66
+ @note ||= options.fetch('@note')
67
+ end
68
+ end
69
+ end
@@ -0,0 +1,24 @@
1
+ module EveOnline
2
+ class BookmarkFolder
3
+ attr_reader :options
4
+
5
+ def initialize(options = {})
6
+ @options = options
7
+ end
8
+
9
+ def as_json(*args)
10
+ {
11
+ folder_id: folder_id,
12
+ folder_name: folder_name
13
+ }
14
+ end
15
+
16
+ def folder_id
17
+ @folder_d ||= options.fetch('@folderID').to_i
18
+ end
19
+
20
+ def folder_name
21
+ @folder_name ||= options.fetch('@folderName')
22
+ end
23
+ end
24
+ end
@@ -1,8 +1,8 @@
1
1
  module EveOnline
2
2
  module Characters
3
- # https://eveonline-third-party-documentation.readthedocs.org/en/latest/xmlapi/char_accountbalance/
4
- class AccountBalance < Base
5
- API_ENDPOINT = 'https://api.eveonline.com/char/AccountBalance.xml.aspx'
3
+ # https://eveonline-third-party-documentation.readthedocs.org/en/latest/xmlapi/character/char_accountbalance.html
4
+ class AccountBalance < BaseXML
5
+ API_ENDPOINT = 'https://api.eveonline.com/char/AccountBalance.xml.aspx'.freeze
6
6
 
7
7
  attr_reader :key_id, :v_code, :character_id
8
8
 
@@ -1,20 +1,44 @@
1
1
  module EveOnline
2
2
  module Characters
3
- # https://eveonline-third-party-documentation.readthedocs.org/en/latest/xmlapi/char_assetlist/
4
- class AssetList < Base
5
- API_ENDPOINT = 'https://api.eveonline.com/char/AssetList.xml.aspx'
3
+ # https://eveonline-third-party-documentation.readthedocs.org/en/latest/xmlapi/character/char_assetlist.html
4
+ class AssetList < BaseXML
5
+ API_ENDPOINT = 'https://api.eveonline.com/char/AssetList.xml.aspx'.freeze
6
6
 
7
- attr_reader :key_id, :v_code, :character_id
7
+ attr_reader :key_id, :v_code, :character_id, :flat
8
8
 
9
- def initialize(key_id, v_code, character_id)
9
+ def initialize(key_id, v_code, character_id, flat = 1)
10
10
  super()
11
11
  @key_id = key_id
12
12
  @v_code = v_code
13
13
  @character_id = character_id
14
+ @flat = flat
15
+ end
16
+
17
+ def assets
18
+ case row
19
+ when Hash
20
+ [EveOnline::Item.new(row)]
21
+ when Array
22
+ output = []
23
+ row.each do |item|
24
+ output << EveOnline::Item.new(item)
25
+ end
26
+ output
27
+ else
28
+ raise ArgumentError
29
+ end
30
+ end
31
+
32
+ def row
33
+ @row ||= rowset.fetch('row')
34
+ end
35
+
36
+ def rowset
37
+ @rowset ||= result.fetch('rowset')
14
38
  end
15
39
 
16
40
  def url
17
- "#{ API_ENDPOINT }?keyID=#{ key_id }&vCode=#{ v_code }&characterID=#{ character_id }"
41
+ "#{ API_ENDPOINT }?keyID=#{ key_id }&vCode=#{ v_code }&characterID=#{ character_id }&flat=#{ flat }"
18
42
  end
19
43
  end
20
44
  end
@@ -1,8 +1,8 @@
1
1
  module EveOnline
2
2
  module Characters
3
- # https://eveonline-third-party-documentation.readthedocs.org/en/latest/xmlapi/char_blueprints/
4
- class Blueprints < Base
5
- API_ENDPOINT = 'https://api.eveonline.com/char/Blueprints.xml.aspx'
3
+ # https://eveonline-third-party-documentation.readthedocs.org/en/latest/xmlapi/character/char_blueprints.html
4
+ class Blueprints < BaseXML
5
+ API_ENDPOINT = 'https://api.eveonline.com/char/Blueprints.xml.aspx'.freeze
6
6
 
7
7
  attr_reader :key_id, :v_code, :character_id
8
8
 
@@ -1,8 +1,8 @@
1
1
  module EveOnline
2
2
  module Characters
3
- # https://eveonline-third-party-documentation.readthedocs.org/en/latest/xmlapi/char_bookmarks/
4
- class Bookmarks < Base
5
- API_ENDPOINT = 'https://api.eveonline.com/char/Bookmarks.xml.aspx'
3
+ # https://eveonline-third-party-documentation.readthedocs.org/en/latest/xmlapi/character/char_bookmarks.html
4
+ class Bookmarks < BaseXML
5
+ API_ENDPOINT = 'https://api.eveonline.com/char/Bookmarks.xml.aspx'.freeze
6
6
 
7
7
  attr_reader :key_id, :v_code, :character_id
8
8
 
@@ -13,9 +13,34 @@ module EveOnline
13
13
  @character_id = character_id
14
14
  end
15
15
 
16
+ def bookmark_folders
17
+ @bookmark_folders ||= begin
18
+ case row
19
+ when Hash
20
+ [EveOnline::BookmarkFolder.new(row)]
21
+ when Array
22
+ bookmark_folders = []
23
+ row.each do |bookmark_folder|
24
+ bookmark_folders << EveOnline::BookmarkFolder.new(bookmark_folder)
25
+ end
26
+ bookmark_folders
27
+ else
28
+ raise ArgumentError
29
+ end
30
+ end
31
+ end
32
+
33
+ def row
34
+ @row ||= rowset.fetch('row')
35
+ end
36
+
37
+ def rowset
38
+ @rowset ||= result.fetch('rowset')
39
+ end
40
+
16
41
  def url
17
42
  "#{ API_ENDPOINT }?keyID=#{ key_id }&vCode=#{ v_code }&characterID=#{ character_id }"
18
- end
43
+ end
19
44
  end
20
45
  end
21
46
  end
@@ -1,8 +1,8 @@
1
1
  module EveOnline
2
2
  module Characters
3
- # https://eveonline-third-party-documentation.readthedocs.org/en/latest/xmlapi/char_calendareventattendees/
4
- class CalendarEventAttendees < Base
5
- API_ENDPOINT = 'https://api.eveonline.com/char/CalendarEventAttendees.xml.aspx'
3
+ # https://eveonline-third-party-documentation.readthedocs.org/en/latest/xmlapi/character/char_calendareventattendees.html
4
+ class CalendarEventAttendees < BaseXML
5
+ API_ENDPOINT = 'https://api.eveonline.com/char/CalendarEventAttendees.xml.aspx'.freeze
6
6
 
7
7
  attr_reader :key_id, :v_code, :character_id, :event_id
8
8