Redirect segun viewer elegido en el .env
This commit is contained in:
@ -1,65 +1,86 @@
|
||||
defmodule ApiWeb.Redirect do
|
||||
use ApiWeb, :controller
|
||||
alias Api.Repo
|
||||
import Ecto.Query
|
||||
require Logger
|
||||
|
||||
def index(conn, %{"accession" => accession}) do
|
||||
def index(conn, %{"accession" => accession}) do
|
||||
Envar.load(".env")
|
||||
Envar.require_env_file(".env")
|
||||
|
||||
redirect = Envar.get("REDIRECT")
|
||||
|
||||
redirect_flag = Envar.get("REDIRECT")
|
||||
viewer = Envar.get("imViewer4")
|
||||
viewer_host = Envar.get("imViewer4_host")
|
||||
viewer_uid = Envar.get("imViewer4_uid")
|
||||
gethash = Envar.get("imViewer4_gethash")
|
||||
idsite = Envar.get("IDSITE")
|
||||
|
||||
Logger.info("parametros: #{inspect(accession)}")
|
||||
|
||||
if redirect == "TRUE" do
|
||||
case get_hash_v2(accession) do
|
||||
{:ok, hash} ->
|
||||
Logger.info("URL: https://estudio.informemedico.com.ar/#/#{idsite}/#{hash}")
|
||||
viewer = Envar.get("imViewer4")
|
||||
viewer_host = Envar.get("imViewer4_host")
|
||||
viewer_uid = Envar.get("imViewer4_uid")
|
||||
gethash = Envar.get("imViewer4_gethash")
|
||||
|
||||
if redirect_flag == "TRUE" do
|
||||
case viewer do
|
||||
# Nuevo viewer imViewer4
|
||||
"1" ->
|
||||
viewer_config = %{
|
||||
client_uuid: viewer_uid,
|
||||
gethash: gethash,
|
||||
imviewer4_domain: viewer_host
|
||||
client_uuid: viewer_uid,
|
||||
gethash: gethash,
|
||||
imviewer4_domain: viewer_host
|
||||
}
|
||||
|
||||
url = case viewer do
|
||||
"1" ->
|
||||
case open_imviewer4(viewer_config, studyidentifier, 172800, assigns) do
|
||||
{:ok, hash} ->
|
||||
"https://#{viewer_host}/imviewer4/viewer/#{viewer_uid}/" <> hash
|
||||
case open_imviewer4(viewer_config, accession, 172800) do
|
||||
{:ok, hash} ->
|
||||
url = "https://#{viewer_host}/imviewer4/viewer/#{viewer_uid}/#{hash}"
|
||||
Logger.info("Redirect -> #{url}")
|
||||
redirect(conn, external: url)
|
||||
|
||||
{:error, reason} ->
|
||||
Logger.error("No se pudo obtener el hash para ImViewer4: #{inspect(reason)}")
|
||||
"https://#{viewer_host}/imviewer4/viewer/#{viewer_uid}/error"
|
||||
end
|
||||
"0" -> "https://estudio.informemedico.com.ar/#/#{idsite}/" <> hash
|
||||
{:error, reason} ->
|
||||
Logger.error("No se pudo obtener hash: #{inspect(reason)}")
|
||||
text(conn, "Error al obtener hash: #{inspect(reason)}")
|
||||
end
|
||||
|
||||
# url = "https://estudio.informemedico.com.ar/#/#{idsite}/" <> hash
|
||||
redirect(conn, external: url)
|
||||
# Viewer viejo
|
||||
"0" ->
|
||||
case get_hash_v2(accession) do
|
||||
{:ok, hash} ->
|
||||
url = "https://estudio.informemedico.com.ar/#/#{idsite}/" <> hash
|
||||
Logger.info("Redirect -> #{url}")
|
||||
redirect(conn, external: url)
|
||||
|
||||
{:error, error_msg} ->
|
||||
text(conn, "Error al obtener hash: #{error_msg}")
|
||||
{:error, error_msg} ->
|
||||
text(conn, "Error al obtener hash: #{error_msg}")
|
||||
end
|
||||
|
||||
# Default / mal configurado
|
||||
_ ->
|
||||
text(conn, "Error: configuración de viewer inválida")
|
||||
end
|
||||
else
|
||||
text(conn, "Error 404")
|
||||
end
|
||||
end
|
||||
|
||||
# ---- Helpers ----
|
||||
defp get_hash_v2(accession) do
|
||||
Logger.info("parametros:\n #{inspect(accession)}")
|
||||
hash = ApiWeb.GetHash.get_hash(accession)
|
||||
|
||||
if hash == "nil" do
|
||||
{:error, "Estudio no encontrado"}
|
||||
else
|
||||
{:ok, hash}
|
||||
end
|
||||
end
|
||||
|
||||
defp open_imviewer4(v, accession, expiration) do
|
||||
url = v.gethash <> v.client_uuid
|
||||
|
||||
case Req.post(url, json: %{"accessionnumber" => accession, "expiration" => expiration}) do
|
||||
{:ok, %Req.Response{status: 200, body: %{"hash" => hash}}} ->
|
||||
{:ok, hash}
|
||||
|
||||
{:ok, %Req.Response{status: status, body: body}} ->
|
||||
{:error, {:unexpected_response, status, body}}
|
||||
|
||||
{:error, reason} ->
|
||||
{:error, {:request_failed, reason}}
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user