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
data/eve_online.gemspec CHANGED
@@ -28,4 +28,5 @@ Gem::Specification.new do |spec|
28
28
  spec.add_runtime_dependency 'activesupport', '>= 3.0.0'
29
29
  spec.add_runtime_dependency 'nori', '~> 2.6'
30
30
  spec.add_runtime_dependency 'json'
31
+ spec.add_runtime_dependency 'memoist'
31
32
  end
data/lib/eve_online.rb CHANGED
@@ -14,14 +14,21 @@ require 'eve_online/item'
14
14
  require 'eve_online/implant'
15
15
  require 'eve_online/skill'
16
16
  require 'eve_online/jump_clone'
17
+ require 'eve_online/jump_clone_implant'
17
18
  require 'eve_online/character_skills'
18
19
  require 'eve_online/character_implants'
19
20
  require 'eve_online/character_jump_clones'
21
+ require 'eve_online/character_jump_clone_implants'
20
22
  require 'eve_online/standing'
23
+ require 'eve_online/skill_queue_entry'
24
+ require 'eve_online/contact_notification'
25
+ require 'eve_online/wallet_journal_entry'
26
+ require 'eve_online/market_order'
21
27
 
22
28
  require 'eve_online/account/api_key_info'
23
29
  require 'eve_online/account/characters'
24
30
  require 'eve_online/account/status'
31
+
25
32
  require 'eve_online/characters/account_balance'
26
33
  require 'eve_online/characters/asset_list'
27
34
  require 'eve_online/characters/blueprints'
@@ -34,6 +41,32 @@ require 'eve_online/characters/character_sheet'
34
41
  require 'eve_online/characters/upcoming_calendar_events'
35
42
  require 'eve_online/characters/skill_in_training'
36
43
  require 'eve_online/characters/standings'
44
+ require 'eve_online/characters/contracts'
45
+ require 'eve_online/characters/chat_channels'
46
+ require 'eve_online/characters/contract_bids'
47
+ require 'eve_online/characters/contract_items'
48
+ require 'eve_online/characters/fac_war_stats'
49
+ require 'eve_online/characters/industry_jobs'
50
+ require 'eve_online/characters/industry_jobs_history'
51
+ require 'eve_online/characters/kill_mails'
52
+ require 'eve_online/characters/locations'
53
+ require 'eve_online/characters/mail_bodies'
54
+ require 'eve_online/characters/mailing_lists'
55
+ require 'eve_online/characters/mail_messages'
56
+ require 'eve_online/characters/market_orders'
57
+ require 'eve_online/characters/notifications'
58
+ require 'eve_online/characters/notification_texts'
59
+ require 'eve_online/characters/planetary_colonies'
60
+ require 'eve_online/characters/planetary_links'
61
+ require 'eve_online/characters/planetary_pins'
62
+ require 'eve_online/characters/planetary_routes'
63
+ require 'eve_online/characters/research'
64
+ require 'eve_online/characters/skill_queue'
65
+ require 'eve_online/characters/wallet_journal'
66
+ require 'eve_online/characters/wallet_transactions'
67
+
68
+ require 'eve_online/corporations/market_orders'
69
+
37
70
  require 'eve_online/eve/character_id'
38
71
  require 'eve_online/server/status'
39
72
 
@@ -26,34 +26,39 @@ module EveOnline
26
26
  raise ArgumentError
27
27
  end
28
28
  end
29
-
30
- def row
31
- @row ||= rowset.fetch('row')
32
- end
33
-
34
- def rowset
35
- @rowset ||= key.fetch('rowset')
36
- end
29
+ memoize :characters
37
30
 
38
31
  def expires
39
- @expires ||= parse_datetime_with_timezone(key.fetch('@expires'))
32
+ parse_datetime_with_timezone(key.fetch('@expires'))
40
33
  end
41
34
 
42
35
  def type
43
- @type ||= key.fetch('@type')
36
+ key.fetch('@type')
44
37
  end
45
38
 
46
39
  def access_mask
