Class: HaveAPI::ActionState

Inherits:
Object
  • Object
show all
Defined in:
lib/haveapi/action_state.rb

Overview

This class is an interface between APIs and HaveAPI for handling of blocking actions. Blocking actions are not executed immediately, but their execution takes an unspecified amount of time. This interface allows to list actions that are pending completion and view their status.

If method poll is defined, it is called by action Resources::ActionState::Poll. it can provide a more sophisticated polling implementation than the implicit one, which is to create a new instance of this class every second and check its state. poll is passed one argument, a hash of input parameters from Resources::ActionState::Poll.

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(user, id: nil, state: nil) ⇒ ActionState

The constructor either gets parameter id or state. If state is not provided, the method should find it using the id.

When the client is asking about the state of a specific action, lookup using id is used. When the client is listing pending actions, instances of this class are created in self.list_pending and are passed the state parameter to avoid double lookups. id should lead to the same object that would be passed as state.

Raises:

  • (NotImplementedError)


33
34
35
# File 'lib/haveapi/action_state.rb', line 33

def initialize(user, id: nil, state: nil)
  raise NotImplementedError
end

Class Method Details

.list_pending(user, offset, limit, order) ⇒ Array<ActionState>

Return an array of objects representing actions that are pending completion.

Raises:

  • (NotImplementedError)


18
19
20
# File 'lib/haveapi/action_state.rb', line 18

def self.list_pending(user, offset, limit, order)
  raise NotImplementedError
end

Instance Method Details

#can_cancel?Boolean



78
79
80
# File 'lib/haveapi/action_state.rb', line 78

def can_cancel?
  false
end

#cancelInteger, ...

Stop action execution

Raises:

  • (RuntimeError)

    if the cancellation failed

  • (NotImplementedError)

    if the cancellation is not supported



88
89
90
# File 'lib/haveapi/action_state.rb', line 88

def cancel
  raise NotImplementedError, 'action cancellation is not implemented by this API'
end

#created_atTime



68
69
70
# File 'lib/haveapi/action_state.rb', line 68

def created_at

end

#finished?Boolean

Returns true of the action is finished.

Raises:

  • (NotImplementedError)


43
44
45
# File 'lib/haveapi/action_state.rb', line 43

def finished?
  raise NotImplementedError
end

#idInteger

Returns action state id.

Raises:

  • (NotImplementedError)


53
54
55
# File 'lib/haveapi/action_state.rb', line 53

def id
  raise NotImplementedError
end

#labelString

Returns human-readable label of this action state.

Raises:

  • (NotImplementedError)


58
59
60
# File 'lib/haveapi/action_state.rb', line 58

def label
  raise NotImplementedError
end

#progressHash

Raises:

  • (NotImplementedError)


63
64
65
# File 'lib/haveapi/action_state.rb', line 63

def progress
  raise NotImplementedError
end

#statusBoolean

Returns true if the action was/is going to be successful.

Raises:

  • (NotImplementedError)


48
49
50
# File 'lib/haveapi/action_state.rb', line 48

def status
  raise NotImplementedError
end

#updated_atTime



73
74
75
# File 'lib/haveapi/action_state.rb', line 73

def updated_at

end

#valid?Boolean

Returns true if the action exists.

Raises:

  • (NotImplementedError)


38
39
40
# File 'lib/haveapi/action_state.rb', line 38

def valid?
  raise NotImplementedError
end