summaryrefslogtreecommitdiff
path: root/app/models/service_level.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/models/service_level.rb')
-rw-r--r--app/models/service_level.rb46
1 files changed, 46 insertions, 0 deletions
diff --git a/app/models/service_level.rb b/app/models/service_level.rb
new file mode 100644
index 0000000..a8df55b
--- /dev/null
+++ b/app/models/service_level.rb
@@ -0,0 +1,46 @@
+class ServiceLevel
+
+ def initialize(attributes = {})
+ @id = attributes[:id] || APP_CONFIG[:default_service_level]
+ end
+
+ def self.select_options
+ APP_CONFIG[:service_levels].map do |id,config_hash|
+ [config_hash[:description], id]
+ end
+ end
+
+ def id
+ @id
+ end
+
+ delegate :to_json, to: :config_hash
+
+ def cert_prefix
+ if limited_cert?
+ APP_CONFIG[:limited_cert_prefix]
+ elsif APP_CONFIG[:allow_unlimited_certs]
+ APP_CONFIG[:unlimited_cert_prefix]
+ end
+ end
+
+ def provides?(service)
+ services.include? service
+ end
+
+ def services
+ config_hash[:services] || []
+ end
+
+ protected
+
+ def limited_cert?
+ APP_CONFIG[:allow_limited_certs] &&
+ (!APP_CONFIG[:allow_unlimited_certs] || config_hash[:eip_rate_limit])
+ end
+
+ def config_hash
+ @config_hash || APP_CONFIG[:service_levels][@id].with_indifferent_access
+ end
+
+end