Class: Fitting::Storage::WhiteList

Inherits:
Object
  • Object
show all
Defined in:
lib/fitting/storage/white_list.rb

Instance Method Summary collapse

Constructor Details

#initialize(white_list, resource_white_list, resources) ⇒ WhiteList

Returns a new instance of WhiteList.



6
7
8
9
10
# File 'lib/fitting/storage/white_list.rb', line 6

def initialize(white_list, resource_white_list, resources)
  @white_list = white_list
  @resource_white_list = resource_white_list
  @resources = resources
end

Instance Method Details

#request_hash(request) ⇒ Object



42
43
44
45
46
47
48
# File 'lib/fitting/storage/white_list.rb', line 42

def request_hash(request)
  array = request.split(' ')
  {
    method: array[0],
    path: Tomograph::Path.new(array[1]).to_s
  }
end

#requests(resource, all_requests) ⇒ Object



27
28
29
30
31
32
# File 'lib/fitting/storage/white_list.rb', line 27

def requests(resource, all_requests)
  resource.map do |request|
    all_requests.push(request_hash(request))
  end
  all_requests
end

#to_aObject



12
13
14
15
# File 'lib/fitting/storage/white_list.rb', line 12

def to_a
  return @white_list if @white_list
  @white_list = transformation
end

#transformationObject



34
35
36
37
38
39
40
# File 'lib/fitting/storage/white_list.rb', line 34

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_groupObject



17
18
19
20
21
22
23
24
25
# File 'lib/fitting/storage/white_list.rb', line 17

def without_group
  @resource_white_list.inject([]) do |all_requests, asd|
    if asd[1] == []
      requests(@resources[asd[0]], all_requests)
    else
      requests(asd[1], all_requests)
    end
  end.flatten.uniq
end