47
- @access_mask ||= key.fetch('@accessMask').to_i
40
+ key.fetch('@accessMask').to_i
48
41
  end
49
42
 
43
+ def url
44
+ "#{ API_ENDPOINT }?keyID=#{ key_id }&vCode=#{ v_code }"
45
+ end
46
+
47
+ private
48
+
50
49
  def key
51
- @key ||= result.fetch('key')
50
+ result.fetch('key')
52
51
  end
53
52
 
54
- def url
55
- "#{ API_ENDPOINT }?keyID=#{ key_id }&vCode=#{ v_code }"
53
+ def rowset
54
+ key.fetch('rowset')
55
+ end
56
+ memoize :rowset
57
+
58
+ def row
59
+ rowset.fetch('row')
56
60
  end
61
+ memoize :row
57
62
  end
58
63
  end
59
64
  end
@@ -26,18 +26,23 @@ module EveOnline
26
26
  raise ArgumentError
27
27
  end
28
28
  end
29
+ memoize :characters
29
30
 
30
- def row
31
- @row ||= rowset.fetch('row')
31
+ def url
32
+ "#{ API_ENDPOINT}?keyID=#{ key_id }&vCode=#{ v_code }"
32
33
  end
33
34
 
35
+ private
36
+
34
37
  def rowset
35
- @rowset ||= result.fetch('rowset')
38
+ result.fetch('rowset')
36
39
  end
40
+ memoize :rowset
37
41
 
38
- def url
39
- "#{ API_ENDPOINT}?keyID=#{ key_id }&vCode=#{ v_code }"
42
+ def row
43
+ rowset.fetch('row')
40
44
  end
45
+ memoize :row
41
46
  end
42
47
  end
43
48
  end
@@ -24,19 +24,19 @@ module EveOnline
24
24
  end
25
25
 
26
26
  def paid_until
27
- @paid_until ||= parse_datetime_with_timezone(result.fetch('paidUntil'))
27
+ parse_datetime_with_timezone(result.fetch('paidUntil'))
28
28
  end
29
29
 
30
30
  def create_date
31
- @create_date ||= parse_datetime_with_timezone(result.fetch('createDate'))
31
+ parse_datetime_with_timezone(result.fetch('createDate'))
32
32
  end
33
33
 
34
34
  def logon_count
35
- @logon_count ||= result.fetch('logonCount').to_i
35
+ result.fetch('logonCount').to_i
36
36
  end
37
37
 
38
38
  def logon_minutes
39
- @logon_minutes ||= result.fetch('logonMinutes').to_i
39
+ result.fetch('logonMinutes').to_i
40
40
  end
41
41
 
42
42
  def url
@@ -1,22 +1,27 @@
1
1
  require 'open-uri'
2
+ require 'memoist'
2
3
 
3
4
  module EveOnline
4
5
  class Base
6
+ extend Memoist
7
+
5
8
  def url
6
9
  raise NotImplementedError
7
10
  end
8
11
 
9
12
  def user_agent
10
- @user_agent ||= "EveOnline API (https://github.com/biow0lf/eve_online) v#{ VERSION }"
13
+ "EveOnline API (https://github.com/biow0lf/eve_online) v#{ VERSION }"
11
14
  end
12
15
 
13
16
  def content
14
- @content ||= open(url, open_timeout: 60, read_timeout: 60,
15
- 'User-Agent' => user_agent).read
17
+ open(url, open_timeout: 60, read_timeout: 60,
18
+ 'User-Agent' => user_agent).read
16
19
  end
20
+ memoize :content
17
21
 
18
22
  def response
19
- @response ||= parser.parse(content)
23
+ parser.parse(content)
20
24
  end
25
+ memoize :response
21
26
  end
22
27
  end
@@ -10,24 +10,29 @@ module EveOnline
10
10
  end
11
11
 
12
12
  def result
13
- @result ||= eveapi.fetch('result')
13
+ eveapi.fetch('result')
14
14
  end
15
+ memoize :result
15
16
 
16
17
  def cached_until
