eve_online 0.11.0 → 0.12.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (67) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +4 -0
  3. data/.travis.yml +27 -10
  4. data/Gemfile +1 -1
  5. data/LICENSE.txt +1 -1
  6. data/README.md +297 -121
  7. data/gemfiles/activesupport_51.gemfile +5 -0
  8. data/gemfiles/activesupport_edge.gemfile +5 -0
  9. data/lib/eve_online.rb +52 -45
  10. data/lib/eve_online/esi/character.rb +13 -11
  11. data/lib/eve_online/esi/character_loyalty_points.rb +1 -1
  12. data/lib/eve_online/esi/character_portrait.rb +5 -5
  13. data/lib/eve_online/esi/models/loyalty_point.rb +2 -2
  14. data/lib/eve_online/esi/models/skill.rb +3 -3
  15. data/lib/eve_online/esi/server_status.rb +40 -0
  16. data/lib/eve_online/exceptions/{exception.rb → base.rb} +1 -1
  17. data/lib/eve_online/exceptions/invalid_character_id_exception.rb +6 -0
  18. data/lib/eve_online/exceptions/timeout_exception.rb +1 -1
  19. data/lib/eve_online/exceptions/unauthorized_exception.rb +6 -0
  20. data/lib/eve_online/version.rb +1 -1
  21. data/lib/eve_online/{account/characters.rb → xml/account_characters.rb} +2 -2
  22. data/lib/eve_online/xml/account_status.rb +31 -0
  23. data/lib/eve_online/{account → xml}/api_key_info.rb +11 -22
  24. data/lib/eve_online/xml/base.rb +84 -0
  25. data/lib/eve_online/{characters/account_balance.rb → xml/character_account_balance.rb} +2 -2
  26. data/lib/eve_online/{characters/asset_list.rb → xml/character_asset_list.rb} +2 -2
  27. data/lib/eve_online/{characters/blueprints.rb → xml/character_blueprints.rb} +2 -2
  28. data/lib/eve_online/{characters/bookmarks.rb → xml/character_bookmarks.rb} +2 -2
  29. data/lib/eve_online/{characters/calendar_event_attendees.rb → xml/character_calendar_event_attendees.rb} +2 -2
  30. data/lib/eve_online/{characters/chat_channels.rb → xml/character_chat_channels.rb} +2 -2
  31. data/lib/eve_online/{characters/contact_list.rb → xml/character_contact_list.rb} +2 -2
  32. data/lib/eve_online/{characters/contact_notifications.rb → xml/character_contact_notifications.rb} +2 -2
  33. data/lib/eve_online/{characters/contract_bids.rb → xml/character_contract_bids.rb} +2 -2
  34. data/lib/eve_online/{characters/contract_items.rb → xml/character_contract_items.rb} +2 -2
  35. data/lib/eve_online/{characters/contracts.rb → xml/character_contracts.rb} +2 -2
  36. data/lib/eve_online/{characters/fac_war_stats.rb → xml/character_fac_war_stats.rb} +2 -2
  37. data/lib/eve_online/{characters/industry_jobs.rb → xml/character_industry_jobs.rb} +2 -2
  38. data/lib/eve_online/{characters/industry_jobs_history.rb → xml/character_industry_jobs_history.rb} +2 -2
  39. data/lib/eve_online/{characters/kill_mails.rb → xml/character_kill_mails.rb} +2 -2
  40. data/lib/eve_online/{characters/locations.rb → xml/character_locations.rb} +2 -2
  41. data/lib/eve_online/{characters/mail_bodies.rb → xml/character_mail_bodies.rb} +2 -2
  42. data/lib/eve_online/{characters/mail_messages.rb → xml/character_mail_messages.rb} +2 -2
  43. data/lib/eve_online/{characters/mailing_lists.rb → xml/character_mailing_lists.rb} +2 -2
  44. data/lib/eve_online/{characters/market_orders.rb → xml/character_market_orders.rb} +2 -2
  45. data/lib/eve_online/{characters/medals.rb → xml/character_medals.rb} +2 -2
  46. data/lib/eve_online/{characters/notification_texts.rb → xml/character_notification_texts.rb} +2 -2
  47. data/lib/eve_online/{characters/notifications.rb → xml/character_notifications.rb} +2 -2
  48. data/lib/eve_online/{characters/planetary_colonies.rb → xml/character_planetary_colonies.rb} +2 -2
  49. data/lib/eve_online/{characters/planetary_links.rb → xml/character_planetary_links.rb} +2 -2
  50. data/lib/eve_online/{characters/planetary_pins.rb → xml/character_planetary_pins.rb} +2 -2
  51. data/lib/eve_online/{characters/planetary_routes.rb → xml/character_planetary_routes.rb} +2 -2
  52. data/lib/eve_online/{characters/research.rb → xml/character_research.rb} +2 -2
  53. data/lib/eve_online/{characters → xml}/character_sheet.rb +16 -7
  54. data/lib/eve_online/{characters/skill_in_training.rb → xml/character_skill_in_training.rb} +2 -2
  55. data/lib/eve_online/{characters/skill_queue.rb → xml/character_skill_queue.rb} +2 -2
  56. data/lib/eve_online/{characters/standings.rb → xml/character_standings.rb} +2 -2
  57. data/lib/eve_online/{characters/upcoming_calendar_events.rb → xml/character_upcoming_calendar_events.rb} +2 -2
  58. data/lib/eve_online/{characters/wallet_journal.rb → xml/character_wallet_journal.rb} +2 -2
  59. data/lib/eve_online/{characters/wallet_transactions.rb → xml/character_wallet_transactions.rb} +2 -2
  60. data/lib/eve_online/{corporations/market_orders.rb → xml/corporation_market_orders.rb} +2 -2
  61. data/lib/eve_online/xml/models/account_status.rb +40 -0
  62. data/lib/eve_online/xml/models/account_type_object.rb +22 -0
  63. data/lib/eve_online/xml/models/api_key_info.rb +35 -0
  64. data/lib/eve_online/{server/status.rb → xml/server_status.rb} +2 -2
  65. metadata +53 -45
  66. data/lib/eve_online/account/status.rb +0 -47
  67. data/lib/eve_online/account_type_object.rb +0 -18
