2019-09-05 18:56:24 +00:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
|
|
|
module Api
|
|
|
|
module V1
|
|
|
|
# API
|
|
|
|
class BaseController < ActionController::Base
|
2020-08-29 23:21:45 +00:00
|
|
|
include ExceptionHandler
|
|
|
|
|
2019-09-05 18:56:24 +00:00
|
|
|
protect_from_forgery with: :null_session
|
2019-09-06 23:40:33 +00:00
|
|
|
respond_to :json
|
2020-03-23 20:46:19 +00:00
|
|
|
|
|
|
|
private
|
|
|
|
|
2021-08-07 22:56:48 +00:00
|
|
|
# Por retrocompatibilidad con la forma en que estábamos
|
|
|
|
# gestionando los hostnames históricamente, necesitamos poder
|
|
|
|
# encontrar el sitio a partir de cualquiera de sus hostnames.
|
2020-05-30 19:43:25 +00:00
|
|
|
#
|
2021-08-07 22:56:48 +00:00
|
|
|
# Aunque en realidad con el hostname a partir del Origin nos
|
|
|
|
# bastaría.
|
|
|
|
#
|
|
|
|
# TODO: Generar API v2 que use solo el hostname y no haya que
|
|
|
|
# pasar site_id como parámetro redundante.
|
2020-05-30 19:43:25 +00:00
|
|
|
def site_id
|
2021-08-07 22:56:48 +00:00
|
|
|
@site_id ||= Deploy.where(hostname: params[:site_id]).pluck(:site_id).first
|
2020-05-30 19:43:25 +00:00
|
|
|
end
|
|
|
|
|
2021-07-29 13:53:54 +00:00
|
|
|
# Referer
|
|
|
|
#
|
|
|
|
# @see {https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referer}
|
|
|
|
# @return [String,Nil]
|
|
|
|
def referer
|
|
|
|
request.referer
|
|
|
|
end
|
|
|
|
alias referrer referer
|
|
|
|
|
|
|
|
# Origin
|
|
|
|
#
|
|
|
|
# @see {https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Origin}
|
|
|
|
# @return [String,Nil]
|
2020-03-23 20:46:19 +00:00
|
|
|
def origin
|
2021-07-29 13:53:54 +00:00
|
|
|
request.origin
|
|
|
|
end
|
|
|
|
|
|
|
|
# Genera un header Origin a partir del Referer si existe.
|
|
|
|
#
|
|
|
|
# @return [String,Nil]
|
|
|
|
def origin_from_referer
|
|
|
|
return if referer.blank?
|
|
|
|
|
|
|
|
referer.split('/', 4).tap { |u| u.pop if u.size > 3 }.join('/')
|
2020-03-23 20:46:19 +00:00
|
|
|
end
|
2020-09-28 21:46:55 +00:00
|
|
|
|
|
|
|
# Los navegadores antiguos no envían Origin
|
|
|
|
def origin?
|
|
|
|
!origin.blank?
|
|
|
|
end
|
2019-09-05 18:56:24 +00:00
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|