31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
|
# File 'lib/magick/export_import.rb', line 31
def self.import(data, adapter_registry)
features = {}
data = JSON.parse(data) if data.is_a?(String)
Array(data).each do |feature_data|
name = feature_data['name'] || feature_data[:name]
next unless name
feature = Feature.new(
name,
adapter_registry,
type: (feature_data['type'] || feature_data[:type] || :boolean).to_sym,
status: (feature_data['status'] || feature_data[:status] || :active).to_sym,
default_value: feature_data['default_value'] || feature_data[:default_value],
description: feature_data['description'] || feature_data[:description]
)
if feature_data['value'] || feature_data[:value]
feature.set_value(feature_data['value'] || feature_data[:value])
end
if feature_data['targeting'] || feature_data[:targeting]
targeting = feature_data['targeting'] || feature_data[:targeting]
targeting.each do |type, values|
Array(values).each do |value|
case type.to_sym
when :user
feature.enable_for_user(value)
when :group
feature.enable_for_group(value)
when :role
feature.enable_for_role(value)
when :percentage_users
feature.enable_percentage_of_users(value)
when :percentage_requests
feature.enable_percentage_of_requests(value)
end
end
end
end
features[name.to_s] = feature
end
if defined?(Magick::Rails::Events) && Magick::Rails::Events.rails8?
Magick::Rails::Events.imported(format: format, feature_count: features.length)
end
features
end
|