class Fitting::Storage::WhiteList

Public Class Methods

new(prefix, white_list, resource_white_list, include_resources, include_actions, resources) click to toggle source
# File lib/fitting/storage/white_list.rb, line 6
def initialize(prefix, white_list, resource_white_list, include_resources, include_actions, resources)
  @prefix = prefix
  @white_list = white_list
  @resource_white_list = resource_white_list
  @include_resources = include_resources
  @include_actions = include_actions
  @resources = resources
  @warnings = []
end

Public Instance Methods

find_warnings(resource) click to toggle source
# File lib/fitting/storage/white_list.rb, line 44
def find_warnings(resource)
  return nil if @resources[resource]
  @warnings.push(
    "FITTING WARNING: In the documentation there isn't resource from the resource_white_list #{resource}"
  )
end
new_find_warnings(resource) click to toggle source
# File lib/fitting/storage/white_list.rb, line 121
def new_find_warnings(resource)
  return nil if @new_resources[resource]
  @warnings.push(
    "FITTING WARNING: In the documentation there isn't resource from the resource_white_list #{resource}"
  )
end
new_requests(resource, all_requests) click to toggle source
# File lib/fitting/storage/white_list.rb, line 112
def new_requests(resource, all_requests)
  return all_requests unless resource

  resource.map do |request|
    all_requests.push(request_hash(request))
  end
  all_requests
end
new_resource_selection(resource, all_requests) click to toggle source
# File lib/fitting/storage/white_list.rb, line 107
def new_resource_selection(resource, all_requests)
  new_find_warnings(resource)
  new_requests(@new_resources[resource], all_requests)
end
new_transformation() click to toggle source
# File lib/fitting/storage/white_list.rb, line 82
def new_transformation
  @new_resources = {}
  @resources.map do |key, value|
    @new_resources.merge!(Tomograph::Path.new(key).to_s => value)
  end
  result = new_without_group.group_by { |action| action[:path] }
  result.inject({}) do |res, group|
    methods = group.last.map { |gr| gr[:method] }
    res.merge(group.first => methods)
  end
end
new_without_group() click to toggle source
# File lib/fitting/storage/white_list.rb, line 94
def new_without_group
  return @newwithout_group_list if @newwithout_group_list
  @newwithout_group_list = @include_resources.inject([]) do |all_requests, resource|
    if resource[0] == '/'
      new_resource_selection(resource, all_requests)
    else
      new_resource_selection("/#{resource}", all_requests)
    end
  end.flatten.uniq
  puts_warnings
  @newwithout_group_list
end
postnew_transformation() click to toggle source
# File lib/fitting/storage/white_list.rb, line 128
def postnew_transformation
  result = postnew_without_group.group_by { |action| action[:path] }
  result.inject({}) do |res, group|
    methods = group.last.map { |gr| gr[:method] }
    res.merge(group.first => methods)
  end
end
postnew_without_group() click to toggle source
# File lib/fitting/storage/white_list.rb, line 136
def postnew_without_group
  return @postnewwithout_group_list if @postnewwithout_group_list
  @postnewwithout_group_list = @include_actions.inject([]) do |all_requests, resource|
    method, path = resource.split(' ')
    if path[0] == '/'
      new_requests(["#{method} #{@prefix}#{path}"], all_requests)
    else
      new_requests(["#{method} #{@prefix}/#{path}"], all_requests)
    end
  end.flatten.uniq
  puts_warnings
  @postnewwithout_group_list
end
puts_warnings() click to toggle source
# File lib/fitting/storage/white_list.rb, line 51
def puts_warnings
  return nil if @warnings == []
  warnings_string = @warnings.join("\n")
  puts "\n#{warnings_string}"
end
request_hash(request) click to toggle source
# File lib/fitting/storage/white_list.rb, line 74
def request_hash(request)
  array = request.split(' ')
  {
    method: array[0],
    path: Tomograph::Path.new(array[1]).to_s
  }
end
requests(resource, all_requests) click to toggle source
# File lib/fitting/storage/white_list.rb, line 57
def requests(resource, all_requests)
  return all_requests unless resource

  resource.map do |request|
    all_requests.push(request_hash(request))
  end
  all_requests
end
resource_selection(resource, all_requests) click to toggle source
# File lib/fitting/storage/white_list.rb, line 35
def resource_selection(resource, all_requests)
  if resource[1] == []
    find_warnings(resource[0])
    requests(@resources[resource[0]], all_requests)
  else
    requests(resource[1], all_requests)
  end
end
to_a() click to toggle source
# File lib/fitting/storage/white_list.rb, line 16
def to_a
  return nil if @white_list == nil && @resource_white_list == nil && @include_resources == nil && @include_actions == nil
  return @white_list if @white_list
  return @white_list = transformation if @resource_white_list
  @white_list = {}
  @white_list.merge!(new_transformation) if @include_resources
  @white_list.merge!(postnew_transformation) if @include_actions
  @white_list
end
transformation() click to toggle source
# File lib/fitting/storage/white_list.rb, line 66
def transformation
  result = without_group.group_by { |action| action[:path] }
  result.inject({}) do |res, group|
    methods = group.last.map { |gr| gr[:method] }
    res.merge(group.first => methods)
  end
end
without_group() click to toggle source
# File lib/fitting/storage/white_list.rb, line 26
def without_group
  return @without_group_list if @without_group_list
  @without_group_list = @resource_white_list.inject([]) do |all_requests, resource|
    resource_selection(resource, all_requests)
  end.flatten.uniq
  puts_warnings
  @without_group_list
end