eve_online 0.8.0 → 0.9.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 (70) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +1 -1
  3. data/README.md +560 -17
  4. data/eve_online.gemspec +1 -0
  5. data/lib/eve_online.rb +33 -0
  6. data/lib/eve_online/account/api_key_info.rb +19 -14
  7. data/lib/eve_online/account/characters.rb +10 -5
  8. data/lib/eve_online/account/status.rb +4 -4
  9. data/lib/eve_online/base.rb +9 -4
  10. data/lib/eve_online/base_xml.rb +9 -4
  11. data/lib/eve_online/blueprint.rb +9 -9
  12. data/lib/eve_online/bookmark.rb +13 -11
  13. data/lib/eve_online/bookmark_folder.rb +21 -16
  14. data/lib/eve_online/character.rb +8 -8
  15. data/lib/eve_online/character_implants.rb +7 -1
  16. data/lib/eve_online/character_jump_clone_implants.rb +29 -0
  17. data/lib/eve_online/character_jump_clones.rb +7 -1
  18. data/lib/eve_online/character_skills.rb +7 -1
  19. data/lib/eve_online/characters/account_balance.rb +14 -8
  20. data/lib/eve_online/characters/asset_list.rb +12 -5
  21. data/lib/eve_online/characters/blueprints.rb +12 -5
  22. data/lib/eve_online/characters/bookmarks.rb +22 -17
  23. data/lib/eve_online/characters/calendar_event_attendees.rb +2 -0
  24. data/lib/eve_online/characters/character_sheet.rb +48 -37
  25. data/lib/eve_online/characters/chat_channels.rb +23 -0
  26. data/lib/eve_online/characters/contact_list.rb +2 -0
  27. data/lib/eve_online/characters/contact_notifications.rb +30 -0
  28. data/lib/eve_online/characters/contract_bids.rb +23 -0
  29. data/lib/eve_online/characters/contract_items.rb +24 -0
  30. data/lib/eve_online/characters/contracts.rb +26 -0
  31. data/lib/eve_online/characters/fac_war_stats.rb +23 -0
  32. data/lib/eve_online/characters/industry_jobs.rb +23 -0
  33. data/lib/eve_online/characters/industry_jobs_history.rb +23 -0
  34. data/lib/eve_online/characters/kill_mails.rb +25 -0
  35. data/lib/eve_online/characters/locations.rb +32 -0
  36. data/lib/eve_online/characters/mail_bodies.rb +30 -0
  37. data/lib/eve_online/characters/mail_messages.rb +23 -0
  38. data/lib/eve_online/characters/mailing_lists.rb +23 -0
  39. data/lib/eve_online/characters/market_orders.rb +55 -0
  40. data/lib/eve_online/characters/medals.rb +2 -0
  41. data/lib/eve_online/characters/notification_texts.rb +32 -0
  42. data/lib/eve_online/characters/notifications.rb +23 -0
  43. data/lib/eve_online/characters/planetary_colonies.rb +23 -0
  44. data/lib/eve_online/characters/planetary_links.rb +24 -0
  45. data/lib/eve_online/characters/planetary_pins.rb +24 -0
  46. data/lib/eve_online/characters/planetary_routes.rb +24 -0
  47. data/lib/eve_online/characters/research.rb +23 -0
  48. data/lib/eve_online/characters/skill_in_training.rb +10 -8
  49. data/lib/eve_online/characters/skill_queue.rb +51 -0
  50. data/lib/eve_online/characters/standings.rb +23 -21
  51. data/lib/eve_online/characters/upcoming_calendar_events.rb +12 -5
  52. data/lib/eve_online/characters/wallet_journal.rb +57 -0
  53. data/lib/eve_online/characters/wallet_transactions.rb +24 -0
  54. data/lib/eve_online/contact_notification.rb +42 -0
  55. data/lib/eve_online/corporations/market_orders.rb +55 -0
  56. data/lib/eve_online/eve/character_id.rb +9 -9
  57. data/lib/eve_online/event.rb +12 -10
  58. data/lib/eve_online/implant.rb +2 -2
  59. data/lib/eve_online/item.rb +7 -7
  60. data/lib/eve_online/jump_clone.rb +4 -4
  61. data/lib/eve_online/jump_clone_implant.rb +29 -0
  62. data/lib/eve_online/market_order.rb +91 -0
  63. data/lib/eve_online/server/status.rb +2 -2
  64. data/lib/eve_online/skill.rb +4 -4
  65. data/lib/eve_online/skill_queue_entry.rb +51 -0
  66. data/lib/eve_online/sovereignty/campaigns.rb +1 -1
  67. data/lib/eve_online/standing.rb +3 -3
  68. data/lib/eve_online/version.rb +1 -1
  69. data/lib/eve_online/wallet_journal_entry.rb +97 -0
  70. metadata +46 -2
