Sha256: bb54f4e552cd521dcf0505180543eb49022d6536e6a007549f9d9490e7888b22

Contents?: true

Size: 1.28 KB

Versions: 1

Compression:

Stored size: 1.28 KB

Contents

module QuizApiClient::Services
  class QuizSessionService < BaseApiService
    def token(scope:, exp: nil, resource_id: nil)
      return unless allowed_scopes.include?(scope)
      generate_token(scope: scope, exp: exp, resource_id: resource_id)
    end

    def update(params:, default_token: nil)
      patch_to_quiz_api(params: params, token: token_for_api(default_token, scope_update, params[:id]))
    end

    def show(params:, default_token: nil)
      raise 'Quiz Session Id Required' unless params && params[:id]
      get_from_quiz_api(params: params, token: token_for_api(default_token, scope_show, params[:id]))
    end

    def scope_update
      'quiz_session.update'
    end

    def scope_take
      'quiz_session.take'
    end

    def scope_grade
      'quiz_session.grade'
    end

    def scope_show
      'quiz_session.show'
    end

    private

    def patch_to_quiz_api(params:, token:)
      client(token: token).patch(
        "/api/quiz_sessions/#{params[:id]}",
        quiz_session: params
      )
    end

    def get_from_quiz_api(params:, token:)
      client(token: token).get(
        "/api/quiz_sessions/#{params[:id]}"
      )
    end

    def allowed_scopes
      [
        scope_grade,
        scope_take,
        scope_update,
        scope_show
      ]
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
quiz_api_client-0.1.10 lib/quiz_api_client/services/quiz_session_service.rb