summaryrefslogtreecommitdiff
path: root/app/controllers/static_config_controller.rb
diff options
context:
space:
mode:
authorjessib <jessib@riseup.net>2013-12-30 10:53:01 -0800
committerjessib <jessib@riseup.net>2013-12-30 10:53:01 -0800
commit62f31ab0358bc165c9a83806db1828365cb96572 (patch)
treee6c715c21723e54d2742bf97238e2e01abe8fc2a /app/controllers/static_config_controller.rb
parent314d6cce723558497165103658cbf013f1eb8e9a (diff)
parentf619178085d0c2729e275fa4f46f9cd981189d3e (diff)
Merge pull request #132 from elijh/feature/min-client-version
Return 'provider.json' via a controller
Diffstat (limited to 'app/controllers/static_config_controller.rb')
-rw-r--r--app/controllers/static_config_controller.rb24
1 files changed, 24 insertions, 0 deletions
diff --git a/app/controllers/static_config_controller.rb b/app/controllers/static_config_controller.rb
new file mode 100644
index 0000000..c669316
--- /dev/null
+++ b/app/controllers/static_config_controller.rb
@@ -0,0 +1,24 @@
+#
+# This controller is responsible for returning some static config files, such as /provider.json
+#
+class StaticConfigController < ActionController::Base
+
+ PROVIDER_JSON = File.join(Rails.root, 'config', 'provider', 'provider.json')
+
+ #
+ # return the provider.json, ensuring that the header X-Minimum-Client-Version is sent
+ # regardless if a 200 or 304 (not modified) response is sent.
+ #
+ def provider
+ response.headers["X-Minimum-Client-Version"] = APP_CONFIG[:minimum_client_version].to_s
+ if File.exists?(PROVIDER_JSON)
+ if stale?(:last_modified => File.mtime(PROVIDER_JSON))
+ response.content_type = 'application/json'
+ render :text => File.read(PROVIDER_JSON)
+ end
+ else
+ render :text => 'not found', :status => 404
+ end
+ end
+
+end \ No newline at end of file