@@ -1,5 +1,9 @@
1
+ require 'memoist'
2
+
1
3
  module EveOnline
2
4
  class CharacterImplants
5
+ extend Memoist
6
+
3
7
  attr_reader :result
4
8
 
5
9
  def initialize(result)
@@ -13,11 +17,13 @@ module EveOnline
13
17
  end
14
18
  output
15
19
  end
20
+ memoize :implants
16
21
 
17
22
  private
18
23
 
19
24
  def rowset
20
- @rowset ||= result.fetch('rowset').reject { |a| a.fetch('@name') != 'implants' }.first.fetch('row')
25
+ result.fetch('rowset').reject { |a| a.fetch('@name') != 'implants' }.first.fetch('row')
21
26
  end
27
+ memoize :rowset
22
28
  end
23
29
  end
@@ -0,0 +1,29 @@
1
+ require 'memoist'
2
+
3
+ module EveOnline
4
+ class CharacterJumpCloneImplants
5
+ extend Memoist
6
+
7
+ attr_reader :result
8
+
9
+ def initialize(result)
10
+ @result = result
11
+ end
12
+
13
+ def jump_clone_implants
14
+ output = []
15
+ rowset.each do |jump_clone_implant|
16
+ output << JumpCloneImplant.new(jump_clone_implant)
17
+ end
18
+ output
19
+ end
20
+ memoize :jump_clone_implants
21
+
22
+ private
23
+
24
+ def rowset
25
+ result.fetch('rowset').reject { |a| a.fetch('@name') != 'jumpCloneImplants' }.first.fetch('row')
26
+ end
27
+ memoize :rowset
28
+ end
29
+ end
@@ -1,5 +1,9 @@
1
+ require 'memoist'
2
+
1
3
  module EveOnline
2
4
  class CharacterJumpClones
5
+ extend Memoist
6
+
3
7
  attr_reader :result
4
8
 
5
9
  def initialize(result)
@@ -13,11 +17,13 @@ module EveOnline
13
17
  end
14
18
  output
15
19
  end
20
+ memoize :jump_clones
16
21
 
17
22
  private
18
23
 
19
24
  def rowset
20
- @rowset ||= result.fetch('rowset').reject { |a| a.fetch('@name') != 'jumpClones' }.first.fetch('row')
25
+ result.fetch('rowset').reject { |a| a.fetch('@name') != 'jumpClones' }.first.fetch('row')
21
26
  end
27
+ memoize :rowset
22
28
  end
23
29
  end
@@ -1,5 +1,9 @@
1
+ require 'memoist'
2
+
1
3
  module EveOnline
2
4
  class CharacterSkills
5
+ extend Memoist
6
+
3
7
  attr_reader :result
4
8
 
5
9
  def initialize(result)
@@ -13,11 +17,13 @@ module EveOnline
13
17
  end
14
18
  output
15
19
  end
20
+ memoize :skills
16
21
 
17
22
  private
18
23
 
19
24
  def rowset
20
- @rowset ||= result.fetch('rowset').reject { |a| a.fetch('@name') != 'skills' }.first.fetch('row')
25
+ result.fetch('rowset').reject { |a| a.fetch('@name') != 'skills' }.first.fetch('row')
21
26
  end
