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)の組み合わせの配列