Class: HaveAPI::Resources::ActionState::Poll
- Includes:
- Mixin
- Defined in:
- lib/haveapi/resources/action_state.rb
Instance Attribute Summary
Attributes inherited from Action
#current_user, #errors, #flags, #message, #request, #version
Instance Method Summary collapse
Methods included from Mixin
Methods inherited from Action
add_pre_authorize_blocks, authorize, #authorized?, build_route, delayed_inherited, describe, example, from_context, inherit_attrs_from_resource, inherited, #initialize, initialize, #input, input, meta, #meta, model_adapter, output, #params, #pre_exec, #prepare, resolve_path_params, #safe_exec, #safe_output, #set_meta, #v?, #validate!, validate_build
Methods included from Hookable
Methods inherited from Common
check_build, has_attr, inherit_attrs
Constructor Details
This class inherits a constructor from HaveAPI::Action
Instance Method Details
#exec ⇒ Object
100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 |
# File 'lib/haveapi/resources/action_state.rb', line 100 def exec t = Time.now loop do state = @context.server.action_state.new( current_user, id: params[:action_state_id] ) error!('action state not found') unless state.valid? if state.finished? || (Time.now - t) >= input[:timeout] return state_to_hash(state) elsif input[:update_in] new_state = state_to_hash(state) %i[status current total].each do |v| return new_state if input[v] != new_state[v] end end return state_to_hash(state.poll(input)) if state.respond_to?(:poll) sleep(1) end end |