27
+ memoize :rowset
22
28
  end
23
29
  end
@@ -4,6 +4,8 @@ module EveOnline
4
4
  class AccountBalance < BaseXML
5
5
  API_ENDPOINT = 'https://api.eveonline.com/char/AccountBalance.xml.aspx'.freeze
6
6
 
7
+ ACCESS_MASK = 1
8
+
7
9
  attr_reader :key_id, :v_code, :character_id
8
10
 
9
11
  def initialize(key_id, v_code, character_id)
@@ -24,28 +26,32 @@ module EveOnline
24
26
  end
25
27
 
26
28
  def account_id
27
- @account_id ||= row.fetch('@accountID').to_i
29
+ row.fetch('@accountID').to_i
28
30
  end
29
31
 
30
32
  def account_key
31
- @account_key ||= row.fetch('@accountKey').to_i
33
+ row.fetch('@accountKey').to_i
32
34
  end
33
35
 
34
36
  def balance
35
- @balance ||= row.fetch('@balance')
37
+ row.fetch('@balance').to_f
36
38
  end
37
39
 
38
- def row
39
- @row ||= rowset.fetch('row')
40
+ def url
41
+ "#{ API_ENDPOINT }?keyID=#{ key_id }&vCode=#{ v_code }&characterID=#{ character_id }"
40
42
  end
41
43
 
44
+ private
45
+
42
46
  def rowset
43
- @rowset ||= result.fetch('rowset')
47
+ result.fetch('rowset')
44
48
  end
49
+ memoize :rowset
45
50
 
46
- def url
47
- "#{ API_ENDPOINT }?keyID=#{ key_id }&vCode=#{ v_code }&characterID=#{ character_id }"
51
+ def row
52
+ rowset.fetch('row')
48
53
  end
54
+ memoize :row
49
55
  end
50
56
  end
51
57
  end
@@ -4,6 +4,8 @@ module EveOnline
4
4
  class AssetList < BaseXML
5
5
  API_ENDPOINT = 'https://api.eveonline.com/char/AssetList.xml.aspx'.freeze
6
6
 
7
+ ACCESS_MASK = 2
8
+
7
9
  attr_reader :key_id, :v_code, :character_id, :flat
8
10
 
9
11
  def initialize(key_id, v_code, character_id, flat = 1)
@@ -28,18 +30,23 @@ module EveOnline
28
30
  raise ArgumentError
29
31
  end
30
32
  end
33
+ memoize :assets
31
34
 
32
- def row
33
- @row ||= rowset.fetch('row')
35
+ def url
36
+ "#{ API_ENDPOINT }?keyID=#{ key_id }&vCode=#{ v_code }&characterID=#{ character_id }&flat=#{ flat }"
34
37
  end
35
38
 
39
+ private
40
+
36
41
  def rowset
37
- @rowset ||= result.fetch('rowset')
42
+ result.fetch('rowset')
38
43
  end
44
+ memoize :rowset
39
45
 
40
- def url
41
- "#{ API_ENDPOINT }?keyID=#{ key_id }&vCode=#{ v_code }&characterID=#{ character_id }&flat=#{ flat }"
46
+ def row
47
+ rowset.fetch('row')
42
48
  end
49
+ memoize :row
43
50
  end
44
51
  end
45
52
  end
@@ -4,6 +4,8 @@ module EveOnline
4
4
  class Blueprints < BaseXML
5
5
  API_ENDPOINT = 'https://api.eveonline.com/char/Blueprints.xml.aspx'.freeze
6
6
 
7
+ ACCESS_MASK = 2
8
+
7
9
  attr_reader :key_id, :v_code, :character_id
8
10
 
9
11
  def initialize(key_id, v_code, character_id)
@@ -27,18 +29,23 @@ module EveOnline
27
29
  raise ArgumentError
28
30
  end
29
31
  end
