Sha256: 22329b8e1e325d7c344c50a9fbe5e9a634f7726f584bfa16682d8818616bc054

Contents?: true

Size: 1.41 KB

Versions: 9

Compression:

Stored size: 1.41 KB

Contents

require "multi_json"

require "jdc/cli"
=begin
module JDCAdmin
  class Curl < JDC::CLI
    def precondition
      check_target
    end

    desc "Execute a raw request"
    group :admin
    input :mode, :argument => :required, :desc => "Request mode (Get/Put/etc.)"
    input :path, :argument => :required, :desc => "Request path"
    input :headers, :argument => :splat, :desc => "Headers (i.e. Foo: bar)"
    input :body, :alias => "-b", :desc => "Request body"
    def curl
      mode = input[:mode].upcase
      path = input[:path]
      body = input[:body]

      headers = {}
      input[:headers].each do |h|
        k, v = h.split(/\s*:\s*/, 2)
        headers[k.downcase] = v
      end

      content = headers["content-type"]
      accept = headers["accept"]

      content ||= :json if body
      accept ||= :json unless %w(DELETE HEAD).include?(mode)

      req, res =
        client.base.rest_client.request(
          mode,
          remove_leading_slash(path),
          :headers => headers,
          :accept => accept,
          :payload => body,
          :content => body && content)

      body = res[:body]

      type = res[:headers]["content-type"]

      if type && type.include?("application/json")
        json = MultiJson.load(body)
        puts MultiJson.dump(json, :pretty => true)
      else
        puts body
      end
    end

    def remove_leading_slash(path)
      path.sub(%r{^/}, '')
    end
  end
end
=end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
jdc-0.2.7 lib/admin/curl.rb
jdc-0.2.5 lib/admin/curl.rb
jdc-0.2.4 lib/admin/curl.rb
jdc-0.2.3 lib/admin/curl.rb
jdc-0.2.2 lib/admin/curl.rb
jdc-0.2.3.pre lib/admin/curl.rb
jdc-0.2.2.pre lib/admin/curl.rb
jdc-0.2.1.pre lib/admin/curl.rb
jdc-0.2.0 lib/admin/curl.rb