Sha256: 66438e15a9dc427ada8caff008d75392e250407cc31a327f90cb4f9cdea6220a

Contents?: true

Size: 1.2 KB

Versions: 3

Compression:

Stored size: 1.2 KB

Contents

require 'multi_json'

module Fitting
  class Documentation
    def initialize(tomogram, white_list)
      @tomogram = tomogram
      @white_list = white_list
    end

    def black
      if @white_list
        all.select do |response|
          data = response.split(' ')
          data[1] && !@white_list[data[1]] || (@white_list[data[1]] != [] && !@white_list[data[1]].include?(data[0]))
        end
      else
        []
      end
    end

    def white
      if @white_list
        all.select do |response|
          data = response.split(' ')
          data[1] && @white_list[data[1]] && (@white_list[data[1]] == [] || @white_list[data[1]].include?(data[0]))
        end
      else
        all
      end
    end

    def all
      @all ||= @tomogram.to_hash.inject([]) do |routes, request|
        request['responses'].inject({}) do |responses, response|
          responses[response['status']] ||= 0
          responses[response['status']] += 1
          responses
        end.map do |status, indexes|
          indexes.times do |index|
            route = "#{request['method']}\t#{request['path']} #{status} #{index}"
            routes.push(route)
          end
        end
        routes
      end.uniq
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
fitting-2.0.3 lib/fitting/documentation.rb
fitting-2.0.2 lib/fitting/documentation.rb
fitting-2.0.1 lib/fitting/documentation.rb