17
- @cached_until ||= parse_datetime_with_timezone(eveapi.fetch('cachedUntil'))
18
+ parse_datetime_with_timezone(eveapi.fetch('cachedUntil'))
18
19
  end
20
+ memoize :cached_until
19
21
 
20
22
  def current_time
21
- @current_time ||= parse_datetime_with_timezone(eveapi.fetch('currentTime'))
23
+ parse_datetime_with_timezone(eveapi.fetch('currentTime'))
22
24
  end
25
+ memoize :current_time
23
26
 
24
27
  def version
25
28
  eveapi.fetch('@version').to_i
26
29
  end
30
+ memoize :version
27
31
 
28
32
  def eveapi
29
- @eveapi ||= response.fetch('eveapi')
33
+ response.fetch('eveapi')
30
34
  end
35
+ memoize :eveapi
31
36
 
32
37
  private
33
38
 
@@ -21,40 +21,40 @@ module EveOnline
21
21
  end
22
22
 
23
23
  def item_id
24
- @item_id ||= options.fetch('@itemID').to_i
24
+ options.fetch('@itemID').to_i
25
25
  end
26
26
 
27
27
  def location_id
28
- @location_id ||= options.fetch('@locationID').to_i
28
+ options.fetch('@locationID').to_i
29
29
  end
30
30
 
31
31
  def type_id
32
- @type_id ||= options.fetch('@typeID').to_i
32
+ options.fetch('@typeID').to_i
33
33
  end
34
34
 
35
35
  def type_name
36
- @type_name ||= options.fetch('@typeName')
36
+ options.fetch('@typeName')
37
37
  end
38
38
 
39
39
  def flag_id
40
- @flag_id ||= options.fetch('@flagID').to_i
40
+ options.fetch('@flagID').to_i
41
41
  end
42
42
 
43
43
  # TODO: return EveOnline::Blueprint::Quantity
44
44
  def quantity
45
- @quantity ||= options.fetch('@quantity').to_i
45
+ options.fetch('@quantity').to_i
46
46
  end
47
47
 
48
48
  def time_efficiency
49
- @time_efficiency ||= options.fetch('@timeEfficiency').to_i
49
+ options.fetch('@timeEfficiency').to_i
50
50
  end
51
51
 
52
52
  def material_efficiency
53
- @material_efficiency ||= options.fetch('@materialEfficiency').to_i
53
+ options.fetch('@materialEfficiency').to_i
54
54
  end
55
55
 
56
56
  def runs
57
- @runs ||= options.fetch('@runs').to_i
57
+ options.fetch('@runs').to_i
58
58
  end
59
59
  end
60
60
  end
@@ -1,3 +1,5 @@
1
+ require 'active_support/time'
2
+
1
3
  module EveOnline
2
4
  class Bookmark
3
5
  attr_reader :options
@@ -23,47 +25,47 @@ module EveOnline
23
25
  end
24
26
 
25
27
  def bookmark_id
26
- @bookmark_id ||= options.fetch('@bookmarkID').to_i
28
+ options.fetch('@bookmarkID').to_i
27
29
  end
28
30
 
29
31
  def creator_id
30
- @creator_id ||= options.fetch('@creatorID').to_i
32
+ options.fetch('@creatorID').to_i
31
33
  end
32
34
 
33
35
  def created
34
- @created ||= ActiveSupport::TimeZone['UTC'].parse(options.fetch('@created'))
36
+ ActiveSupport::TimeZone['UTC'].parse(options.fetch('@created'))
35
37
  end
36
38
 
37
39
  def item_id
38
- @item_id ||= options.fetch('@itemID').to_i
40
+ options.fetch('@itemID').to_i
39
41
  end
40
42
 
41
43
  def type_id
42
- @type_id ||= options.fetch('@typeID').to_i
44
+ options.fetch('@typeID').to_i
43
45
  end
44
46
 
45
47
  def location_id
46
- @location_id ||= options.fetch('@locationID').to_i
48
+ options.fetch('@locationID').to_i
47
49
  end
48
50
 
49
51
  def x
50
- @x ||= options.fetch('@x').to_f
52
+ options.fetch('@x').to_f
51
53
  end
