Class: Praxicraft::Resources::Results

Inherits:
Object
  • Object
show all
Defined in:
lib/praxicraft/resources/results.rb

Constant Summary collapse

MAX_RESULT_PAGES =
10_000

Instance Method Summary collapse

Constructor Details

#initialize(client) ⇒ Results

Returns a new instance of Results.



10
11
12
# File 'lib/praxicraft/resources/results.rb', line 10

def initialize(client)
  @client = client
end

Instance Method Details

#iter_all(assessment, args = nil, **kwargs, &block) ⇒ Object



30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# File 'lib/praxicraft/resources/results.rb', line 30

def iter_all(assessment, args = nil, **kwargs, &block)
  opts = symbolize(args || kwargs)
  return enum_for(:iter_all, assessment, opts) unless block_given?

  cursor = nil
  seen = {}

  MAX_RESULT_PAGES.times do
    page_args = opts.dup
    page_args[:cursor] = cursor unless cursor.nil?
    page = list(assessment, page_args)
    return unless page.is_a?(Hash)

    results = page["results"] || page[:results]
    results.each(&block) if results.is_a?(Array)

    nxt = next_cursor(page)
    return if nxt.nil? || seen[nxt]

    seen[nxt] = true
    cursor = nxt
  end
end

#list(assessment, args = nil, **kwargs) ⇒ Object

kwargs / hash: cursor, page_size, params



15
16
17
18
19
20
21
22
23
# File 'lib/praxicraft/resources/results.rb', line 15

def list(assessment, args = nil, **kwargs)
  opts = symbolize(args || kwargs)
  query = normalize(opts[:params] || {}) || {}
  query["cursor"] = opts[:cursor] if opts.key?(:cursor)
  query["page_size"] = opts[:page_size] if opts.key?(:page_size)

  key = Client.path_segment(assessment, "assessment")
  @client.get("/assessments/#{key}/results/", query)
end

#retrieve(invite_token) ⇒ Object



25
26
27
28
# File 'lib/praxicraft/resources/results.rb', line 25

def retrieve(invite_token)
  token = Client.path_segment(invite_token, "invite_token")
  @client.get("/invites/#{token}/result/")
end