Class: WebFetch::Promise

Inherits:
Object
  • Object
show all
Defined in:
lib/web_fetch/promise.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(client, options = {}) ⇒ Promise

Returns a new instance of Promise.



7
8
9
10
11
# File 'lib/web_fetch/promise.rb', line 7

def initialize(client, options = {})
  @client = client
  @uid = options[:uid]
  @request = Request.from_hash(options[:request])
end

Instance Attribute Details

#requestObject (readonly)

Returns the value of attribute request.



5
6
7
# File 'lib/web_fetch/promise.rb', line 5

def request
  @request
end

#resultObject (readonly)

Returns the value of attribute result.



5
6
7
# File 'lib/web_fetch/promise.rb', line 5

def result
  @result
end

#uidObject (readonly)

Returns the value of attribute uid.



5
6
7
# File 'lib/web_fetch/promise.rb', line 5

def uid
  @uid
end

Instance Method Details

#complete?Boolean

Returns:

  • (Boolean)


25
26
27
28
29
30
31
# File 'lib/web_fetch/promise.rb', line 25

def complete?
  return false if @result.nil?
  return false if pending?
  return true if @result

  false
end

#customObject



21
22
23
# File 'lib/web_fetch/promise.rb', line 21

def custom
  request&.custom
end

#errorObject



43
44
45
46
47
# File 'lib/web_fetch/promise.rb', line 43

def error
  return nil unless complete?

  @raw_result[:response][:error]
end

#fetch(options = {}) ⇒ Object



13
14
15
16
17
18
19
# File 'lib/web_fetch/promise.rb', line 13

def fetch(options = {})
  return @result if complete?

  block = options.fetch(:wait, true)
  @raw_result = find_or_retrieve(block)
  (@result = build_result)
end

#pending?Boolean

Returns:

  • (Boolean)


33
34
35
36
37
# File 'lib/web_fetch/promise.rb', line 33

def pending?
  return false if @result.nil?

  @result == :pending
end

#success?Boolean

Returns:

  • (Boolean)


39
40
41
# File 'lib/web_fetch/promise.rb', line 39

def success?
  complete? && @raw_result[:response][:success]
end