eve_online 0.8.0 → 0.9.0

Sign up to get free protection for your applications and to get access to all the features.
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