lib/twurl/request_controller.rb in twurl-0.9.4 vs lib/twurl/request_controller.rb in twurl-0.9.5

- old
+ new

@@ -1,28 +1,41 @@ module Twurl class RequestController < AbstractCommandController - NO_URI_MESSAGE = "No URI specified" + NO_URI_MESSAGE = 'No URI specified' + INVALID_URI_MESSAGE = 'Invalid URI detected' READ_TIMEOUT_MESSAGE = 'A timeout occurred (Net::ReadTimeout). ' \ 'Please try again or increase the value using --timeout option.' OPEN_TIMEOUT_MESSAGE = 'A timeout occurred (Net::OpenTimeout). ' \ 'Please try again or increase the value using --connection-timeout option.' def dispatch if client.needs_to_authorize? raise Exception, "You need to authorize first." end options.path ||= OAuthClient.rcfile.alias_from_options(options) + raise Exception, NO_URI_MESSAGE if options.path.empty? perform_request end def perform_request client.perform_request_from_options(options) { |response| - response.read_body { |chunk| CLI.print chunk } + response.read_body { |body| + CLI.print options.json_format ? JsonFormatter.format(body) : body + } } rescue URI::InvalidURIError - CLI.puts NO_URI_MESSAGE + CLI.puts INVALID_URI_MESSAGE rescue Net::ReadTimeout CLI.puts READ_TIMEOUT_MESSAGE rescue Net::OpenTimeout CLI.puts OPEN_TIMEOUT_MESSAGE + end + end + + class JsonFormatter + def self.format(string) + json = JSON.parse(string) + (json.is_a?(Array) || json.is_a?(Hash)) ? JSON.pretty_generate(json) : string + rescue JSON::ParserError, TypeError + string end end end