Add route and controller for incoming messages
This commit is contained in:
parent
2f23938e81
commit
70005468c6
25
app/controllers/messages_controller.rb
Normal file
25
app/controllers/messages_controller.rb
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
class MessagesController < ApplicationController
|
||||||
|
allow_unauthenticated_access
|
||||||
|
skip_before_action :verify_authenticity_token
|
||||||
|
|
||||||
|
def create
|
||||||
|
skip_authorization
|
||||||
|
|
||||||
|
@message_params = message_params
|
||||||
|
@contest = Contest.find_by_token_for(:token, params[:token])
|
||||||
|
@message = Message.new(text: params[:text], time_seconds: params[:time_seconds], contest: @contest)
|
||||||
|
if @contest && @message.save
|
||||||
|
respond_to do |format|
|
||||||
|
format.json { render json: {}, status: 200 }
|
||||||
|
end
|
||||||
|
else
|
||||||
|
respond_to do |format|
|
||||||
|
format.json { render json: { error: "invalid contest token" }, status: 400 }
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def message_params
|
||||||
|
params.expect(message: [ :text, :time_seconds, :token ])
|
||||||
|
end
|
||||||
|
end
|
@ -27,8 +27,11 @@ class Contest < ApplicationRecord
|
|||||||
has_many :completions, dependent: :destroy
|
has_many :completions, dependent: :destroy
|
||||||
has_many :contestants, dependent: :destroy
|
has_many :contestants, dependent: :destroy
|
||||||
has_many :puzzles, dependent: :destroy
|
has_many :puzzles, dependent: :destroy
|
||||||
|
has_many :messages
|
||||||
|
|
||||||
friendly_id :name, use: :slugged
|
friendly_id :name, use: :slugged
|
||||||
|
|
||||||
validates :name, presence: true
|
validates :name, presence: true
|
||||||
|
|
||||||
|
generates_token_for :token
|
||||||
end
|
end
|
||||||
|
@ -17,5 +17,7 @@ Rails.application.routes.draw do
|
|||||||
resource :session
|
resource :session
|
||||||
resources :users
|
resources :users
|
||||||
|
|
||||||
|
post "message", to: "messages#create"
|
||||||
|
|
||||||
get "public/:id", to: "contests#scoreboard"
|
get "public/:id", to: "contests#scoreboard"
|
||||||
end
|
end
|
||||||
|
Loading…
x
Reference in New Issue
Block a user