Class: EveOnline::ESI::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/eve_online/esi/base.rb

Direct Known Subclasses

Alliance, AllianceCorporations, AllianceIcon, Alliances, Character, CharacterAssets, CharacterAssetsLocations, CharacterAssetsNames, CharacterAttributes, CharacterBlueprints, CharacterCalendar, CharacterCalendarEvent, CharacterClones, CharacterContracts, CharacterCorporationHistory, CharacterFatigue, CharacterGetMail, CharacterImplants, CharacterIndustryJobs, CharacterKillmailsRecent, CharacterLocation, CharacterLoyaltyPoints, CharacterMailLabels, CharacterNotifications, CharacterOnline, CharacterOrders, CharacterPortrait, CharacterShip, CharacterSkillQueue, CharacterSkills, CharacterStandings, CharacterWallet, CharacterWalletJournal, CharacterWalletTransactions, Corporation, CorporationAllianceHistory, CorporationAssets, CorporationAssetsLocations, CorporationAssetsNames, CorporationBlueprints, CorporationIndustryJobs, CorporationKillmailsRecent, CorporationLoyaltyStoreOffers, CorporationMembers, CorporationNPC, CorporationOrders, DogmaAttribute, DogmaAttributes, DogmaEffect, DogmaEffects, Killmail, MarketGroup, MarketGroups, MarketHistory, MarketPrices, Models::Ally, Models::War, PublicContract, PublicContracts, Search, ServerStatus, UniverseAncestries, UniverseAsteroidBelt, UniverseBloodlines, UniverseCategories, UniverseCategory, UniverseConstellation, UniverseConstellations, UniverseFactions, UniverseGraphic, UniverseGraphics, UniverseGroup, UniverseGroups, UniverseMoon, UniversePlanet, UniverseRaces, UniverseRegion, UniverseRegions, UniverseStar, UniverseStargate, UniverseStation, UniverseStructures, UniverseSystem, UniverseSystemJumps, UniverseSystemKills, UniverseSystems, UniverseType, UniverseTypes, War, WarKillmails, Wars

Constant Summary collapse

API_HOST =
"esi.evetech.net"

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ Base

Returns a new instance of Base.



17
18
19
20
21
22
23
24
25
# File 'lib/eve_online/esi/base.rb', line 17

def initialize(options = {})
  @token = options.fetch(:token, nil)
  @_read_timeout = options.fetch(:read_timeout, 60)
  @_open_timeout = options.fetch(:open_timeout, 60)
  @_write_timeout = options.fetch(:write_timeout, 60)
  @language = options.fetch(:language, "en-us")
  @adapter = options.fetch(:adapter, Faraday.default_adapter)
  @middlewares = options.fetch(:middlewares, [])
end

Instance Attribute Details

#_open_timeoutObject (readonly)

Returns the value of attribute _open_timeout.



12
13
14
# File 'lib/eve_online/esi/base.rb', line 12

def _open_timeout
  @_open_timeout
end

#_read_timeoutObject (readonly)

Returns the value of attribute _read_timeout.



12
13
14
# File 'lib/eve_online/esi/base.rb', line 12

def _read_timeout
  @_read_timeout
end

#_write_timeoutObject (readonly)

Returns the value of attribute _write_timeout.



12
13
14
# File 'lib/eve_online/esi/base.rb', line 12

def _write_timeout
  @_write_timeout
end

#adapterObject (readonly)

Returns the value of attribute adapter.



12
13
14
# File 'lib/eve_online/esi/base.rb', line 12

def adapter
  @adapter
end

#languageObject (readonly)

Returns the value of attribute language.



12
13
14
# File 'lib/eve_online/esi/base.rb', line 12

def language
  @language
end

#middlewaresObject (readonly)

Returns the value of attribute middlewares.



12
13
14
# File 'lib/eve_online/esi/base.rb', line 12

def middlewares
  @middlewares
end

#tokenObject

Returns the value of attribute token.



12
13
14
# File 'lib/eve_online/esi/base.rb', line 12

def token
  @token
end

Instance Method Details

#add_middleware(middleware) ⇒ Object



86
87
88
# File 'lib/eve_online/esi/base.rb', line 86

def add_middleware(middleware)
  @middlewares << middleware
end

#additional_query_paramsObject



115
116
117
# File 'lib/eve_online/esi/base.rb', line 115

def additional_query_params
  []
end

#base_query_paramsObject