32
+ memoize :blueprints
30
33
 
31
- def row
32
- @row ||= rowset.fetch('row')
34
+ def url
35
+ "#{ API_ENDPOINT }?keyID=#{ key_id }&vCode=#{ v_code }&characterID=#{ character_id }"
33
36
  end
34
37
 
38
+ private
39
+
35
40
  def rowset
36
- @rowset ||= result.fetch('rowset')
41
+ result.fetch('rowset')
37
42
  end
43
+ memoize :rowset
38
44
 
39
- def url
40
- "#{ API_ENDPOINT }?keyID=#{ key_id }&vCode=#{ v_code }&characterID=#{ character_id }"
45
+ def row
46
+ rowset.fetch('row')
41
47
  end
48
+ memoize :row
42
49
  end
43
50
  end
44
51
  end
@@ -4,6 +4,8 @@ module EveOnline
4
4
  class Bookmarks < BaseXML
5
5
  API_ENDPOINT = 'https://api.eveonline.com/char/Bookmarks.xml.aspx'.freeze
6
6
 
7
+ ACCESS_MASK = 268_435_456
8
+
7
9
  attr_reader :key_id, :v_code, :character_id
8
10
 
9
11
  def initialize(key_id, v_code, character_id)
@@ -14,33 +16,36 @@ module EveOnline
14
16
  end
15
17
 
16
18
  def bookmark_folders
17
- @bookmark_folders ||= begin
18
- case row
19
- when Hash
20
- [BookmarkFolder.new(row)]
21
- when Array
22
- bookmark_folders = []
23
- row.each do |bookmark_folder|
24
- bookmark_folders << BookmarkFolder.new(bookmark_folder)
25
- end
26
- bookmark_folders
27
- else
28
- raise ArgumentError
19
+ case row
20
+ when Hash
21
+ [BookmarkFolder.new(row)]
22
+ when Array
23
+ output = []
24
+ row.each do |bookmark_folder|
25
+ output << BookmarkFolder.new(bookmark_folder)
29
26
  end
27
+ output
28
+ else
29
+ raise ArgumentError
30
30
  end
31
31
  end
32
+ memoize :bookmark_folders
32
33
 
33
- def row
34
- @row ||= rowset.fetch('row')
34
+ def url
35
+ "#{ API_ENDPOINT }?keyID=#{ key_id }&vCode=#{ v_code }&characterID=#{ character_id }"
35
36
  end
36
37
 
38
+ private
39
+
37
40
  def rowset
38
- @rowset ||= result.fetch('rowset')
41
+ result.fetch('rowset')
39
42
  end
43
+ memoize :rowset
40
44
 
41
- def url
42
- "#{ API_ENDPOINT }?keyID=#{ key_id }&vCode=#{ v_code }&characterID=#{ character_id }"
45
+ def row
46
+ rowset.fetch('row')
43
47
  end
48
+ memoize :row
44
49
  end
45
50
  end
46
51
  end
@@ -4,6 +4,8 @@ module EveOnline
4
4
  class CalendarEventAttendees < BaseXML
5
5
  API_ENDPOINT = 'https://api.eveonline.com/char/CalendarEventAttendees.xml.aspx'.freeze
6
6
 
7
+ ACCESS_MASK = 4
8
+
7
9
  attr_reader :key_id, :v_code, :character_id, :event_id
8
10
 
9
11
  def initialize(key_id, v_code, character_id, event_id)
@@ -4,6 +4,8 @@ module EveOnline
4
4
  class CharacterSheet < BaseXML
5
5
  API_ENDPOINT = 'https://api.eveonline.com/char/CharacterSheet.xml.aspx'.freeze
6
6
 
7
+ ACCESS_MASK = 8
8
+
7
9
  attr_reader :key_id, :v_code, :character_id
8
10
 
9
11
  def initialize(key_id, v_code, character_id)
@@ -44,152 +46,160 @@ module EveOnline
44
46
  end
45
47
 
46
48
  def name
