class Postman::Request

Public Class Methods

new(params) click to toggle source
# File lib/postman-ruby.rb, line 64
def initialize(params)
  # @name
  # @description
  # @method
  # @url
  # @header
  # @body
  # @environment
  params.each do |k,v|
    instance_variable_set("@#{k}", v)
    self.class.send(:attr_reader, k.to_sym)
  end
  @method = @method.downcase.to_sym
  @url = URL.new(@url)
  @env = @environment
  if @header.nil?
    @header = {}
  else
    header = {}
    @header.each do |h|
      header[h['key']] = apply_env(h['value'])
    end
    @header = header
  end
end

Public Instance Methods

execute() click to toggle source
# File lib/postman-ruby.rb, line 98
def execute
  if @method == :get
    new_request(:get).execute
  else
    params = {}

    unless @body.nil? && @body.empty?
      if @body['mode'] == 'raw'
        params[:payload] = @body['raw']
      elsif @body['mode'] == 'formdata'
        f = {}
        @body['formdata'].each do |d|
          if d['enabled']
            if d['type'] == 'file'
              params[:multipart] = true
            end
            f[d['key']] = d['value'] || ""
          end
        end
        params[:payload] = f
      end
    end
    new_request(:post, params).execute
  end
end
reset_env(env) click to toggle source
# File lib/postman-ruby.rb, line 94
def reset_env(env)
  @env = env.clone
end
set_env(env) click to toggle source
# File lib/postman-ruby.rb, line 90
def set_env(env)
  env.each { |k, v| @env[k] = v }
end

Private Instance Methods

apply_env(str) click to toggle source
# File lib/postman-ruby.rb, line 126
def apply_env(str)
  if !@env.nil?
    vars = str.scan(/\{{2}[A-Za-z_\-.]+\}{2}/)
    vars.each do |v|
      val = @env[v[2..-3]]
      raise "Request env var is missing: #{v}" if val.nil?
      str = str.gsub(v, val)
    end
  end
  str
end
new_request(method, params={}) click to toggle source
# File lib/postman-ruby.rb, line 145
def new_request(method, params={})
  params[:method] = method
  params[:url] = apply_env(@url.to_s)
  params[:headers] = @header
  r = RestClient::Request.new(params)
  RequestDecorator.new(r)
end