lib/libgss/action_request.rb in libgss-0.7.3 vs lib/libgss/action_request.rb in libgss-0.7.4

- old
+ new

@@ -53,20 +53,29 @@ # アクション群を実行するために実際にHTTPリクエストを送信します。 def send_request(&callback) res = Libgss.with_retry("action_request") do @httpclient.post(action_url, {"inputs" => @actions.map(&:to_hash)}.to_json, req_headers) end + r = process_response(res, :async_request) + @outputs = Outputs.new(r["outputs"]) + callback.call(@outputs) if callback + @outputs + end + + def process_response(res, req_type) case res.code.to_i when 200..299 then # OK else - raise Error, "failed to send action request: [#{res.code}] #{res.body}" + raise Error, "failed to send #{req_type}: [#{res.code}] #{res.content}" end - r = JSON.parse(res.body) - # puts res.body - @outputs = Outputs.new(r["outputs"]) - callback.call(@outputs) if callback - @outputs + begin + return JSON.parse(res.content) + rescue JSON::ParserError => e + $stderr.puts("\e[31m[#{e.class}] #{e.message}\e[0m\n#{res.content}") + raise e + end end + private :process_response # 条件に該当するデータを取得 # @param [String] name 対象となるコレクション名 # @param [Hash] conditions 検索条件 # @param [Array<Array<String, Integer>>] order フィールド名と(1 or -1)の組み合わせの配列