Sha256: 60d564bb07110b975e5f52ada71be3118ed656201bb99889fad192d09c702d0c

Contents?: true

Size: 1.42 KB

Versions: 2

Compression:

Stored size: 1.42 KB

Contents

# frozen_string_literal: true
require "learnosity/sdk/request/init"
require "securerandom"
require "net/http"

module PlatformSdk
  module LearnosityApi
    # Learnosity::Client
    class Client
      attr_reader :credentials, :security

      def initialize(credentials)
        @credentials = credentials

        raise ArgumentError, "learnosity_host is required" if @credentials[:learnosity_host].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" => SecureRandom.uuid,
          "domain" => @credentials[:domain]
        }

      end

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

      def post(path, request)
        uri = URI("https://#{@credentials[:learnosity_host]}/#{path}")
        Net::HTTP.post_form(uri, sign(request))
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
strongmind-platform-sdk-3.9.1 lib/platform_sdk/learnosity_api/client.rb
strongmind-platform-sdk-3.9.0 lib/platform_sdk/learnosity_api/client.rb