@@ -0,0 +1,5 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'activesupport', '~> 5.1.0'
4
+
5
+ gemspec :path => '../'
@@ -0,0 +1,5 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'activesupport', git: 'https://github.com/rails/rails', require: 'activesupport'
4
+
5
+ gemspec :path => '../'
data/lib/eve_online.rb CHANGED
@@ -1,7 +1,9 @@
1
1
  require 'eve_online/version'
2
2
 
3
- require 'eve_online/exceptions/exception'
3
+ require 'eve_online/exceptions/base'
4
4
  require 'eve_online/exceptions/timeout_exception'
5
+ require 'eve_online/exceptions/unauthorized_exception'
6
+ require 'eve_online/exceptions/invalid_character_id_exception'
5
7
 
6
8
  require 'eve_online/base'
7
9
  require 'eve_online/base_xml'
@@ -26,56 +28,60 @@ require 'eve_online/standing'
26
28
  require 'eve_online/contact_notification'
27
29
  require 'eve_online/wallet_journal_entry'
28
30
  require 'eve_online/market_order'
29
- require 'eve_online/account_type_object'
30
-
31
- require 'eve_online/account/api_key_info'
32
- require 'eve_online/account/characters'
33
- require 'eve_online/account/status'
34
-
35
- require 'eve_online/characters/account_balance'
36
- require 'eve_online/characters/asset_list'
37
- require 'eve_online/characters/blueprints'
38
- require 'eve_online/characters/bookmarks'
39
- require 'eve_online/characters/calendar_event_attendees'
40
- require 'eve_online/characters/contact_list'
41
- require 'eve_online/characters/contact_notifications'
42
- require 'eve_online/characters/medals'
43
- require 'eve_online/characters/character_sheet'
44
- require 'eve_online/characters/upcoming_calendar_events'
45
- require 'eve_online/characters/skill_in_training'
46
- require 'eve_online/characters/standings'
47
- require 'eve_online/characters/contracts'
48
- require 'eve_online/characters/chat_channels'
49
- require 'eve_online/characters/contract_bids'
50
- require 'eve_online/characters/contract_items'
51
- require 'eve_online/characters/fac_war_stats'
52
- require 'eve_online/characters/industry_jobs'
53
- require 'eve_online/characters/industry_jobs_history'
54
- require 'eve_online/characters/kill_mails'
55
- require 'eve_online/characters/locations'
56
- require 'eve_online/characters/mail_bodies'
57
- require 'eve_online/characters/mailing_lists'
58
- require 'eve_online/characters/mail_messages'
59
- require 'eve_online/characters/market_orders'
60
- require 'eve_online/characters/notifications'
61
- require 'eve_online/characters/notification_texts'
62
- require 'eve_online/characters/planetary_colonies'
63
- require 'eve_online/characters/planetary_links'
64
- require 'eve_online/characters/planetary_pins'
65
- require 'eve_online/characters/planetary_routes'
66
- require 'eve_online/characters/research'
67
- require 'eve_online/characters/skill_queue'
68
- require 'eve_online/characters/wallet_journal'
69
- require 'eve_online/characters/wallet_transactions'
70
-
71
- require 'eve_online/corporations/market_orders'
72
31
 
