From 42422dcc6aab156cc3e89c75c7ed2a71c715b169 Mon Sep 17 00:00:00 2001
From: Douwe Maan <douwe@gitlab.com>
Date: Sat, 7 Feb 2015 16:41:30 +0100
Subject: [PATCH] Add internal broadcast message API.

---
 lib/api/entities.rb                |  4 +++
 lib/api/internal.rb                |  8 ++++++
 spec/requests/api/internal_spec.rb | 45 ++++++++++++++++++++++--------
 3 files changed, 45 insertions(+), 12 deletions(-)

diff --git a/lib/api/entities.rb b/lib/api/entities.rb
index fa76a54c2d8..8d0664386b4 100644
--- a/lib/api/entities.rb
+++ b/lib/api/entities.rb
@@ -270,5 +270,9 @@ module API
     class Contributor < Grape::Entity
       expose :name, :email, :commits, :additions, :deletions
     end
+
+    class BroadcastMessage < Grape::Entity
+      expose :message, :starts_at, :ends_at, :color, :font
+    end
   end
 end
diff --git a/lib/api/internal.rb b/lib/api/internal.rb
index 7a89a26facc..b5542c1874b 100644
--- a/lib/api/internal.rb
+++ b/lib/api/internal.rb
@@ -69,6 +69,14 @@ module API
           gitlab_rev: Gitlab::REVISION,
         }
       end
+
+      get "/broadcast_message" do
+        if message = BroadcastMessage.current
+          present message, with: Entities::BroadcastMessage
+        else
+          not_found!
+        end
+      end
     end
   end
 end
diff --git a/spec/requests/api/internal_spec.rb b/spec/requests/api/internal_spec.rb
index 4faa1f9b964..1e8e9eb38d6 100644
--- a/spec/requests/api/internal_spec.rb
+++ b/spec/requests/api/internal_spec.rb
@@ -16,6 +16,27 @@ describe API::API, api: true  do
     end
   end
 
+  describe "GET /internal/broadcast_message" do
+    context "broadcast message exists" do
+      let!(:broadcast_message) { create(:broadcast_message, starts_at: Time.now.yesterday, ends_at: Time.now.tomorrow ) }
+
+      it do
+        get api("/internal/broadcast_message"), secret_token: secret_token
+
+        response.status.should == 200
+        json_response["message"].should == broadcast_message.message
+      end
+    end
+
+    context "broadcast message doesn't exist" do
+      it do
+        get api("/internal/broadcast_message"), secret_token: secret_token
+
+        response.status.should == 404
+      end
+    end
+  end
+
   describe "GET /internal/discover" do
     it do
       get(api("/internal/discover"), key_id: key.id, secret_token: secret_token)
@@ -37,7 +58,7 @@ describe API::API, api: true  do
           pull(key, project)
 
           response.status.should == 200
-          JSON.parse(response.body)["status"].should be_true
+          json_response["status"].should be_true
         end
       end
 
@@ -46,7 +67,7 @@ describe API::API, api: true  do
           push(key, project)
 
           response.status.should == 200
-          JSON.parse(response.body)["status"].should be_true
+          json_response["status"].should be_true
         end
       end
     end
@@ -61,7 +82,7 @@ describe API::API, api: true  do
           pull(key, project)
 
           response.status.should == 200
-          JSON.parse(response.body)["status"].should be_false
+          json_response["status"].should be_false
         end
       end
 
@@ -70,7 +91,7 @@ describe API::API, api: true  do
           push(key, project)
 
           response.status.should == 200
-          JSON.parse(response.body)["status"].should be_false
+          json_response["status"].should be_false
         end
       end
     end
@@ -87,7 +108,7 @@ describe API::API, api: true  do
           pull(key, personal_project)
 
           response.status.should == 200
-          JSON.parse(response.body)["status"].should be_false
+          json_response["status"].should be_false
         end
       end
 
@@ -96,7 +117,7 @@ describe API::API, api: true  do
           push(key, personal_project)
 
           response.status.should == 200
-          JSON.parse(response.body)["status"].should be_false
+          json_response["status"].should be_false
         end
       end
     end
@@ -114,7 +135,7 @@ describe API::API, api: true  do
           pull(key, project)
 
           response.status.should == 200
-          JSON.parse(response.body)["status"].should be_true
+          json_response["status"].should be_true
         end
       end
 
@@ -123,7 +144,7 @@ describe API::API, api: true  do
           push(key, project)
 
           response.status.should == 200
-          JSON.parse(response.body)["status"].should be_false
+          json_response["status"].should be_false
         end
       end
     end
@@ -140,7 +161,7 @@ describe API::API, api: true  do
           archive(key, project)
 
           response.status.should == 200
-          JSON.parse(response.body)["status"].should be_true
+          json_response["status"].should be_true
         end
       end
 
@@ -149,7 +170,7 @@ describe API::API, api: true  do
           archive(key, project)
 
           response.status.should == 200
-          JSON.parse(response.body)["status"].should be_false
+          json_response["status"].should be_false
         end
       end
     end
@@ -159,7 +180,7 @@ describe API::API, api: true  do
         pull(key, OpenStruct.new(path_with_namespace: 'gitlab/notexists'))
 
         response.status.should == 200
-        JSON.parse(response.body)["status"].should be_false
+        json_response["status"].should be_false
       end
     end
 
@@ -168,7 +189,7 @@ describe API::API, api: true  do
         pull(OpenStruct.new(id: 0), project)
 
         response.status.should == 200
-        JSON.parse(response.body)["status"].should be_false
+        json_response["status"].should be_false
       end
     end
   end
-- 
GitLab