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