73
32
  require 'eve_online/eve/character_id'
74
- require 'eve_online/server/status'
75
33
 
76
34
  require 'eve_online/sovereignty/campaigns'
77
35
 
36
+ # XML API
37
+ require 'eve_online/xml/base'
38
+ require 'eve_online/xml/account_status'
39
+ require 'eve_online/xml/api_key_info'
40
+ require 'eve_online/xml/account_characters'
41
+ require 'eve_online/xml/character_account_balance'
42
+ require 'eve_online/xml/character_asset_list'
43
+ require 'eve_online/xml/character_blueprints'
44
+ require 'eve_online/xml/character_bookmarks'
45
+ require 'eve_online/xml/character_sheet'
46
+ require 'eve_online/xml/character_medals'
47
+ require 'eve_online/xml/character_skill_queue'
48
+ require 'eve_online/xml/character_chat_channels'
49
+ require 'eve_online/xml/character_calendar_event_attendees'
50
+ require 'eve_online/xml/character_contact_list'
51
+ require 'eve_online/xml/character_contact_notifications'
52
+ require 'eve_online/xml/character_upcoming_calendar_events'
53
+ require 'eve_online/xml/character_skill_in_training'
54
+ require 'eve_online/xml/character_standings'
55
+ require 'eve_online/xml/character_contracts'
56
+ require 'eve_online/xml/character_contract_bids'
57
+ require 'eve_online/xml/character_contract_items'
58
+ require 'eve_online/xml/character_fac_war_stats'
59
+ require 'eve_online/xml/character_industry_jobs'
60
+ require 'eve_online/xml/character_industry_jobs_history'
61
+ require 'eve_online/xml/character_kill_mails'
62
+ require 'eve_online/xml/character_locations'
63
+ require 'eve_online/xml/character_mail_bodies'
64
+ require 'eve_online/xml/character_mailing_lists'
65
+ require 'eve_online/xml/character_mail_messages'
66
+ require 'eve_online/xml/character_market_orders'
67
+ require 'eve_online/xml/character_notifications'
68
+ require 'eve_online/xml/character_notification_texts'
69
+ require 'eve_online/xml/character_planetary_colonies'
70
+ require 'eve_online/xml/character_planetary_links'
71
+ require 'eve_online/xml/character_planetary_pins'
72
+ require 'eve_online/xml/character_planetary_routes'
73
+ require 'eve_online/xml/character_research'
74
+ require 'eve_online/xml/character_wallet_journal'
75
+ require 'eve_online/xml/character_wallet_transactions'
76
+
77
+ require 'eve_online/xml/server_status'
78
+
79
+ require 'eve_online/xml/corporation_market_orders'
80
+
81
+ require 'eve_online/xml/models/account_status'
82
+ require 'eve_online/xml/models/api_key_info'
78
83
  require 'eve_online/xml/models/skill_queue_entry'
84
+ require 'eve_online/xml/models/account_type_object'
79
85
 
80
86
  # ESI API
81
87
  require 'eve_online/esi/base'
@@ -85,6 +91,7 @@ require 'eve_online/esi/character_portrait'
85
91
  require 'eve_online/esi/character_skills'
86
92
  require 'eve_online/esi/character_skill_queue'
87
93
  require 'eve_online/esi/character_loyalty_points'
94
+ require 'eve_online/esi/server_status'
88
95
 
89
96
  require 'eve_online/esi/models/loyalty_point'
90
97
  require 'eve_online/esi/models/skill_queue_entry'
@@ -1,7 +1,7 @@
1
1
  module EveOnline
2
2
  module ESI
3
3
  class Character < Base
4
- API_ENDPOINT = 'https://esi.tech.ccp.is/latest/characters/%s/?datasource=tranquility'.freeze
4
+ API_ENDPOINT = 'https://esi.tech.ccp.is/v4/characters/%s/?datasource=tranquility'.freeze
5
5
 
6
6
  attr_reader :character_id
7
7
 
@@ -26,43 +26,45 @@ module EveOnline
26
26
  end
27
27
 
28
28
  def corporation_id
29
- response.fetch('corporation_id')
29
+ response['corporation_id']
30
30
  end
31
31
 
32
32
  def birthday
33
- parse_datetime_with_timezone(response.fetch('birthday'))
33
+ birthday = response['birthday']
34
+
35
+ parse_datetime_with_timezone(birthday) if birthday
34
36
  end
