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
44 45 46 47 48 49 |
# 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) ⇒ Object
121 122 123 124 125 126 |
# 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) ⇒ Object
112 113 114 115 116 117 118 119 |
# 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) ⇒ Object
107 108 109 110 |
# 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 ⇒ Object
82 83 84 85 86 87 88 89 90 91 92 |
# 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 ⇒ Object
94 95 96 97 98 99 100 101 102 103 104 105 |
# 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 ⇒ Object
128 129 130 131 132 133 134 |
# 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 ⇒ Object
136 137 138 139 140 141 142 143 144 145 146 147 148 |
# 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 ⇒ Object
51 52 53 54 55 |
# 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) ⇒ Object
74 75 76 77 78 79 80 |
# 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) ⇒ Object
57 58 59 60 61 62 63 64 |
# 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) ⇒ Object
35 36 37 38 39 40 41 42 |
# 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 ⇒ Object
16 17 18 19 20 21 22 23 24 |
# 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 ⇒ Object
66 67 68 69 70 71 72 |
# 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 ⇒ Object
26 27 28 29 30 31 32 33 |
# 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 |