Class: Fitting::Storage::WhiteList
- Inherits:
-
Object
- Object
- Fitting::Storage::WhiteList
- Defined in:
- lib/fitting/storage/white_list.rb
Instance Method Summary collapse
- #find_warnings(resource) ⇒ Object
-
#initialize(prefix, white_list, resource_white_list, include_resources, include_actions, resources) ⇒ WhiteList
constructor
A new instance of WhiteList.
- #new_find_warnings(resource) ⇒ Object
- #new_requests(resource, all_requests) ⇒ Object
- #new_resource_selection(resource, all_requests) ⇒ Object
- #new_transformation ⇒ Object
- #new_without_group ⇒ Object
- #postnew_transformation ⇒ Object
- #postnew_without_group ⇒ Object
- #puts_warnings ⇒ Object
- #request_hash(request) ⇒ Object
- #requests(resource, all_requests) ⇒ Object
- #resource_selection(resource, all_requests) ⇒ Object
- #to_a ⇒ Object
- #transformation ⇒ Object
- #without_group ⇒ Object
Constructor Details
#initialize(prefix, white_list, resource_white_list, include_resources, include_actions, resources) ⇒ WhiteList
Returns a new instance of WhiteList.
6 7 8 9 10 11 12 13 14 |
# 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 |
Instance Method Details
#find_warnings(resource) ⇒ Object
48 49 50 51 52 53 |
# File 'lib/fitting/storage/white_list.rb', line 48 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) ⇒ Object
125 126 127 128 129 130 |
# File 'lib/fitting/storage/white_list.rb', line 125 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) ⇒ Object
116 117 118 119 120 121 122 123 |
# File 'lib/fitting/storage/white_list.rb', line 116 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) ⇒ Object
111 112 113 114 |
# File 'lib/fitting/storage/white_list.rb', line 111 def new_resource_selection(resource, all_requests) new_find_warnings(resource) new_requests(@new_resources[resource], all_requests) end |
#new_transformation ⇒ Object
86 87 88 89 90 91 92 93 94 95 96 |
# File 'lib/fitting/storage/white_list.rb', line 86 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 ⇒ Object
98 99 100 101 102 103 104 105 106 107 108 109 |
# File 'lib/fitting/storage/white_list.rb', line 98 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 ⇒ Object
132 133 134 135 136 137 138 |
# File 'lib/fitting/storage/white_list.rb', line 132 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 ⇒ Object
140 141 142 143 144 145 146 147 148 149 150 151 152 |
# File 'lib/fitting/storage/white_list.rb', line 140 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 ⇒ Object
55 56 57 58 59 |
# File 'lib/fitting/storage/white_list.rb', line 55 def puts_warnings return nil if @warnings == [] warnings_string = @warnings.join("\n") puts "\n#{warnings_string}" end |
#request_hash(request) ⇒ Object
78 79 80 81 82 83 84 |
# File 'lib/fitting/storage/white_list.rb', line 78 def request_hash(request) array = request.split(' ') { method: array[0], path: Tomograph::Path.new(array[1]).to_s } end |
#requests(resource, all_requests) ⇒ Object
61 62 63 64 65 66 67 68 |
# File 'lib/fitting/storage/white_list.rb', line 61 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) ⇒ Object
39 40 41 42 43 44 45 46 |
# File 'lib/fitting/storage/white_list.rb', line 39 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 ⇒ Object
16 17 18 19 20 21 22 23 24 25 26 27 28 |
# 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 = {} if @include_resources @white_list.merge!(new_transformation) end if @include_actions @white_list.merge!(postnew_transformation) end @white_list end |
#transformation ⇒ Object
70 71 72 73 74 75 76 |
# File 'lib/fitting/storage/white_list.rb', line 70 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 ⇒ Object
30 31 32 33 34 35 36 37 |
# File 'lib/fitting/storage/white_list.rb', line 30 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 |