35
37
 
36
38
  def name
37
- response.fetch('name')
39
+ response['name']
38
40
  end
39
41
 
40
42
  def gender
41
- response.fetch('gender')
43
+ response['gender']
42
44
  end
43
45
 
44
46
  def race_id
45
- response.fetch('race_id')
47
+ response['race_id']
46
48
  end
47
49
 
48
50
  def bloodline_id
49
- response.fetch('bloodline_id')
51
+ response['bloodline_id']
50
52
  end
51
53
 
52
54
  def description
53
- response.fetch('description')
55
+ response['description']
54
56
  end
55
57
 
56
58
  def alliance_id
57
- response.fetch('alliance_id')
59
+ response['alliance_id']
58
60
  end
59
61
 
60
62
  def ancestry_id
61
- response.fetch('ancestry_id')
63
+ response['ancestry_id']
62
64
  end
63
65
 
64
66
  def security_status
65
- response.fetch('security_status')
67
+ response['security_status']
66
68
  end
67
69
 
68
70
  def scope; end
@@ -1,7 +1,7 @@
1
1
  module EveOnline
2
2
  module ESI
3
3
  class CharacterLoyaltyPoints < Base
4
- API_ENDPOINT = 'https://esi.tech.ccp.is/latest/characters/%s/loyalty/points/?datasource=tranquility'.freeze
4
+ API_ENDPOINT = 'https://esi.tech.ccp.is/v1/characters/%s/loyalty/points/?datasource=tranquility'.freeze
5
5
 
6
6
  attr_reader :character_id
7
7
 
@@ -1,7 +1,7 @@
1
1
  module EveOnline
2
2
  module ESI
3
3
  class CharacterPortrait < Base
4
- API_ENDPOINT = 'https://esi.tech.ccp.is/latest/characters/%s/portrait/?datasource=tranquility'.freeze
4
+ API_ENDPOINT = 'https://esi.tech.ccp.is/v2/characters/%s/portrait/?datasource=tranquility'.freeze
5
5
 
6
6
  attr_reader :character_id
7
7
 
@@ -30,19 +30,19 @@ module EveOnline
30
30
  end
31
31
 
32
32
  def small
33
- response.fetch('px64x64')
33
+ response['px64x64']
34
34
  end
35
35
 
36
36
  def medium
37
- response.fetch('px128x128')
37
+ response['px128x128']
38
38
  end
39
39
 
40
40
  def large
41
- response.fetch('px256x256')
41
+ response['px256x256']
42
42
  end
43
43
 
44
44
  def huge
45
- response.fetch('px512x512')
45
+ response['px512x512']
46
46
  end
47
47
 
48
48
  def gigantic
@@ -16,11 +16,11 @@ module EveOnline
16
16
  end
17
17
 
18
18
  def corporation_id
19
- options.fetch('corporation_id')
19
+ options['corporation_id']
20
20
  end
21
21
 
22
22
  def loyalty_points
23
- options.fetch('loyalty_points')
23
+ options['loyalty_points']
24
24
  end
25
25
  end
26
26
  end
@@ -17,15 +17,15 @@ module EveOnline
17
17
  end
18
18
 
19
19
  def skill_id
20
- options.fetch('skill_id')
20
+ options['skill_id']
21
21
  end
22
22
 
23
23
  def skillpoints_in_skill
24
- options.fetch('skillpoints_in_skill')
24
+ options['skillpoints_in_skill']
25
25
  end
26
26
 
27
27
  def current_skill_level
28
- options.fetch('current_skill_level')
28
+ options['current_skill_level']
29
29
  end
30
30
  end
31
31
  end
@@ -0,0 +1,40 @@
1
+ module EveOnline
2
+ module ESI
3
+ class ServerStatus < Base
4
+ API_ENDPOINT = 'https://esi.tech.ccp.is/v1/status/?datasource=tranquility'.freeze
5
+
6
+ def as_json
7
+ {
8
+ start_time: start_time,
9
+ players: players,
10
+ server_version: server_version,
11
+ vip: vip
12
+ }
13
+ end
14
+
15
+ def start_time
16
+ start_time = response['start_time']
17
+
18
+ parse_datetime_with_timezone(start_time) if start_time
19
+ end
20
+
21
+ def players
22
+ response['players']
23
+ end
24
+
25
+ def server_version
26
+ response['server_version']
27
+ end
28
+
29
+ def vip
30
+ response['vip']
31
+ end
32
+
33
+ def scope; end
34
+
35
+ def url
36
+ API_ENDPOINT
37
+ end
38
+ end
39
+ end
40
+ end
@@ -2,7 +2,7 @@ module EveOnline
2
2
  module Exceptions
