Class: PlatformSdk::LearnosityApi::Client

Inherits:
Object
  • Object
show all
Defined in:
lib/platform_sdk/learnosity_api/client.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(credentials) ⇒ Client

Returns a new instance of Client.

Raises:

  • (ArgumentError)


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

def initialize(credentials)
  @credentials = credentials

  raise ArgumentError, 'learnosity_host is required' if @credentials[:learnosity_host].nil?
  raise ArgumentError, 'learnosity_version is required' if @credentials[:learnosity_version].nil?
  raise ArgumentError, 'service is required' if @credentials[:service].nil?
  raise ArgumentError, 'consumer_key is required' if @credentials[:consumer_key].nil?
  raise ArgumentError, 'consumer_secret is required' if @credentials[:consumer_secret].nil?
  raise ArgumentError, 'organisation_id is required' if @credentials[:organisation_id].nil?
  raise ArgumentError, 'domain is required' if @credentials[:domain].nil?

  @security = {
    'consumer_key' => @credentials[:consumer_key],
    'user_id' => @credentials[:user_id] || SecureRandom.uuid,
    'domain' => @credentials[:domain]
  }

  @conn = build_connection
end

Instance Attribute Details

#connObject (readonly)

Returns the value of attribute conn.



9
10
11
# File 'lib/platform_sdk/learnosity_api/client.rb', line 9

def conn
  @conn
end

#credentialsObject (readonly)

Returns the value of attribute credentials.



9
10
11
# File 'lib/platform_sdk/learnosity_api/client.rb', line 9

def credentials
  @credentials
end

#securityObject (readonly)

Returns the value of attribute security.



9
10
11
# File 'lib/platform_sdk/learnosity_api/client.rb', line 9

def security
  @security
end

Instance Method Details

#post(path, request) ⇒ Object



41
42
43
44
45
46
47
48
49
50
51
# File 'lib/platform_sdk/learnosity_api/client.rb', line 41

def post(path, request)
  request['organisation_id'] ||= @credentials[:organisation_id]
  # to support backwards compatibility with the old client
  request = sign(request, 'get') unless request.key?('security')
  # will be removed in a future release
  # when all clients have been updated to use the new sign method
  conn.post(path, request)
rescue Faraday::Error => e
  log_warn("Learnosity Data API Error: #{e.inspect}")
  raise
end

#sign(request, action) ⇒ Object



31
32
33
34
35
36
37
38
39
# File 'lib/platform_sdk/learnosity_api/client.rb', line 31

def sign(request, action)
  Learnosity::Sdk::Request::Init.new(
    @credentials[:service],
    @security,
    @credentials[:consumer_secret],
    request,
    action
  ).generate
end