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
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