3
3
  # This is base EveOnline exception class. Rescue it if you want to
4
4
  # catch any exceptions from EveOnline.
5
- class Exception < RuntimeError
5
+ class Base < RuntimeError
6
6
  end
7
7
  end
8
8
  end
@@ -0,0 +1,6 @@
1
+ module EveOnline
2
+ module Exceptions
3
+ class InvalidCharacterIDException < Base
4
+ end
5
+ end
6
+ end
@@ -1,6 +1,6 @@
1
1
  module EveOnline
2
2
  module Exceptions
3
- class TimeoutException < Exception
3
+ class TimeoutException < Base
4
4
  end
5
5
  end
6
6
  end
@@ -0,0 +1,6 @@
1
+ module EveOnline
2
+ module Exceptions
3
+ class UnauthorizedException < Base
4
+ end
5
+ end
6
+ end
@@ -1,3 +1,3 @@
1
1
  module EveOnline
2
- VERSION = '0.11.0'.freeze
2
+ VERSION = '0.12.0'.freeze
3
3
  end
@@ -1,7 +1,7 @@
1
1
  module EveOnline
2
- module Account
2
+ module XML
3
3
  # https://eveonline-third-party-documentation.readthedocs.org/en/latest/xmlapi/account/account_characters.html
4
- class Characters < BaseXML
4
+ class AccountCharacters < Base
5
5
  API_ENDPOINT = 'https://api.eveonline.com/account/Characters.xml.aspx'.freeze
6
6
 
7
7
  attr_reader :key_id, :v_code
@@ -0,0 +1,31 @@
1
+ require 'forwardable'
2
+
3
+ module EveOnline
4
+ module XML
5
+ # https://eveonline-third-party-documentation.readthedocs.org/en/latest/xmlapi/account/account_accountstatus.html
6
+ class AccountStatus < Base
7
+ extend Forwardable
8
+
9
+ API_ENDPOINT = 'https://api.eveonline.com/account/AccountStatus.xml.aspx'.freeze
10
+
11
+ attr_reader :key_id, :v_code, :model
12
+
13
+ def_delegators :model, :as_json, :paid_until, :create_date, :logon_count, :logon_minutes
14
+
15
+ def initialize(key_id, v_code)
16
+ super()
17
+ @key_id = key_id
18
+ @v_code = v_code
19
+ end
20
+
21
+ def model
22
+ Models::AccountStatus.new(result)
23
+ end
24
+ memoize :model
25
+
26
+ def url
27
+ "#{ API_ENDPOINT }?keyID=#{ key_id }&vCode=#{ v_code }"
28
+ end
29
+ end
30
+ end
31
+ end
@@ -1,26 +1,27 @@
1
+ require 'forwardable'
2
+
1
3
  module EveOnline
2
- module Account
4
+ module XML
3
5
  # https://eveonline-third-party-documentation.readthedocs.org/en/latest/xmlapi/account/account_apikeyinfo.html
4
- class ApiKeyInfo < BaseXML
6
+ class ApiKeyInfo < Base
7
+ extend Forwardable
8
+
5
9
  API_ENDPOINT = 'https://api.eveonline.com/account/APIKeyInfo.xml.aspx'.freeze
6
10
 
7
11
  attr_reader :key_id, :v_code
8
12
 
13
+ def_delegators :model, :as_json, :expires, :api_key_type, :access_mask
14
+
9
15
  def initialize(key_id, v_code)
10
16
  super()
11
17
  @key_id = key_id
12
18
  @v_code = v_code
13
19
  end
14
20
 
15
- def as_json
16
- {
17
- expires: expires,
18
- api_key_type: api_key_type,
19
- access_mask: access_mask,
20
- current_time: current_time,
21
- cached_until: cached_until
22
- }
21
+ def model
22
+ Models::ApiKeyInfo.new(key)
23
23
  end
24
+ memoize :model
24
25
 
25
26
  def characters
26
27
  case row
@@ -38,18 +39,6 @@ module EveOnline
38
39
  end
39
40
  memoize :characters
40
41
 
41
- def expires
42
- parse_datetime_with_timezone(key.fetch('@expires'))
43
- end
44
-
45
- def api_key_type
46
- AccountTypeObject.new(key.fetch('@type')).value
47
- end
48
-
49
- def access_mask
50
- key.fetch('@accessMask').to_i
51
- end
52
-
53
42
  def url
54
43
  "#{ API_ENDPOINT }?keyID=#{ key_id }&vCode=#{ v_code }"
55
44
  end