Sha256: 9769d65d5e62772df7ba48dd309ed4d8b620437cf9e2539fca226162b4e194f7

Contents?: true

Size: 1.2 KB

Versions: 1

Compression:

Stored size: 1.2 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)
      r = process_response(res, :async_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)
      r = process_response(res, :aync_results)
      Outputs.new(r["outputs"])
    end
    alias :async_results :async_status
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
libgss-0.7.6 lib/libgss/async_action_request.rb