Module: RailLocatorApi

Defined in:
lib/rail-locator-api.rb,
lib/rail-locator-api/request.rb,
lib/rail-locator-api/version.rb,
lib/rail-locator-api/response.rb,
lib/rail-locator-api/api_request.rb,
lib/rail-locator-api/rail_locator_api_error.rb,
lib/generators/rail_locator_api/install/install_generator.rb

Defined Under Namespace

Classes: APIRequest, DynamicSetting, InstallGenerator, RailLocatorApiError, Request, Response

Constant Summary collapse

VERSION =
"0.0.24"

Class Method Summary collapse

Class Method Details

.add_reader(name) ⇒ Object



43
44
45
46
47
# File 'lib/rail-locator-api.rb', line 43

def add_reader(name)
  define_singleton_method(name) do |*args|
    send("#{name}_setting").value(*args)
  end
end

.add_writer(name, type) ⇒ Object



49
50
51
52
53
# File 'lib/rail-locator-api.rb', line 49

def add_writer(name, type)
  define_singleton_method("#{name}=") do |value|
    send("#{name}_setting=", DynamicSetting.build(value, type))
  end
end

.generate_access_tokenObject



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/rail-locator-api.rb', line 11

def generate_access_token
  if RailLocatorApi.keycloak_grant_type == "password"
    payload = "grant_type=#{RailLocatorApi.keycloak_grant_type}&client_id=#{RailLocatorApi.keycloak_client_id}&username=#{RailLocatorApi.api_user_email}&password=#{RailLocatorApi.api_user_password}"
  else
    payload = "grant_type=#{RailLocatorApi.keycloak_grant_type}&client_id=#{RailLocatorApi.keycloak_client_id}&code=#{RailLocatorApi::Request.api_key}&redirect_uri=#{RailLocatorApi.keycloak_redirect_uri}"
  end

  connection = Faraday.new(RailLocatorApi.keycloak_token_url, proxy: nil,
                           ssl: { version: "TLSv1_2" }) do |faraday|
    faraday.adapter Faraday.default_adapter
    faraday.response :logger, ::Logger.new(STDOUT), bodies: true
  end

  response = connection.post RailLocatorApi.keycloak_token_url, payload do |request|
    request.headers['accept'] = 'application/json'
  end

  JSON.parse(response.body).try(:dig, "access_token")
end

.register(name, value, type = nil) ⇒ Object



35
36
37
38
39
40
41
# File 'lib/rail-locator-api.rb', line 35

def register(name, value, type = nil)
  cattr_accessor "#{name}_setting".to_sym

  add_reader(name)
  add_writer(name, type)
  send "#{name}=", value
end

.setup {|_self| ... } ⇒ Object

Yields:

  • (_self)

Yield Parameters:



31
32
33
# File 'lib/rail-locator-api.rb', line 31

def setup
  yield self
end