Class: KeycloakAdmin::Client

Inherits:
Object
  • Object
show all
Defined in:
lib/keycloak-admin/client/client.rb

Instance Method Summary collapse

Constructor Details

#initialize(configuration) ⇒ Client

Returns a new instance of Client.



4
5
6
# File 'lib/keycloak-admin/client/client.rb', line 4

def initialize(configuration)
  @configuration = configuration
end

Instance Method Details

#create_payload(value) ⇒ Object



43
44
45
46
47
48
49
50
51
# File 'lib/keycloak-admin/client/client.rb', line 43

def create_payload(value)
  if value.nil?
    ""
  elsif value.kind_of?(Array)
    "[#{value.map(&:to_json) * ","}]"
  else
    value.to_json
  end
end

#created_id(response) ⇒ Object



35
36
37
38
39
40
41
# File 'lib/keycloak-admin/client/client.rb', line 35

def created_id(response)
  unless response.status == 201
    raise "Create method returned status #{response.reason_phrase} (Code: #{response.status}); expected status: Created (201)"
  end
  (_head, _separator, id) = response.headers[:location].rpartition("/")
  id
end

#current_tokenObject

Cached on @configuration, not on this instance, since a new Client subclass is created for nearly every call (e.g. KeycloakAdmin.realm(x).users creates a fresh UserClient) - caching here alone would fetch a new token on almost every request.



15
16
17
# File 'lib/keycloak-admin/client/client.rb', line 15

def current_token
  @configuration.cached_token || @configuration.cache_token(fetch_token)
end

#execute_httpObject



27
28
29
30
31
32
33
# File 'lib/keycloak-admin/client/client.rb', line 27

def execute_http
  yield
rescue Faraday::TimeoutError
  raise
rescue Faraday::ClientError, Faraday::ServerError => e
  http_error(e.response)
end

#headersObject



19
20
21
22
23
24
25
# File 'lib/keycloak-admin/client/client.rb', line 19

def headers
  {
    Authorization: "Bearer #{current_token.access_token}",
    content_type: :json,
    accept:       :json
  }
end

#server_urlObject



8
9
10
# File 'lib/keycloak-admin/client/client.rb', line 8

def server_url
  @configuration.server_url&.sub(/\/+\z/, "")
end