47
- @name ||= result.fetch('name')
49
+ result.fetch('name')
48
50
  end
49
51
 
50
52
  def home_station_id
51
- @home_station_id ||= result.fetch('homeStationID').to_i
53
+ result.fetch('homeStationID').to_i
52
54
  end
53
55
 
54
56
  def dob
55
- @dob ||= parse_datetime_with_timezone(result.fetch('DoB'))
57
+ parse_datetime_with_timezone(result.fetch('DoB'))
56
58
  end
57
59
 
58
60
  def race
59
- @race ||= result.fetch('race')
61
+ result.fetch('race')
60
62
  end
61
63
 
62
64
  def blood_line_id
63
- @blood_line_id ||= result.fetch('bloodLineID').to_i
65
+ result.fetch('bloodLineID').to_i
64
66
  end
65
67
 
66
68
  def blood_line
67
- @blood_line ||= result.fetch('bloodLine')
69
+ result.fetch('bloodLine')
68
70
  end
69
71
 
70
72
  def ancestry_id
71
- @ancestry_id ||= result.fetch('ancestryID').to_i
73
+ result.fetch('ancestryID').to_i
72
74
  end
73
75
 
74
76
  def ancestry
75
- @ancestry ||= result.fetch('ancestry')
77
+ result.fetch('ancestry')
76
78
  end
77
79
 
78
80
  def gender
79
- @gender ||= result.fetch('gender').downcase.to_sym
81
+ result.fetch('gender').downcase.to_sym
80
82
  end
81
83
 
82
84
  def corporation_name
83
- @corporation_name ||= result.fetch('corporationName')
85
+ result.fetch('corporationName')
84
86
  end
85
87
 
86
88
  def corporation_id
87
- @corporation_id ||= result.fetch('corporationID').to_i
89
+ result.fetch('corporationID').to_i
88
90
  end
89
91
 
90
92
  def alliance_name
91
93
  # TODO: Corporation "Federal Navy Academy" doesn't have allianceName in response
92
- @alliance_name ||= result.fetch('allianceName')
94
+ result.fetch('allianceName')
93
95
  end
94
96
 
95
97
  def alliance_id
96
98
  # TODO: Corporation "Federal Navy Academy" doesn't have allianceID in response
97
- @alliance_id ||= result.fetch('allianceID').to_i
99
+ result.fetch('allianceID').to_i
98
100
  end
99
101
 
100
102
  def faction_name
101
103
  # TODO: Corporation "Federal Navy Academy" doesn't have factionName in response
102
- @faction_name ||= result.fetch('factionName')
104
+ result.fetch('factionName')
103
105
  end
104
106
 
105
107
  def faction_id
106
108
  # TODO: Corporation "Federal Navy Academy" doesn't have factionID in response
107
- @faction_id ||= result.fetch('factionID').to_i
109
+ result.fetch('factionID').to_i
108
110
  end
109
111
 
110
112
  def clone_type_id
111
- @clone_type_id ||= result.fetch('cloneTypeID').to_i
113
+ result.fetch('cloneTypeID').to_i
112
114
  end
113
115
 
114
116
  def clone_name
115
- @clone_name ||= result.fetch('cloneName')
117
+ result.fetch('cloneName')
116
118
  end
117
119
 
118
120
  def clone_skill_points
119
- @clone_skill_points ||= result.fetch('cloneSkillPoints').to_i
121
+ result.fetch('cloneSkillPoints').to_i
120
122
  end
121
123
 
122
124
  def free_skill_points
123
- @free_skill_points ||= result.fetch('freeSkillPoints').to_i
125
+ result.fetch('freeSkillPoints').to_i
124
126
  end
125
127
 
126
128
  def free_respecs
127
- @free_respecs ||= result.fetch('freeRespecs').to_i
129
+ result.fetch('freeRespecs').to_i
128
130
  end
129
131
 
130
132
  def clone_jump_date
