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 =
"1.0.33"

Class Method Summary collapse

Class Method Details

.add_reader(name) ⇒ Object



59
60
61
62
63
# File 'lib/rail-locator-api.rb', line 59

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

.add_writer(name, type) ⇒ Object



65
66
67
68
69
# File 'lib/rail-locator-api.rb', line 65

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

.generate_access_token(code = nil) ⇒ Object



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

def generate_access_token(code=nil)
  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}&client_secret=#{RailLocatorApi.keycloak_client_secret}&code=#{code ||RailLocatorApi::Request.access_token}&redirect_uri=#{RailLocatorApi.keycloak_redirect_uri}"
  end
  connection = Faraday.new(RailLocatorApi.keycloak_token_url, proxy: nil,
                           ssl: RailLocatorApi::Request.ssl_options || { 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)
end

.refresh_access_tokenObject



32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/rail-locator-api.rb', line 32

def refresh_access_token
  payload = "grant_type=refresh_token&client_id=#{RailLocatorApi.keycloak_client_id}&client_secret=#{RailLocatorApi.keycloak_client_secret}&refresh_token=#{RailLocatorApi::Request.refresh_token}&redirect_uri=#{RailLocatorApi.keycloak_redirect_uri}"
  connection = Faraday.new(RailLocatorApi.keycloak_token_url, proxy: nil,
                           ssl: RailLocatorApi::Request.ssl_options || { 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)
end

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



51
52
53
54
55
56
57
# File 'lib/rail-locator-api.rb', line 51

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:



47
48
49
# File 'lib/rail-locator-api.rb', line 47

def setup
  yield self
end