eve_online 0.10.0 → 0.11.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.
- checksums.yaml +4 -4
- data/.editorconfig +10 -0
- data/.rubocop.yml +2 -7
- data/.travis.yml +4 -1
- data/Gemfile +1 -1
- data/README.md +273 -7
- data/eve_online.gemspec +4 -2
- data/lib/eve_online.rb +32 -2
- data/lib/eve_online/characters/skill_queue.rb +3 -3
- data/lib/eve_online/esi/base.rb +15 -2
- data/lib/eve_online/esi/character.rb +75 -0
- data/lib/eve_online/esi/character_loyalty_points.rb +31 -0
- data/lib/eve_online/esi/character_portrait.rb +61 -0
- data/lib/eve_online/esi/character_skill_queue.rb +31 -0
- data/lib/eve_online/esi/character_skills.rb +41 -0
- data/lib/eve_online/esi/models/loyalty_point.rb +28 -0
- data/lib/eve_online/esi/models/skill.rb +33 -0
- data/lib/eve_online/esi/models/skill_queue_entry.rb +60 -0
- data/lib/eve_online/sde/agt_agent_types.rb +14 -0
- data/lib/eve_online/sde/agt_agents.rb +14 -0
- data/lib/eve_online/sde/agt_research_agents.rb +14 -0
- data/lib/eve_online/sde/base.rb +25 -0
- data/lib/eve_online/sde/chr_races.rb +14 -0
- data/lib/eve_online/sde/inv_flags.rb +14 -0
- data/lib/eve_online/sde/inv_items.rb +14 -0
- data/lib/eve_online/sde/inv_names.rb +14 -0
- data/lib/eve_online/sde/inv_positions.rb +14 -0
- data/lib/eve_online/sde/models/agt_agent.rb +58 -0
- data/lib/eve_online/sde/models/agt_agent_type.rb +28 -0
- data/lib/eve_online/sde/models/agt_research_agent.rb +28 -0
- data/lib/eve_online/sde/models/chr_race.rb +38 -0
- data/lib/eve_online/sde/models/inv_flag.rb +38 -0
- data/lib/eve_online/sde/models/inv_item.rb +48 -0
- data/lib/eve_online/sde/models/inv_name.rb +28 -0
- data/lib/eve_online/sde/models/inv_position.rb +53 -0
- data/lib/eve_online/version.rb +1 -1
- data/lib/eve_online/xml/models/skill_queue_entry.rb +55 -0
- metadata +31 -6
- data/lib/eve_online/esi/characters/character.rb +0 -20
- data/lib/eve_online/skill_queue_entry.rb +0 -51
@@ -18,11 +18,11 @@ module EveOnline
|
|
18
18
|
def skills
|
19
19
|
case row
|
20
20
|
when Hash
|
21
|
-
[SkillQueueEntry.new(row)]
|
21
|
+
[EveOnline::XML::Models::SkillQueueEntry.new(row)]
|
22
22
|
when Array
|
23
23
|
output = []
|
24
|
-
row.each do |
|
25
|
-
output << SkillQueueEntry.new(
|
24
|
+
row.each do |skill|
|
25
|
+
output << EveOnline::XML::Models::SkillQueueEntry.new(skill)
|
26
26
|
end
|
27
27
|
output
|
28
28
|
else
|
data/lib/eve_online/esi/base.rb
CHANGED
@@ -1,13 +1,15 @@
|
|
1
1
|
require 'memoist'
|
2
|
+
require 'active_support/time'
|
2
3
|
|
3
4
|
module EveOnline
|
4
5
|
module ESI
|
5
6
|
class Base
|
6
7
|
extend Memoist
|
7
8
|
|
8
|
-
attr_reader :parser
|
9
|
+
attr_reader :token, :parser
|
9
10
|
|
10
|
-
def initialize
|
11
|
+
def initialize(token = nil)
|
12
|
+
@token = token
|
11
13
|
@parser = JSON
|
12
14
|
end
|
13
15
|
|
@@ -15,6 +17,10 @@ module EveOnline
|
|
15
17
|
raise NotImplementedError
|
16
18
|
end
|
17
19
|
|
20
|
+
def scope
|
21
|
+
raise NotImplementedError
|
22
|
+
end
|
23
|
+
|
18
24
|
def user_agent
|
19
25
|
"EveOnline API (https://github.com/biow0lf/eve_online) v#{ VERSION }"
|
20
26
|
end
|
@@ -23,6 +29,7 @@ module EveOnline
|
|
23
29
|
faraday = Faraday.new
|
24
30
|
|
25
31
|
faraday.headers[:user_agent] = user_agent
|
32
|
+
faraday.authorization(:Bearer, token) if token
|
26
33
|
faraday.options.timeout = 60
|
27
34
|
faraday.options.open_timeout = 60
|
28
35
|
|
@@ -36,6 +43,12 @@ module EveOnline
|
|
36
43
|
parser.parse(content)
|
37
44
|
end
|
38
45
|
memoize :response
|
46
|
+
|
47
|
+
private
|
48
|
+
|
49
|
+
def parse_datetime_with_timezone(value)
|
50
|
+
ActiveSupport::TimeZone['UTC'].parse(value)
|
51
|
+
end
|
39
52
|
end
|
40
53
|
end
|
41
54
|
end
|
@@ -0,0 +1,75 @@
|
|
1
|
+
module EveOnline
|
2
|
+
module ESI
|
3
|
+
class Character < Base
|
4
|
+
API_ENDPOINT = 'https://esi.tech.ccp.is/latest/characters/%s/?datasource=tranquility'.freeze
|
5
|
+
|
6
|
+
attr_reader :character_id
|
7
|
+
|
8
|
+
def initialize(character_id)
|
9
|
+
super()
|
10
|
+
@character_id = character_id
|
11
|
+
end
|
12
|
+
|
13
|
+
def as_json
|
14
|
+
{
|
15
|
+
corporation_id: corporation_id,
|
16
|
+
birthday: birthday,
|
17
|
+
name: name,
|
18
|
+
gender: gender,
|
19
|
+
race_id: race_id,
|
20
|
+
bloodline_id: bloodline_id,
|
21
|
+
description: description,
|
22
|
+
alliance_id: alliance_id,
|
23
|
+
ancestry_id: ancestry_id,
|
24
|
+
security_status: security_status
|
25
|
+
}
|
26
|
+
end
|
27
|
+
|
28
|
+
def corporation_id
|
29
|
+
response.fetch('corporation_id')
|
30
|
+
end
|
31
|
+
|
32
|
+
def birthday
|
33
|
+
parse_datetime_with_timezone(response.fetch('birthday'))
|
34
|
+
end
|
35
|
+
|
36
|
+
def name
|
37
|
+
response.fetch('name')
|
38
|
+
end
|
39
|
+
|
40
|
+
def gender
|
41
|
+
response.fetch('gender')
|
42
|
+
end
|
43
|
+
|
44
|
+
def race_id
|
45
|
+
response.fetch('race_id')
|
46
|
+
end
|
47
|
+
|
48
|
+
def bloodline_id
|
49
|
+
response.fetch('bloodline_id')
|
50
|
+
end
|
51
|
+
|
52
|
+
def description
|
53
|
+
response.fetch('description')
|
54
|
+
end
|
55
|
+
|
56
|
+
def alliance_id
|
57
|
+
response.fetch('alliance_id')
|
58
|
+
end
|
59
|
+
|
60
|
+
def ancestry_id
|
61
|
+
response.fetch('ancestry_id')
|
62
|
+
end
|
63
|
+
|
64
|
+
def security_status
|
65
|
+
response.fetch('security_status')
|
66
|
+
end
|
67
|
+
|
68
|
+
def scope; end
|
69
|
+
|
70
|
+
def url
|
71
|
+
API_ENDPOINT % character_id
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module EveOnline
|
2
|
+
module ESI
|
3
|
+
class CharacterLoyaltyPoints < Base
|
4
|
+
API_ENDPOINT = 'https://esi.tech.ccp.is/latest/characters/%s/loyalty/points/?datasource=tranquility'.freeze
|
5
|
+
|
6
|
+
attr_reader :character_id
|
7
|
+
|
8
|
+
def initialize(token, character_id)
|
9
|
+
super(token)
|
10
|
+
@character_id = character_id
|
11
|
+
end
|
12
|
+
|
13
|
+
def loyalty_points
|
14
|
+
output = []
|
15
|
+
response.each do |lp|
|
16
|
+
output << Models::LoyaltyPoint.new(lp)
|
17
|
+
end
|
18
|
+
output
|
19
|
+
end
|
20
|
+
memoize :loyalty_points
|
21
|
+
|
22
|
+
def scope
|
23
|
+
'esi-characters.read_loyalty.v1'
|
24
|
+
end
|
25
|
+
|
26
|
+
def url
|
27
|
+
API_ENDPOINT % character_id
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,61 @@
|
|
1
|
+
module EveOnline
|
2
|
+
module ESI
|
3
|
+
class CharacterPortrait < Base
|
4
|
+
API_ENDPOINT = 'https://esi.tech.ccp.is/latest/characters/%s/portrait/?datasource=tranquility'.freeze
|
5
|
+
|
6
|
+
attr_reader :character_id
|
7
|
+
|
8
|
+
def initialize(character_id)
|
9
|
+
super()
|
10
|
+
@character_id = character_id
|
11
|
+
end
|
12
|
+
|
13
|
+
# https://eveonline-third-party-documentation.readthedocs.io/en/latest/imageserver/intro.html#character-images
|
14
|
+
# Available Sizes: 32, 64, 128, 256, 512, 1024
|
15
|
+
# https://nethackwiki.com/wiki/Physical_size
|
16
|
+
# Tiny = 0; Small = 1; Medium = 2; Large = 3; Huge = 4; Gigantic = 7.
|
17
|
+
def as_json
|
18
|
+
{
|
19
|
+
small: small,
|
20
|
+
medium: medium,
|
21
|
+
large: large,
|
22
|
+
huge: huge
|
23
|
+
}
|
24
|
+
end
|
25
|
+
|
26
|
+
def tiny
|
27
|
+
# FIXME: https://github.com/ccpgames/esi-issues/issues/270
|
28
|
+
# FIXME: https://github.com/ccpgames/esi-issues/issues/131
|
29
|
+
raise NotImplementedError
|
30
|
+
end
|
31
|
+
|
32
|
+
def small
|
33
|
+
response.fetch('px64x64')
|
34
|
+
end
|
35
|
+
|
36
|
+
def medium
|
37
|
+
response.fetch('px128x128')
|
38
|
+
end
|
39
|
+
|
40
|
+
def large
|
41
|
+
response.fetch('px256x256')
|
42
|
+
end
|
43
|
+
|
44
|
+
def huge
|
45
|
+
response.fetch('px512x512')
|
46
|
+
end
|
47
|
+
|
48
|
+
def gigantic
|
49
|
+
# FIXME: https://github.com/ccpgames/esi-issues/issues/270
|
50
|
+
# FIXME: https://github.com/ccpgames/esi-issues/issues/131
|
51
|
+
raise NotImplementedError
|
52
|
+
end
|
53
|
+
|
54
|
+
def scope; end
|
55
|
+
|
56
|
+
def url
|
57
|
+
API_ENDPOINT % character_id
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module EveOnline
|
2
|
+
module ESI
|
3
|
+
class CharacterSkillQueue < Base
|
4
|
+
API_ENDPOINT = 'https://esi.tech.ccp.is/latest/characters/%s/skillqueue/?datasource=tranquility'.freeze
|
5
|
+
|
6
|
+
attr_reader :character_id
|
7
|
+
|
8
|
+
def initialize(token, character_id)
|
9
|
+
super(token)
|
10
|
+
@character_id = character_id
|
11
|
+
end
|
12
|
+
|
13
|
+
def skills
|
14
|
+
output = []
|
15
|
+
response.each do |skill|
|
16
|
+
output << EveOnline::ESI::Models::SkillQueueEntry.new(skill)
|
17
|
+
end
|
18
|
+
output
|
19
|
+
end
|
20
|
+
memoize :skills
|
21
|
+
|
22
|
+
def scope
|
23
|
+
'esi-skills.read_skillqueue.v1'
|
24
|
+
end
|
25
|
+
|
26
|
+
def url
|
27
|
+
API_ENDPOINT % character_id
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
module EveOnline
|
2
|
+
module ESI
|
3
|
+
class CharacterSkills < Base
|
4
|
+
API_ENDPOINT = 'https://esi.tech.ccp.is/latest/characters/%s/skills/?datasource=tranquility'.freeze
|
5
|
+
|
6
|
+
attr_reader :character_id
|
7
|
+
|
8
|
+
def initialize(token, character_id)
|
9
|
+
super(token)
|
10
|
+
@character_id = character_id
|
11
|
+
end
|
12
|
+
|
13
|
+
def as_json
|
14
|
+
{
|
15
|
+
total_sp: total_sp
|
16
|
+
}
|
17
|
+
end
|
18
|
+
|
19
|
+
def total_sp
|
20
|
+
response.fetch('total_sp')
|
21
|
+
end
|
22
|
+
|
23
|
+
def skills
|
24
|
+
output = []
|
25
|
+
response.fetch('skills').each do |skill|
|
26
|
+
output << EveOnline::ESI::Models::Skill.new(skill)
|
27
|
+
end
|
28
|
+
output
|
29
|
+
end
|
30
|
+
memoize :skills
|
31
|
+
|
32
|
+
def scope
|
33
|
+
'esi-skills.read_skills.v1'
|
34
|
+
end
|
35
|
+
|
36
|
+
def url
|
37
|
+
API_ENDPOINT % character_id
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
module EveOnline
|
2
|
+
module ESI
|
3
|
+
module Models
|
4
|
+
class LoyaltyPoint
|
5
|
+
attr_reader :options
|
6
|
+
|
7
|
+
def initialize(options)
|
8
|
+
@options = options
|
9
|
+
end
|
10
|
+
|
11
|
+
def as_json
|
12
|
+
{
|
13
|
+
corporation_id: corporation_id,
|
14
|
+
loyalty_points: loyalty_points
|
15
|
+
}
|
16
|
+
end
|
17
|
+
|
18
|
+
def corporation_id
|
19
|
+
options.fetch('corporation_id')
|
20
|
+
end
|
21
|
+
|
22
|
+
def loyalty_points
|
23
|
+
options.fetch('loyalty_points')
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
module EveOnline
|
2
|
+
module ESI
|
3
|
+
module Models
|
4
|
+
class Skill
|
5
|
+
attr_reader :options
|
6
|
+
|
7
|
+
def initialize(options)
|
8
|
+
@options = options
|
9
|
+
end
|
10
|
+
|
11
|
+
def as_json
|
12
|
+
{
|
13
|
+
skill_id: skill_id,
|
14
|
+
skillpoints_in_skill: skillpoints_in_skill,
|
15
|
+
current_skill_level: current_skill_level
|
16
|
+
}
|
17
|
+
end
|
18
|
+
|
19
|
+
def skill_id
|
20
|
+
options.fetch('skill_id')
|
21
|
+
end
|
22
|
+
|
23
|
+
def skillpoints_in_skill
|
24
|
+
options.fetch('skillpoints_in_skill')
|
25
|
+
end
|
26
|
+
|
27
|
+
def current_skill_level
|
28
|
+
options.fetch('current_skill_level')
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,60 @@
|
|
1
|
+
require 'active_support/time'
|
2
|
+
|
3
|
+
module EveOnline
|
4
|
+
module ESI
|
5
|
+
module Models
|
6
|
+
class SkillQueueEntry
|
7
|
+
attr_reader :options
|
8
|
+
|
9
|
+
def initialize(options)
|
10
|
+
@options = options
|
11
|
+
end
|
12
|
+
|
13
|
+
def as_json
|
14
|
+
{
|
15
|
+
skill_id: skill_id,
|
16
|
+
finished_level: finished_level,
|
17
|
+
queue_position: queue_position,
|
18
|
+
finish_date: finish_date,
|
19
|
+
start_date: start_date,
|
20
|
+
training_start_sp: training_start_sp,
|
21
|
+
level_end_sp: level_end_sp,
|
22
|
+
level_start_sp: level_start_sp
|
23
|
+
}
|
24
|
+
end
|
25
|
+
|
26
|
+
def skill_id
|
27
|
+
options.fetch('skill_id')
|
28
|
+
end
|
29
|
+
|
30
|
+
def finished_level
|
31
|
+
options.fetch('finished_level')
|
32
|
+
end
|
33
|
+
|
34
|
+
def queue_position
|
35
|
+
options.fetch('queue_position')
|
36
|
+
end
|
37
|
+
|
38
|
+
def finish_date
|
39
|
+
ActiveSupport::TimeZone['UTC'].parse(options.fetch('finish_date'))
|
40
|
+
end
|
41
|
+
|
42
|
+
def start_date
|
43
|
+
ActiveSupport::TimeZone['UTC'].parse(options.fetch('start_date'))
|
44
|
+
end
|
45
|
+
|
46
|
+
def training_start_sp
|
47
|
+
options.fetch('training_start_sp')
|
48
|
+
end
|
49
|
+
|
50
|
+
def level_end_sp
|
51
|
+
options.fetch('level_end_sp')
|
52
|
+
end
|
53
|
+
|
54
|
+
def level_start_sp
|
55
|
+
options.fetch('level_start_sp')
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
module EveOnline
|
2
|
+
module SDE
|
3
|
+
class AgtAgentTypes < Base
|
4
|
+
def agt_agent_types
|
5
|
+
output = []
|
6
|
+
data.each do |agt_agent_type|
|
7
|
+
output << EveOnline::SDE::Models::AgtAgentType.new(agt_agent_type)
|
8
|
+
end
|
9
|
+
output
|
10
|
+
end
|
11
|
+
memoize :agt_agent_types
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|