Sha256: 30e1ea7ede55ef100057f76c78d0f4477af2f6123bc7a3ab396c7611819e5bfe

Contents?: true

Size: 1.53 KB

Versions: 8

Compression:

Stored size: 1.53 KB

Contents

# -*- coding: utf-8 -*-
require 'libgss'

require 'net/http'
require 'uri'

module Libgss

  class AsyncActionRequest < ActionRequest

    attr_reader :ids
    attr_accessor :action_id
    attr_accessor :result_url


    # コンストラクタ
    def initialize(httpclient, action_url, result_url, req_headers)
      super(httpclient, action_url, req_headers)
      @result_url = result_url
    end

    # アクション群を実行するために実際にHTTPリクエストを送信します。
    def send_request
      res = network.httpclient_for_action.post(action_url, {"inputs" => @actions.map(&:to_hash)}.to_json, req_headers)
      response_hook.call(res) if response_hook # テストでレスポンスを改ざんを再現するために使います
      r = process_response(res, :async_action_request)
      @outputs = Outputs.new(r["outputs"])
      @ids = @outputs.map{|output| output['id'] }
      @outputs
    end

    def async_status(ids=nil)
      ids ||= @ids
      ids = [ids] unless ids.is_a?(::Array)
      raise Error, "failed to get response. please exec send_request before call." unless ids

      res = network.httpclient_for_action.post(result_url, {'input_ids' => ids}.to_json, req_headers)
      response_hook.call(res) if response_hook # テストでレスポンスを改ざんを再現するために使います
      r = process_response(res, :aync_results_request)
      @outputs = Outputs.new(r["outputs"]) # Outputsを使うことでidによるアクセスを可能に
    end
    alias :async_results :async_status
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
libgss-0.11.0 lib/libgss/async_action_request.rb
libgss-0.10.0 lib/libgss/async_action_request.rb
libgss-0.9.0 lib/libgss/async_action_request.rb
libgss-0.8.4 lib/libgss/async_action_request.rb
libgss-0.8.3 lib/libgss/async_action_request.rb
libgss-0.8.2 lib/libgss/async_action_request.rb
libgss-0.8.1 lib/libgss/async_action_request.rb
libgss-0.8.0 lib/libgss/async_action_request.rb