eve-4 2.0.1 → 2.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.DS_Store +0 -0
- data/.gitignore +0 -0
- data/.idea/.name +1 -0
- data/.idea/.rakeTasks +7 -0
- data/.idea/dictionaries/tylercollins.xml +3 -0
- data/.idea/encodings.xml +5 -0
- data/.idea/eve-updated.iml +58 -0
- data/.idea/misc.xml +5 -0
- data/.idea/modules.xml +9 -0
- data/.idea/scopes/scope_settings.xml +5 -0
- data/.idea/vcs.xml +7 -0
- data/.idea/workspace.xml +554 -0
- data/Gemfile +2 -0
- data/Gemfile.lock +108 -0
- data/History.txt +7 -0
- data/Rakefile +37 -0
- data/eve.gemspec +36 -0
- data/lib/eve.rb +26 -0
- data/lib/eve/api.rb +249 -0
- data/lib/eve/api/connectivity.rb +39 -0
- data/lib/eve/api/request.rb +80 -0
- data/lib/eve/api/response.rb +34 -0
- data/lib/eve/api/response/result.rb +87 -0
- data/lib/eve/api/response/row.rb +42 -0
- data/lib/eve/api/response/rowset.rb +18 -0
- data/lib/eve/api/services.rb +20 -0
- data/lib/eve/api/services/account.rb +12 -0
- data/lib/eve/api/services/character.rb +96 -0
- data/lib/eve/api/services/corporation.rb +150 -0
- data/lib/eve/api/services/eve.rb +76 -0
- data/lib/eve/api/services/map.rb +45 -0
- data/lib/eve/api/services/misc.rb +24 -0
- data/lib/eve/api/services/server.rb +20 -0
- data/lib/eve/dependencies.rb +48 -0
- data/lib/eve/deprecation.rb +3 -0
- data/lib/eve/errors.rb +129 -0
- data/lib/eve/errors/authentication_errors.rb +33 -0
- data/lib/eve/errors/internal_errors.rb +64 -0
- data/lib/eve/errors/miscellaneous_errors.rb +19 -0
- data/lib/eve/errors/user_input_errors.rb +62 -0
- data/lib/eve/javascript_helper.rb +196 -0
- data/lib/eve/trust.rb +87 -0
- data/lib/eve/trust/controller_helpers.rb +86 -0
- data/lib/eve/trust/igb_interface.rb +92 -0
- data/lib/eve/trust/mime_types.rb +4 -0
- data/lib/eve/version.rb +8 -0
- data/log/development.log +30 -0
- data/spec/controllers/controller_helpers_spec.rb +91 -0
- data/spec/helpers/javascript_helper_spec.rb +80 -0
- data/spec/helpers/view_helper_spec.rb +7 -0
- data/spec/lib/eve/api/calls/account/characters_spec.rb +22 -0
- data/spec/lib/eve/api/calls/character/account_balance_spec.rb +21 -0
- data/spec/lib/eve/api/calls/character/asset_list_spec.rb +23 -0
- data/spec/lib/eve/api/calls/character/character_sheet_spec.rb +51 -0
- data/spec/lib/eve/api/calls/character/fac_war_stats_spec.rb +31 -0
- data/spec/lib/eve/api/calls/character/industry_jobs_spec.rb +27 -0
- data/spec/lib/eve/api/calls/character/kill_log_spec.rb +27 -0
- data/spec/lib/eve/api/calls/character/mail_messages_spec.rb +21 -0
- data/spec/lib/eve/api/calls/character/mailing_lists_spec.rb +21 -0
- data/spec/lib/eve/api/calls/character/market_orders_spec.rb +21 -0
- data/spec/lib/eve/api/calls/character/medals_spec.rb +24 -0
- data/spec/lib/eve/api/calls/character/research_spec.rb +21 -0
- data/spec/lib/eve/api/calls/character/skill_in_training_spec.rb +44 -0
- data/spec/lib/eve/api/calls/character/skill_queue_spec.rb +21 -0
- data/spec/lib/eve/api/calls/character/standings_spec.rb +26 -0
- data/spec/lib/eve/api/calls/character/wallet_journal_spec.rb +21 -0
- data/spec/lib/eve/api/calls/character/wallet_transactions_spec.rb +21 -0
- data/spec/lib/eve/api/calls/character_portrait_spec.rb +17 -0
- data/spec/lib/eve/api/calls/corporation/account_balances_spec.rb +21 -0
- data/spec/lib/eve/api/calls/corporation/asset_list_spec.rb +25 -0
- data/spec/lib/eve/api/calls/corporation/container_log_spec.rb +23 -0
- data/spec/lib/eve/api/calls/corporation/corporation_sheet_spec.rb +36 -0
- data/spec/lib/eve/api/calls/corporation/fac_war_stats_spec.rb +23 -0
- data/spec/lib/eve/api/calls/corporation/industry_jobs_spec.rb +30 -0
- data/spec/lib/eve/api/calls/corporation/kill_log_spec.rb +27 -0
- data/spec/lib/eve/api/calls/corporation/market_orders_spec.rb +22 -0
- data/spec/lib/eve/api/calls/corporation/medals_spec.rb +21 -0
- data/spec/lib/eve/api/calls/corporation/member_medals_spec.rb +21 -0
- data/spec/lib/eve/api/calls/corporation/member_security_log_spec.rb +24 -0
- data/spec/lib/eve/api/calls/corporation/member_security_spec.rb +25 -0
- data/spec/lib/eve/api/calls/corporation/member_tracking_spec.rb +22 -0
- data/spec/lib/eve/api/calls/corporation/shareholders_spec.rb +23 -0
- data/spec/lib/eve/api/calls/corporation/standings_spec.rb +30 -0
- data/spec/lib/eve/api/calls/corporation/starbase_detail_spec.rb +32 -0
- data/spec/lib/eve/api/calls/corporation/starbase_list_spec.rb +22 -0
- data/spec/lib/eve/api/calls/corporation/titles_spec.rb +26 -0
- data/spec/lib/eve/api/calls/corporation/wallet_journal_spec.rb +22 -0
- data/spec/lib/eve/api/calls/corporation/wallet_transactions_spec.rb +22 -0
- data/spec/lib/eve/api/calls/empty_call_spec.rb +29 -0
- data/spec/lib/eve/api/calls/eve/alliance_list_spec.rb +26 -0
- data/spec/lib/eve/api/calls/eve/certificate_tree_spec.rb +18 -0
- data/spec/lib/eve/api/calls/eve/character_id_spec.rb +27 -0
- data/spec/lib/eve/api/calls/eve/conquerable_station_list_spec.rb +11 -0
- data/spec/lib/eve/api/calls/eve/error_list_spec.rb +21 -0
- data/spec/lib/eve/api/calls/eve/fac_war_stats_spec.rb +25 -0
- data/spec/lib/eve/api/calls/eve/fac_war_top_stats_spec.rb +54 -0
- data/spec/lib/eve/api/calls/eve/ref_types_spec.rb +11 -0
- data/spec/lib/eve/api/calls/eve/skill_tree_spec.rb +17 -0
- data/spec/lib/eve/api/calls/map/fac_war_systems_spec.rb +11 -0
- data/spec/lib/eve/api/calls/map/jumps_spec.rb +11 -0
- data/spec/lib/eve/api/calls/map/kills_spec.rb +11 -0
- data/spec/lib/eve/api/calls/map/sovereignty_spec.rb +11 -0
- data/spec/lib/eve/api/calls/server_status_spec.rb +28 -0
- data/spec/lib/eve/api/request_spec.rb +18 -0
- data/spec/lib/eve/api/response/error_spec.rb +13 -0
- data/spec/lib/eve/api/response_spec.rb +79 -0
- data/spec/lib/eve/api_spec.rb +13 -0
- data/spec/lib/eve/core_extensions/hash_spec.rb +23 -0
- data/spec/lib/eve/core_extensions/string_spec.rb +8 -0
- data/spec/lib/eve/trust/igb_interface_spec.rb +112 -0
- data/spec/log/development.log +0 -0
- data/spec/rcov.opts +2 -0
- data/spec/readme_spec.rb +36 -0
- data/spec/sample_api_key.yml +20 -0
- data/spec/spec.opts +4 -0
- data/spec/spec_helper.rb +63 -0
- data/spec/support/behaves_like_rowset.rb +50 -0
- data/spec/support/controllers/trust_controller.rb +24 -0
- data/spec/support/jpg/mock_portrait.jpg +0 -0
- data/spec/support/mock_api_helpers.rb +46 -0
- data/spec/support/views/trust/html_and_igb.html.erb +1 -0
- data/spec/support/views/trust/html_and_igb.igb.erb +1 -0
- data/spec/support/views/trust/html_only.html.erb +1 -0
- data/spec/support/views/trust/igb_only.igb.erb +1 -0
- data/spec/support/xml/account/characters.xml +15 -0
- data/spec/support/xml/character/account_balance.xml +10 -0
- data/spec/support/xml/character/asset_list.xml +50 -0
- data/spec/support/xml/character/character_sheet.xml +65 -0
- data/spec/support/xml/character/fac_war_stats.xml +20 -0
- data/spec/support/xml/character/industry_jobs.xml +70 -0
- data/spec/support/xml/character/kill_log.xml +51 -0
- data/spec/support/xml/character/mail_messages.xml +12 -0
- data/spec/support/xml/character/mailing_lists.xml +12 -0
- data/spec/support/xml/character/market_orders.xml +11 -0
- data/spec/support/xml/character/medals.xml +13 -0
- data/spec/support/xml/character/research.xml +13 -0
- data/spec/support/xml/character/skill_in_training.xml +14 -0
- data/spec/support/xml/character/skill_not_in_training.xml +7 -0
- data/spec/support/xml/character/skill_queue.xml +11 -0
- data/spec/support/xml/character/standings.xml +32 -0
- data/spec/support/xml/character/wallet_journal.xml +39 -0
- data/spec/support/xml/character/wallet_transactions.xml +44 -0
- data/spec/support/xml/corporation/account_balance.xml +15 -0
- data/spec/support/xml/corporation/asset_list.xml +50 -0
- data/spec/support/xml/corporation/container_log.xml +32 -0
- data/spec/support/xml/corporation/fac_war_stats.xml +19 -0
- data/spec/support/xml/corporation/industry_jobs.xml +70 -0
- data/spec/support/xml/corporation/kill_log.xml +51 -0
- data/spec/support/xml/corporation/market_orders.xml +37 -0
- data/spec/support/xml/corporation/medals.xml +8 -0
- data/spec/support/xml/corporation/member_corporation_sheet.xml +51 -0
- data/spec/support/xml/corporation/member_medals.xml +10 -0
- data/spec/support/xml/corporation/member_security.xml +21 -0
- data/spec/support/xml/corporation/member_security_log.xml +55 -0
- data/spec/support/xml/corporation/member_tracking.xml +18 -0
- data/spec/support/xml/corporation/non_member_corporation_sheet.xml +30 -0
- data/spec/support/xml/corporation/shareholders.xml +11 -0
- data/spec/support/xml/corporation/standings.xml +33 -0
- data/spec/support/xml/corporation/starbase_detail.xml +33 -0
- data/spec/support/xml/corporation/starbase_list.xml +17 -0
- data/spec/support/xml/corporation/titles.xml +34 -0
- data/spec/support/xml/corporation/wallet_journal.xml +40 -0
- data/spec/support/xml/corporation/wallet_transactions.xml +12 -0
- data/spec/support/xml/errors/106.xml +5 -0
- data/spec/support/xml/errors/516.xml +5 -0
- data/spec/support/xml/eve/alliance_list.xml +22 -0
- data/spec/support/xml/eve/certificate_tree.xml +49 -0
- data/spec/support/xml/eve/character_id.xml +15 -0
- data/spec/support/xml/eve/conquerable_station_list.xml +24 -0
- data/spec/support/xml/eve/error_list.xml +78 -0
- data/spec/support/xml/eve/fac_war_stats.xml +31 -0
- data/spec/support/xml/eve/fac_war_top_stats.xml +238 -0
- data/spec/support/xml/eve/ref_types.xml +105 -0
- data/spec/support/xml/eve/skill_tree.xml +52 -0
- data/spec/support/xml/map/fac_war_systems.xml +180 -0
- data/spec/support/xml/map/jumps.xml +166 -0
- data/spec/support/xml/map/kills.xml +191 -0
- data/spec/support/xml/map/sovereignty.xml +20 -0
- data/spec/support/xml/rowset_with_mismatched_attributes.xml +6 -0
- data/spec/support/xml/server/server_status.xml +9 -0
- metadata +310 -2
@@ -0,0 +1,39 @@
|
|
1
|
+
module Eve
|
2
|
+
class API
|
3
|
+
module Connectivity
|
4
|
+
MAX_JOURNAL_ENTRIES = 1000
|
5
|
+
|
6
|
+
def walk(walk_id, walk_association, options = {}, &block)
|
7
|
+
raise ArgumentError, "Requires :walk_id" if walk_id.blank?
|
8
|
+
raise ArgumentError, "Requires :walk_association" if walk_association.blank?
|
9
|
+
options[walk_id] ||= 0
|
10
|
+
return_value = yield options
|
11
|
+
array = return_value.send(walk_association)
|
12
|
+
if array.size >= MAX_JOURNAL_ENTRIES
|
13
|
+
begin
|
14
|
+
min_id = nil
|
15
|
+
primary_key = array.primary_key
|
16
|
+
array.each { |txn| min_id = txn.send(primary_key) if min_id.nil? || min_id > txn.send(primary_key) }
|
17
|
+
array.concat walk(walk_id, options.merge(walk_id => min_id), &block).send(walk_association)
|
18
|
+
rescue Eve::Errors::UserInputErrors::InvalidBeforeTransID, Eve::Errors::UserInputErrors::InvalidBeforeRefID,
|
19
|
+
Eve::Errors::UserInputErrors::InvalidBeforeKillID
|
20
|
+
# walking is internal, so we should catch the error internally too.
|
21
|
+
end
|
22
|
+
end
|
23
|
+
return_value
|
24
|
+
end
|
25
|
+
|
26
|
+
def request(namespace, service_name, options = {})
|
27
|
+
walk_id = options.delete(:walk_id) # we don't want these being sent to the server; it messes with the cache.
|
28
|
+
walk_association = options.delete(:walk_association)
|
29
|
+
if options.delete(:walk)
|
30
|
+
walk(walk_id.to_s, walk_association, options) do |walk_options|
|
31
|
+
Eve::API::Request.new(namespace, service_name, self.options.merge(walk_options)).dispatch
|
32
|
+
end
|
33
|
+
else
|
34
|
+
Eve::API::Request.new(namespace, service_name, self.options.merge(options)).dispatch
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,80 @@
|
|
1
|
+
module Eve
|
2
|
+
class API
|
3
|
+
class Request
|
4
|
+
attr_reader :response, :uri, :options, :namespace, :service
|
5
|
+
|
6
|
+
def initialize(namespace, service, options = {})
|
7
|
+
options.reverse_merge! default_options
|
8
|
+
namespace = namespace.to_s if namespace.is_a?(Symbol)
|
9
|
+
service = service.to_s if service.is_a?(Symbol)
|
10
|
+
|
11
|
+
unless [:xml,:string].include? options[:response_type]
|
12
|
+
raise ArgumentError, "Expected :response_type to be :xml or :string"
|
13
|
+
end
|
14
|
+
|
15
|
+
@options = options.dup
|
16
|
+
@service = options[:camelize] ? service.camelize : service
|
17
|
+
@namespace = namespace
|
18
|
+
@response_type = options[:response_type]
|
19
|
+
|
20
|
+
@uri = File.join(@options.delete(:base_uri), @namespace, "#{@service}.#{options[:extension]}")
|
21
|
+
end
|
22
|
+
|
23
|
+
def dispatch
|
24
|
+
r = cached_response || cache_response {
|
25
|
+
url = URI.parse uri
|
26
|
+
request = Net::HTTP::Post.new url.path
|
27
|
+
request.set_form_data post_options
|
28
|
+
http = Net::HTTP.new url.host, url.port
|
29
|
+
http.use_ssl = true
|
30
|
+
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
31
|
+
http.start { |http| http.request(request) }.body
|
32
|
+
}
|
33
|
+
if r.respond_to?(:error) && r.error
|
34
|
+
Eve::Errors.raise(:code => r.error.code, :message => r.error)
|
35
|
+
end
|
36
|
+
r
|
37
|
+
end
|
38
|
+
|
39
|
+
def cached_response
|
40
|
+
if xml = (options[:cache] ? Eve.cache.read(cache_key) : nil)
|
41
|
+
potential_response = response_for(xml)
|
42
|
+
if !potential_response.respond_to?(:cached_until) || potential_response.cached_until >= Time.now
|
43
|
+
return potential_response
|
44
|
+
end
|
45
|
+
end
|
46
|
+
nil
|
47
|
+
end
|
48
|
+
|
49
|
+
def response_for(body)
|
50
|
+
@response_type == :xml ? Eve::API::Response.new(body, options) : body
|
51
|
+
end
|
52
|
+
|
53
|
+
def cache_response
|
54
|
+
xml = yield
|
55
|
+
Eve.cache.write(cache_key, xml) if options[:cache]
|
56
|
+
response_for xml
|
57
|
+
end
|
58
|
+
|
59
|
+
def cache_key
|
60
|
+
@cache_key ||= ActiveSupport::Cache.expand_cache_key(post_options, @uri)
|
61
|
+
end
|
62
|
+
|
63
|
+
private
|
64
|
+
def post_options
|
65
|
+
options.without(default_options.keys).camelize_keys
|
66
|
+
end
|
67
|
+
|
68
|
+
def default_options
|
69
|
+
{
|
70
|
+
:base_uri => "https://api.eve-online.com",
|
71
|
+
:extension => "xml.aspx",
|
72
|
+
:camelize => true,
|
73
|
+
:response_type => :xml,
|
74
|
+
:column_mapping => nil,
|
75
|
+
:cache => true
|
76
|
+
}
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
module Eve
|
2
|
+
class API
|
3
|
+
class Response
|
4
|
+
autoload :Result, 'eve/api/response/result'
|
5
|
+
autoload :Row, 'eve/api/response/row'
|
6
|
+
autoload :Rowset, 'eve/api/response/rowset'
|
7
|
+
|
8
|
+
include Eve::API::Response::Result
|
9
|
+
attr_reader :rowsets
|
10
|
+
attr_reader :api_version, :content
|
11
|
+
alias_method :apiVersion, :api_version
|
12
|
+
|
13
|
+
def initialize(xml, options = {})
|
14
|
+
@options = options
|
15
|
+
@rowsets = []
|
16
|
+
|
17
|
+
if xml.kind_of? String
|
18
|
+
@xml = Nokogiri::XML(xml).root
|
19
|
+
else
|
20
|
+
@xml = xml
|
21
|
+
end
|
22
|
+
|
23
|
+
unless options[:process_xml] == false
|
24
|
+
@api_version = @xml.attributes['version'].value
|
25
|
+
parse_children @xml
|
26
|
+
result = @xml.xpath("//result")[0]
|
27
|
+
parse_children result if result
|
28
|
+
all_fields << 'api_version'
|
29
|
+
all_fields.delete 'result'
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,87 @@
|
|
1
|
+
module Eve::API::Response::Result
|
2
|
+
def all_fields
|
3
|
+
@all_fields ||= []
|
4
|
+
end
|
5
|
+
|
6
|
+
def delegate_to_rowset(field_name, rowset)
|
7
|
+
all_fields << field_name.underscore
|
8
|
+
klass = (class << self; self; end)
|
9
|
+
rowset = Eve::API::Response::Rowset.new rowset
|
10
|
+
klass.module_eval do
|
11
|
+
define_method field_name do
|
12
|
+
rowset
|
13
|
+
end
|
14
|
+
|
15
|
+
if field_name.underscore != field_name
|
16
|
+
alias_method field_name.underscore, field_name
|
17
|
+
end
|
18
|
+
end
|
19
|
+
rowset
|
20
|
+
end
|
21
|
+
|
22
|
+
def literal_value_for(str)
|
23
|
+
YAML::load str
|
24
|
+
rescue (defined?(Psych::SyntaxError) ? Psych::SyntaxError : StandardError)
|
25
|
+
str
|
26
|
+
end
|
27
|
+
|
28
|
+
def delegate_to_child(field_name, node)
|
29
|
+
all_fields << field_name.underscore
|
30
|
+
klass = (class << self; self; end)
|
31
|
+
if !node.children.empty? && node.children.reject { |c| c.text? }.empty?
|
32
|
+
# this seems less correct but specs pass this way
|
33
|
+
if node.name != 'error'
|
34
|
+
child = literal_value_for node.content.strip
|
35
|
+
else
|
36
|
+
child = Eve::API::Response::Row.new node
|
37
|
+
end
|
38
|
+
|
39
|
+
# if node.attributes.empty?
|
40
|
+
# # node contains only text
|
41
|
+
# child = literal_value_for node.content.strip
|
42
|
+
# else
|
43
|
+
# child = Eve::API::Response::Row.new node
|
44
|
+
# end
|
45
|
+
else
|
46
|
+
child = Eve::API::Response::Row.new node
|
47
|
+
end
|
48
|
+
klass.module_eval do
|
49
|
+
define_method field_name do
|
50
|
+
child
|
51
|
+
end
|
52
|
+
|
53
|
+
if field_name.underscore != field_name
|
54
|
+
alias_method field_name.underscore, field_name
|
55
|
+
end
|
56
|
+
end
|
57
|
+
child
|
58
|
+
end
|
59
|
+
|
60
|
+
def parse_children(node)
|
61
|
+
node.children.each do |child|
|
62
|
+
next if child.text?
|
63
|
+
case child.name
|
64
|
+
when 'rowset'
|
65
|
+
rowset = delegate_to_rowset child.attributes['name'].value, child
|
66
|
+
rowsets << rowset
|
67
|
+
else
|
68
|
+
delegate_to_child child.name, child
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
def [](name)
|
74
|
+
send name
|
75
|
+
end
|
76
|
+
|
77
|
+
def to_hash
|
78
|
+
all_fields.inject({}) do |hash, field_name|
|
79
|
+
hash[field_name] = self[field_name]
|
80
|
+
hash
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
def to_yaml(*args)
|
85
|
+
to_hash.to_yaml(*args)
|
86
|
+
end
|
87
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
class Eve::API::Response::Row
|
2
|
+
include Eve::API::Response::Result
|
3
|
+
attr_reader :fields
|
4
|
+
attr_reader :rowsets
|
5
|
+
|
6
|
+
def initialize(row, columns = row.attribute_nodes.collect { |c| c.name })
|
7
|
+
@rowsets = []
|
8
|
+
|
9
|
+
# @fields = row.attributes.keys.collect { |f| f.underscore }
|
10
|
+
@fields = columns.collect { |c| c.underscore }
|
11
|
+
|
12
|
+
# pre-emptively define all known columns to return nil
|
13
|
+
klass = (class << self; self; end)
|
14
|
+
columns.each { |c| klass.send(:define_method, c.underscore) { nil } }
|
15
|
+
|
16
|
+
row.attribute_nodes.each_with_index do |attr, i|
|
17
|
+
name = columns[i]
|
18
|
+
if name.nil?
|
19
|
+
name = attr.name
|
20
|
+
@fields << name.underscore
|
21
|
+
end
|
22
|
+
value = literal_value_for attr.value
|
23
|
+
|
24
|
+
klass.module_eval do
|
25
|
+
define_method name.underscore do
|
26
|
+
value
|
27
|
+
end
|
28
|
+
|
29
|
+
alias_method name, name.underscore
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
parse_children row
|
34
|
+
end
|
35
|
+
|
36
|
+
def inspect
|
37
|
+
"<Row " +
|
38
|
+
fields.map do |field_name|
|
39
|
+
"#{field_name}: #{send field_name}"
|
40
|
+
end.join(', ') + ">"
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
class Eve::API::Response::Rowset < Array
|
2
|
+
attr_reader :columns, :key, :name
|
3
|
+
|
4
|
+
def initialize(rowset)
|
5
|
+
super()
|
6
|
+
|
7
|
+
@columns = rowset.attributes['columns'].value.split(/\s*,\s*/)
|
8
|
+
@name = rowset.attributes['name'].value
|
9
|
+
|
10
|
+
if rowset.attributes.key?('key')
|
11
|
+
@key = rowset.attributes['key'].value
|
12
|
+
end
|
13
|
+
|
14
|
+
rowset.children.each do |child|
|
15
|
+
self << Eve::API::Response::Row.new(child, @columns) unless child.text?
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'eve/api/services/map'
|
2
|
+
require 'eve/api/services/misc'
|
3
|
+
require 'eve/api/services/server'
|
4
|
+
require 'eve/api/services/eve'
|
5
|
+
require 'eve/api/services/account'
|
6
|
+
require 'eve/api/services/character'
|
7
|
+
require 'eve/api/services/corporation'
|
8
|
+
|
9
|
+
module Eve
|
10
|
+
class API
|
11
|
+
module Services
|
12
|
+
def self.included(base)
|
13
|
+
base.instance_eval do
|
14
|
+
include ::Eve::API::Services::Misc
|
15
|
+
include ::Eve::API::Services::Server
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,96 @@
|
|
1
|
+
module Eve
|
2
|
+
class API
|
3
|
+
module Services
|
4
|
+
module Character
|
5
|
+
#limited API key
|
6
|
+
def character_sheet; request(:char, :character_sheet); end
|
7
|
+
#limited API key
|
8
|
+
def fac_war_stats; request(:char, :fac_war_stats); end
|
9
|
+
#limited API key
|
10
|
+
def medals; request(:char, :medals); end
|
11
|
+
#limited API key
|
12
|
+
def skill_in_training; request(:char, :skill_in_training); end
|
13
|
+
#limited API key
|
14
|
+
def skill_queue; request(:char, :skill_queue); end
|
15
|
+
#limited API key
|
16
|
+
def standings; request(:char, :standings); end
|
17
|
+
|
18
|
+
# full API key
|
19
|
+
def account_balance; request(:char, :account_balance); end
|
20
|
+
# full API key
|
21
|
+
def asset_list(version = nil)
|
22
|
+
request(:char, :asset_list, {:version => version}.optionalize)
|
23
|
+
end
|
24
|
+
# full API key
|
25
|
+
def industry_jobs; request(:char, :industry_jobs); end
|
26
|
+
|
27
|
+
# This API call only returns 1000 entries. Often, you will need to gather all entries, and not just the
|
28
|
+
# most recent 1000. If this is true for your application, simply pass the :walk option and this EVE library
|
29
|
+
# will automatically "walk" backward in time until the server reports that there are no more entries available.
|
30
|
+
#
|
31
|
+
# Walking is disabled by default, so you need to pass the :walk => true option if you wish to enable this.
|
32
|
+
#
|
33
|
+
# full API key
|
34
|
+
def kill_log(options = {})
|
35
|
+
options.reverse_merge!({:walk => false, :walk_id => 'before_kill_id', :walk_association => 'kills' })
|
36
|
+
validate_options(options, :walk, :walk_id, :walk_association)
|
37
|
+
request(:char, :kill_log, options)
|
38
|
+
end
|
39
|
+
# full API key
|
40
|
+
def mailing_lists; request(:char, :mailing_lists); end
|
41
|
+
# full API key
|
42
|
+
def mail_messages; request(:char, :mail_messages); end
|
43
|
+
# full API key
|
44
|
+
def market_orders; request(:char, :market_orders); end
|
45
|
+
# full API key
|
46
|
+
def notifications; request(:char, :notifications); end
|
47
|
+
# full API key
|
48
|
+
def research; request(:char, :research); end
|
49
|
+
|
50
|
+
# This API call only returns 1000 entries. Often, you will need to gather all entries, and not just the
|
51
|
+
# most recent 1000. If this is true for your application, simply pass the :walk option and this EVE library
|
52
|
+
# will automatically "walk" backward in time until the server reports that there are no more entries available.
|
53
|
+
#
|
54
|
+
# Walking is disabled by default, so you need to pass the :walk => true option if you wish to enable this.
|
55
|
+
#
|
56
|
+
# full API key
|
57
|
+
def wallet_journal(account_key = 1000, options = { })
|
58
|
+
if account_key.kind_of?(Hash)
|
59
|
+
options = account_key
|
60
|
+
account_key = 1000
|
61
|
+
end
|
62
|
+
options.reverse_merge!({:walk => false, :walk_id => 'before_ref_id', :walk_association => 'entries' })
|
63
|
+
validate_options(options, :walk, :walk_id, :walk_association)
|
64
|
+
request(:char, :wallet_journal, options.merge(:account_key => account_key))
|
65
|
+
end
|
66
|
+
|
67
|
+
# This API call only returns 1000 entries. Often, you will need to gather all entries, and not just the
|
68
|
+
# most recent 1000. If this is true for your application, simply pass the :walk option and this EVE library
|
69
|
+
# will automatically "walk" backward in time until the server reports that there are no more entries available.
|
70
|
+
#
|
71
|
+
# Walking is disabled by default, so you need to pass the :walk => true option if you wish to enable this.
|
72
|
+
#
|
73
|
+
# full API key
|
74
|
+
def wallet_transactions(options = {})
|
75
|
+
options.reverse_merge!({:walk => false, :walk_id => 'before_trans_id', :walk_association => 'transactions' })
|
76
|
+
validate_options(options, :walk, :walk_id, :walk_association)
|
77
|
+
request(:char, :wallet_transactions, options)
|
78
|
+
end
|
79
|
+
|
80
|
+
alias journal_entries wallet_journal
|
81
|
+
|
82
|
+
def self.included(base)
|
83
|
+
base.instance_eval do
|
84
|
+
validate_credentials :limited, :character_id,
|
85
|
+
:for => %w(character_sheet fac_war_stats medals skill_in_training skill_queue standings
|
86
|
+
)
|
87
|
+
validate_credentials :full, :character_id,
|
88
|
+
:for => %w(account_balance asset_list industry_jobs kill_log mailing_lists
|
89
|
+
mail_messages market_orders notifications research wallet_journal
|
90
|
+
wallet_transactions journal_entries)
|
91
|
+
end
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
@@ -0,0 +1,150 @@
|
|
1
|
+
module Eve
|
2
|
+
class API
|
3
|
+
module Services
|
4
|
+
module Corporation
|
5
|
+
# limited or no API key
|
6
|
+
def corporation_sheet(corporation_id = nil)
|
7
|
+
request(:corp, :corporation_sheet, {:corporation_id => corporation_id}.optionalize)
|
8
|
+
end
|
9
|
+
|
10
|
+
# limited API key
|
11
|
+
def fac_war_stats
|
12
|
+
validate_credentials :limited, :character_id
|
13
|
+
request(:corp, :fac_war_stats)
|
14
|
+
end
|
15
|
+
|
16
|
+
# limited API key
|
17
|
+
def medals
|
18
|
+
validate_credentials :limited, :character_id
|
19
|
+
request(:corp, :medals)
|
20
|
+
end
|
21
|
+
|
22
|
+
# limited API key
|
23
|
+
def member_medals
|
24
|
+
validate_credentials :limited, :character_id
|
25
|
+
request(:corp, :member_medals)
|
26
|
+
end
|
27
|
+
|
28
|
+
# full API key
|
29
|
+
def account_balance
|
30
|
+
validate_credentials :full, :character_id
|
31
|
+
request(:corp, :account_balance)
|
32
|
+
end
|
33
|
+
|
34
|
+
# full API key
|
35
|
+
def asset_list
|
36
|
+
validate_credentials :full, :character_id
|
37
|
+
request(:corp, :asset_list)
|
38
|
+
end
|
39
|
+
|
40
|
+
# full API key
|
41
|
+
def container_log
|
42
|
+
validate_credentials :full, :character_id
|
43
|
+
request(:corp, :container_log)
|
44
|
+
end
|
45
|
+
|
46
|
+
# full API key
|
47
|
+
def industry_jobs
|
48
|
+
validate_credentials :full, :character_id
|
49
|
+
request(:corp, :industry_jobs)
|
50
|
+
end
|
51
|
+
|
52
|
+
# full API key
|
53
|
+
def market_orders
|
54
|
+
validate_credentials :full, :character_id
|
55
|
+
request(:corp, :market_orders)
|
56
|
+
end
|
57
|
+
|
58
|
+
# full API key
|
59
|
+
def member_security
|
60
|
+
validate_credentials :full, :character_id
|
61
|
+
request(:corp, :member_security)
|
62
|
+
end
|
63
|
+
|
64
|
+
# full API key
|
65
|
+
def member_security_log
|
66
|
+
validate_credentials :full, :character_id
|
67
|
+
request(:corp, :member_security_log)
|
68
|
+
end
|
69
|
+
|
70
|
+
# full API key
|
71
|
+
def member_tracking
|
72
|
+
validate_credentials :full, :character_id
|
73
|
+
request(:corp, :member_tracking)
|
74
|
+
end
|
75
|
+
|
76
|
+
# full API key
|
77
|
+
def shareholders
|
78
|
+
validate_credentials :full, :character_id
|
79
|
+
request(:corp, :shareholders)
|
80
|
+
end
|
81
|
+
|
82
|
+
# full API key
|
83
|
+
def standings
|
84
|
+
validate_credentials :full, :character_id
|
85
|
+
request(:corp, :standings)
|
86
|
+
end
|
87
|
+
|
88
|
+
# full API key
|
89
|
+
def titles
|
90
|
+
validate_credentials :full, :character_id
|
91
|
+
request(:corp, :titles)
|
92
|
+
end
|
93
|
+
|
94
|
+
def starbase_detail(item_id, version = 2)
|
95
|
+
validate_credentials :full, :character_id
|
96
|
+
request(:corp, :starbase_detail, {:item_id => item_id, :version => version})
|
97
|
+
end
|
98
|
+
|
99
|
+
def starbase_list
|
100
|
+
validate_credentials :full, :character_id
|
101
|
+
request(:corp, :starbase_list, :version => 2)
|
102
|
+
end
|
103
|
+
|
104
|
+
# This API call only returns 1000 entries. Often, you will need to gather all entries, and not just the
|
105
|
+
# most recent 1000. If this is true for your application, simply pass the :walk option and this EVE library
|
106
|
+
# will automatically "walk" backward in time until the server reports that there are no more entries available.
|
107
|
+
#
|
108
|
+
# Walking is disabled by default, so you need to pass the :walk => true option if you wish to enable this.
|
109
|
+
def kill_log(options = {})
|
110
|
+
validate_credentials :full, :character_id
|
111
|
+
options.reverse_merge!({:walk => false, :walk_id => 'before_kill_id', :walk_association => 'kills' })
|
112
|
+
validate_options(options, :walk, :walk_id, :walk_association)
|
113
|
+
request(:corp, :kill_log, options)
|
114
|
+
end
|
115
|
+
|
116
|
+
# This API call only returns 1000 entries. Often, you will need to gather all entries, and not just the
|
117
|
+
# most recent 1000. If this is true for your application, simply pass the :walk option and this EVE library
|
118
|
+
# will automatically "walk" backward in time until the server reports that there are no more entries available.
|
119
|
+
#
|
120
|
+
# Walking is disabled by default, so you need to pass the :walk => true option if you wish to enable this.
|
121
|
+
def wallet_journal(account_key = 1000, options = {})
|
122
|
+
validate_credentials :full, :character_id
|
123
|
+
if account_key.kind_of?(Hash)
|
124
|
+
options.merge! account_key
|
125
|
+
account_key = 1000
|
126
|
+
end
|
127
|
+
options.reverse_merge!({:walk => false, :walk_id => 'before_ref_id', :walk_association => 'entries' })
|
128
|
+
validate_options(options, :walk, :walk_id, :walk_association)
|
129
|
+
request(:corp, :wallet_journal, options.merge(:account_key => account_key))
|
130
|
+
end
|
131
|
+
|
132
|
+
# This API call only returns 1000 entries. Often, you will need to gather all entries, and not just the
|
133
|
+
# most recent 1000. If this is true for your application, simply pass the :walk option and this EVE library
|
134
|
+
# will automatically "walk" backward in time until the server reports that there are no more entries available.
|
135
|
+
#
|
136
|
+
# Walking is disabled by default, so you need to pass the :walk => true option if you wish to enable this.
|
137
|
+
def wallet_transactions(account_key = 1000, options = {})
|
138
|
+
validate_credentials :full, :character_id
|
139
|
+
if account_key.kind_of?(Hash)
|
140
|
+
options.merge! account_key
|
141
|
+
account_key = 1000
|
142
|
+
end
|
143
|
+
options.reverse_merge!({:walk => false, :walk_id => 'before_trans_id', :walk_association => 'transactions' })
|
144
|
+
validate_options(options, :walk, :walk_id, :walk_association)
|
145
|
+
request(:corp, :wallet_transactions, options.merge(:account_key => account_key))
|
146
|
+
end
|
147
|
+
end
|
148
|
+
end
|
149
|
+
end
|
150
|
+
end
|