class Postman::Collection

Public Class Methods

new(hash={}) click to toggle source
# File lib/postman-ruby.rb, line 158
def initialize(hash={})
  @parsed = hash
  @parsed['item'] = [] if @parsed['item'].nil?
  @env = {}
end

Public Instance Methods

filter(flt_hash={}, &block) click to toggle source
# File lib/postman-ruby.rb, line 174
def filter(flt_hash={}, &block)
  flt_hash.each do |k, v|
    if v.nil?
      raise ArgumentError.new("filter value must be string")
    end
    if !FILTER_KEYS.include?(k.to_s)
      raise ArgumentError.new("invalid filter key \"#{k}\", allowed keys: [#{FILTER_KEYS.join(', ')}]")
    end
  end
  filter_collection(@parsed, flt_hash, &block)
end
reset_env(env={}) click to toggle source
# File lib/postman-ruby.rb, line 170
def reset_env(env={})
  @env = env.clone
end
set_env(env) click to toggle source
# File lib/postman-ruby.rb, line 164
def set_env(env)
  env.each do |k, v|
    @env[k] = v
  end
end
to_a() click to toggle source
# File lib/postman-ruby.rb, line 186
def to_a
  filter
end

Private Instance Methods

filter_collection(collection, flt_hash={}) { |r| ... } click to toggle source
# File lib/postman-ruby.rb, line 198
def filter_collection(collection, flt_hash={}, &block)
  ret = []
  collection['item'].each do |item|
    if is_collection(item)
      ret += filter_collection(item, flt_hash, &block)
    elsif is_request(item)
      req = item['request']
      req['name'] = item['name']
      req['response'] = item['response']
      if block_given? || flt_hash.empty?
        r = make_child_request(req)
        next if block_given? && ! yield(r)
        ret << r
        next
      end
      score = 0
      flt_hash.each do |k, v|
        itk = req[k.to_s]
        if k.to_s == 'url' && itk.class == Hash
          itk = itk['raw']
        end
        if !itk.nil?
          score+=1 if v.class == Regexp && v =~ itk || v.class == String && v.downcase == itk.downcase
        end
      end
      if score == flt_hash.size
        r = make_child_request(req)
        ret << r
      end
    end
  end
  ret
end
is_collection(item) click to toggle source
# File lib/postman-ruby.rb, line 232
def is_collection(item)
  item['item'].class == Array
end
is_request(item) click to toggle source
# File lib/postman-ruby.rb, line 236
def is_request(item)
  !item['request'].nil?
end
make_child_request(params) click to toggle source
# File lib/postman-ruby.rb, line 192
def make_child_request(params)
  r = Request.new(params)
  r.reset_env(@env)
  r
end