52
54
 
53
55
  def y
54
- @y ||= options.fetch('@y').to_f
56
+ options.fetch('@y').to_f
55
57
  end
56
58
 
57
59
  def z
58
- @z ||= options.fetch('@z').to_f
60
+ options.fetch('@z').to_f
59
61
  end
60
62
 
61
63
  def memo
62
- @memo ||= options.fetch('@memo')
64
+ options.fetch('@memo')
63
65
  end
64
66
 
65
67
  def note
66
- @note ||= options.fetch('@note')
68
+ options.fetch('@note')
67
69
  end
68
70
  end
69
71
  end
@@ -1,5 +1,9 @@
1
+ require 'memoist'
2
+
1
3
  module EveOnline
2
4
  class BookmarkFolder
5
+ extend Memoist
6
+
3
7
  attr_reader :options
4
8
 
5
9
  def initialize(options)
@@ -14,38 +18,39 @@ module EveOnline
14
18
  end
15
19
 
16
20
  def folder_id
17
- @folder_d ||= options.fetch('@folderID').to_i
21
+ options.fetch('@folderID').to_i
18
22
  end
19
23
 
20
24
  def folder_name
21
- @folder_name ||= options.fetch('@folderName')
25
+ options.fetch('@folderName')
22
26
  end
23
27
 
24
28
  def bookmarks
25
- @bookmarks ||= begin
26
- case row
27
- when Hash
28
- [Bookmark.new(row)]
29
- when Array
30
- bookmarks = []
31
- row.each do |bookmark|
32
- bookmarks << Bookmark.new(bookmark)
33
- end
34
- bookmarks
35
- else
36
- raise ArgumentError
29
+ case row
30
+ when Hash
31
+ [Bookmark.new(row)]
32
+ when Array
33
+ bookmarks = []
34
+ row.each do |bookmark|
35
+ bookmarks << Bookmark.new(bookmark)
37
36
  end
37
+ bookmarks
38
+ else
39
+ raise ArgumentError
38
40
  end
39
41
  end
42
+ memoize :bookmarks
40
43
 
41
44
  private
42
45
 
43
46
  def rowset
44
- @rowset ||= options.fetch('rowset')
47
+ options.fetch('rowset')
45
48
  end
49
+ memoize :rowset
46
50
 
47
51
  def row
48
- @row ||= rowset.fetch('row')
52
+ rowset.fetch('row')
49
53
  end
54
+ memoize :row
50
55
  end
51
56
  end
@@ -20,35 +20,35 @@ module EveOnline
20
20
  end
21
21
 
22
22
  def character_id
23
- @character_id ||= options.fetch('@characterID').to_i
23
+ options.fetch('@characterID').to_i
24
24
  end
25
25
 
26
26
  def character_name
27
- @character_name ||= options.fetch('@name', nil) || options.fetch('@characterName')
27
+ options.fetch('@name', nil) || options.fetch('@characterName')
28
28
  end
29
29
 
30
30
  def corporation_id
31
- @corporation_id ||= options.fetch('@corporationID').to_i
31
+ options.fetch('@corporationID').to_i
32
32
  end
33
33
 
34
34
  def corporation_name
35
- @corporation_name ||= options.fetch('@corporationName')
35
+ options.fetch('@corporationName')
36
36
  end
37
37
 
38
38
  def alliance_id
39
- @alliance_id ||= options.fetch('@allianceID').to_i
39
+ options.fetch('@allianceID').to_i
40
40
  end
41
41
 
42
42
  def alliance_name
43
- @alliance_name ||= options.fetch('@allianceName')
43
+ options.fetch('@allianceName')
44
44
  end
45
45
 
46
46
  def faction_id
47
- @faction_id ||= options.fetch('@factionID').to_i
47
+ options.fetch('@factionID').to_i
48
48
  end
49
49
 
50
50
  def faction_name
51
- @faction_name ||= options.fetch('@factionName')
51
+ options.fetch('@factionName')
52
52
  end
53
53
  end
54
54
  end