119
120
121
# File 'lib/eve_online/esi/base.rb', line 119

def base_query_params
  []
end

#connectionObject



90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
# File 'lib/eve_online/esi/base.rb', line 90

def connection
  @connection ||= Faraday.new do |f|
    f.headers["User-Agent"] = user_agent
    f.headers["Accept"] = "application/json"
    f.request :authorization, "Bearer", token if token
    f.options.read_timeout = _read_timeout
    f.options.open_timeout = _open_timeout
    f.options.write_timeout = _write_timeout
    f.use FaradayMiddlewares::RaiseErrors
    middlewares.each do |middleware|
      f.use middleware[:class], esi: self
    end
    f.response :json, content_type: "application/json"
    f.adapter adapter
  end
end

#error_limit_remainObject



74
75
76
# File 'lib/eve_online/esi/base.rb', line 74

def error_limit_remain
  resource.headers["x-esi-error-limit-remain"]&.to_i
end

#error_limit_resetObject



78
79
80
# File 'lib/eve_online/esi/base.rb', line 78

def error_limit_reset
  resource.headers["x-esi-error-limit-reset"]&.to_i
end

#http_methodObject



39
40
41
# File 'lib/eve_online/esi/base.rb', line 39

def http_method
  :get
end

#open_timeoutObject



51
52
53
# File 'lib/eve_online/esi/base.rb', line 51

def open_timeout
  connection.options.open_timeout
end

#open_timeout=(value) ⇒ Object



55
56
57
# File 'lib/eve_online/esi/base.rb', line 55

def open_timeout=(value)
  connection.options.open_timeout = value
end

#pageObject



67
68
# File 'lib/eve_online/esi/base.rb', line 67

def page
end

#pathObject

Raises:

  • (NotImplementedError)


123
124
125
# File 'lib/eve_online/esi/base.rb', line 123

def path
  raise NotImplementedError
end

#queryObject



127
128
129
130
131
132
133
134
135
# File 'lib/eve_online/esi/base.rb', line 127

def query
  hash = {}

  (base_query_params + additional_query_params).each do |param|
    hash[param] = public_send(param)
  end

  hash.reject { |_, v| v.nil? || v == "" }
end

#read_timeoutObject



43
44
45
# File 'lib/eve_online/esi/base.rb', line 43

def read_timeout
  connection.options.read_timeout
end

#read_timeout=(value) ⇒ Object



47
48
49
# File 'lib/eve_online/esi/base.rb', line 47

def read_timeout=(value)
  connection.options.read_timeout = value
end

#request_idObject



82
83
84
# File 'lib/eve_online/esi/base.rb', line 82

def request_id
  resource.headers["x-esi-request-id"]
end

#resourceObject



137
138
139
140
141
# File 'lib/eve_online/esi/base.rb', line 137

def resource
  @resource ||= connection.public_send(http_method, uri)
rescue Faraday::ConnectionFailed, Faraday::TimeoutError
  raise EveOnline::Exceptions::Timeout
end

#responseObject



143
144
145
# File 'lib/eve_online/esi/base.rb', line 143

def response
  @response ||= resource.body
end

#scopeObject

Raises:

  • (NotImplementedError)


31
32
33
# File 'lib/eve_online/esi/base.rb', line 31

def scope
  raise NotImplementedError
end

#total_pagesObject



70
71
72
# File 'lib/eve_online/esi/base.rb', line 70

def total_pages
  resource.headers["x-pages"]&.to_i
end

#uriObject



107
108
109
110
111
112
113
# File 'lib/eve_online/esi/base.rb', line 107

def uri
  @uri ||= begin
    params = {host: API_HOST, path: path}
    params[:query] = query.to_query if query.presence
    URI::HTTPS.build(params)
  end
end

#urlObject



27
28
29
# File 'lib/eve_online/esi/base.rb', line 27

def url
  uri.to_s
end

#user_agentObject



35
36
37
# File 'lib/eve_online/esi/base.rb', line 35

def user_agent
  "EveOnline API (https://github.com/evemonk/eve_online) v#{VERSION}"
end

#write_timeoutObject



59
60
61
# File 'lib/eve_online/esi/base.rb', line 59

def write_timeout
  connection.options.write_timeout
end

#write_timeout=(value) ⇒ Object



63
64
65
# File 'lib/eve_online/esi/base.rb', line 63

def write_timeout=(value)
  connection.options.write_timeout = value
end