Sha256: 05fa7a75b8fe4253009bcebd35409686d9c16bc4607204f50a89a574462d782b

Contents?: true

Size: 2 KB

Versions: 2

Compression:

Stored size: 2 KB

Contents

require 'securerandom'
require 'uri'

module OpenStax
  module Exchange

    class FakeClient
      include ClientInstance

      def self.configure
        yield configuration
      end

      def self.configuration
        @configuration ||= Configuration.new
      end

      def initialize(exchange_configuration)
        @client_config_platform_id     = exchange_configuration.client_platform_id
        @client_config_platform_secret = exchange_configuration.client_platform_secret
        @client_config_server_url      = exchange_configuration.client_server_url
        @client_config_api_version     = exchange_configuration.client_api_version

        @server_registered_platforms   = self.class.configuration.registered_platforms
        @server_server_url             = self.class.configuration.server_url

        raise "invalid server url" \
          unless @client_config_server_url == @server_server_url

        raise "invalid platform credentials" \
          unless @server_registered_platforms.fetch(@client_config_platform_id) == @client_config_platform_secret

        @token = SecureRandom.hex(64)
        @multiple_choice_responses = {}
      end

      def is_real_client?
        false
      end

      def token
        @token
      end

      def create_identifier
        SecureRandom.hex(64)
      end

      def record_multiple_choice_answer(identifier, resource, trial, answer)
        @multiple_choice_responses[identifier] ||= {}
        @multiple_choice_responses[identifier][resource] ||= {}

        raise "invalid resource" \
          unless URI(resource).host == "exercises.openstax.org"

        raise "duplicate response for (identifier,resource,trial) triplet" \
          if @multiple_choice_responses[identifier][resource][trial]

        @multiple_choice_responses[identifier][resource][trial] = answer

        return {
          'identifier' => identifier,
          'resource'   => resource,
          'trial'      => trial,
          'answer'     => answer
        }
      end
    end

  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
openstax_exchange-0.0.2 lib/openstax/exchange/fake_client/fake_client.rb
openstax_exchange-0.0.1 lib/openstax/exchange/fake_client/fake_client.rb