| 
									
										
										
										
											2019-03-03 22:18:23 +01:00
										 |  |  | # frozen_string_literal: true | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class Api::V1::PollsController < Api::BaseController | 
					
						
							| 
									
										
										
										
											2019-06-04 20:10:26 +02:00
										 |  |  |   include Authorization | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-03-03 22:18:23 +01:00
										 |  |  |   before_action -> { authorize_if_got_token! :read, :'read:statuses' }, only: :show | 
					
						
							| 
									
										
										
										
											2019-06-04 20:10:26 +02:00
										 |  |  |   before_action :set_poll | 
					
						
							|  |  |  |   before_action :refresh_poll | 
					
						
							| 
									
										
										
										
											2019-03-03 22:18:23 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |   respond_to :json | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def show | 
					
						
							| 
									
										
										
										
											2019-06-04 20:10:26 +02:00
										 |  |  |     render json: @poll, serializer: REST::PollSerializer, include_results: true | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   private | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def set_poll | 
					
						
							| 
									
										
										
										
											2019-03-03 22:18:23 +01:00
										 |  |  |     @poll = Poll.attached.find(params[:id]) | 
					
						
							| 
									
										
										
										
											2019-06-04 20:10:26 +02:00
										 |  |  |     authorize @poll.status, :show? | 
					
						
							|  |  |  |   rescue Mastodon::NotPermittedError | 
					
						
							|  |  |  |     raise ActiveRecord::RecordNotFound | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def refresh_poll | 
					
						
							| 
									
										
										
										
											2019-03-03 22:18:23 +01:00
										 |  |  |     ActivityPub::FetchRemotePollService.new.call(@poll, current_account) if user_signed_in? && @poll.possibly_stale? | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | end |