131
- @clone_jump_date ||= parse_datetime_with_timezone(result.fetch('cloneJumpDate'))
133
+ parse_datetime_with_timezone(result.fetch('cloneJumpDate'))
132
134
  end
133
135
 
134
136
  def last_respec_date
135
- @last_respec_date ||= parse_datetime_with_timezone(result.fetch('lastRespecDate'))
137
+ parse_datetime_with_timezone(result.fetch('lastRespecDate'))
136
138
  end
137
139
 
138
140
  def last_timed_respec
139
- @last_timed_respec ||= parse_datetime_with_timezone(result.fetch('lastTimedRespec'))
141
+ parse_datetime_with_timezone(result.fetch('lastTimedRespec'))
140
142
  end
141
143
 
142
144
  def remote_station_date
143
- @remote_station_date ||= parse_datetime_with_timezone(result.fetch('remoteStationDate'))
145
+ parse_datetime_with_timezone(result.fetch('remoteStationDate'))
144
146
  end
145
147
 
146
148
  def jump_activation
147
- @jump_activation ||= parse_datetime_with_timezone(result.fetch('jumpActivation'))
149
+ parse_datetime_with_timezone(result.fetch('jumpActivation'))
148
150
  end
149
151
 
150
152
  def jump_fatigue
151
- @jump_fatigue ||= parse_datetime_with_timezone(result.fetch('jumpFatigue'))
153
+ parse_datetime_with_timezone(result.fetch('jumpFatigue'))
152
154
  end
153
155
 
154
156
  def jump_last_update
155
- @jump_last_update ||= parse_datetime_with_timezone(result.fetch('jumpLastUpdate'))
157
+ parse_datetime_with_timezone(result.fetch('jumpLastUpdate'))
156
158
  end
157
159
 
158
160
  def balance
159
- @balance ||= result.fetch('balance')
161
+ result.fetch('balance').to_f
160
162
  end
161
163
 
162
164
  def base_intelligence
163
- @intelligence ||= attributes.fetch('intelligence').to_i
165
+ attributes.fetch('intelligence').to_i
164
166
  end
165
167
 
166
168
  def base_memory
167
- @memory ||= attributes.fetch('memory').to_i
169
+ attributes.fetch('memory').to_i
168
170
  end
169
171
 
170
172
  def base_charisma
171
- @charisma ||= attributes.fetch('charisma').to_i
173
+ attributes.fetch('charisma').to_i
172
174
  end
173
175
 
174
176
  def base_perception
175
- @perception ||= attributes.fetch('perception').to_i
177
+ attributes.fetch('perception').to_i
176
178
  end
177
179
 
178
180
  def base_willpower
179
- @willpower ||= attributes.fetch('willpower').to_i
181
+ attributes.fetch('willpower').to_i
180
182
  end
181
183
 
182
184
  def implants
183
- @implants ||= CharacterImplants.new(result).implants
185
+ CharacterImplants.new(result).implants
184
186
  end
187
+ memoize :implants
185
188
 
186
189
  def skills
187
- @skills ||= CharacterSkills.new(result).skills
190
+ CharacterSkills.new(result).skills
188
191
  end
192
+ memoize :skills
189
193
 
190
194
  def jump_clones
191
- @jump_clones ||= CharacterJumpClones.new(result).jump_clones
195
+ CharacterJumpClones.new(result).jump_clones
196
+ end
197
+ memoize :jump_clones
198
+
199
+ def jump_clone_implants
200
+ CharacterJumpCloneImplants.new(result).jump_clone_implants
192
201
  end
202
+ memoize :jump_clone_implants
193
203
 
194
204
  def url
195
205
  "#{ API_ENDPOINT }?keyID=#{ key_id }&vCode=#{ v_code }&characterID=#{ character_id }"
@@ -198,8 +208,9 @@ module EveOnline
198
208
  private
199
209
 
200
210
  def attributes
201
- @attributes ||= result.fetch('attributes')
211
+ result.fetch('attributes')
202
212
  end
213
+ memoize :attributes
203
214
  end
204
215
  end
205
216
  end