agregamos redirect.ex y refactorizamos get_hash.ex en controller
This commit is contained in:
		| @ -7,6 +7,7 @@ defmodule ApiWeb.GetHash do | ||||
|   # El token fue generado con generate_token(%{password: "1nf0rm3"}) | ||||
|   @valid_token "XHhlNmU3Y2RmYjAyOGZhNWM5NjVhZGNkOTNhOTQ0NDRkYmYwMWFkM2U3YjQ1NjE1YzU1ZDg0ZjlmMDQzNDRmNTUw" | ||||
|  | ||||
|  | ||||
|   def index(conn, %{"study" => accessionnumber}) do | ||||
|     Envar.load(".env") | ||||
|     Envar.require_env_file(".env") | ||||
| @ -16,7 +17,25 @@ defmodule ApiWeb.GetHash do | ||||
|       |> put_status(:unauthorized) | ||||
|       |> json(%{error: "Token inválido o ausente"}) | ||||
|     else | ||||
|  | ||||
|       Logger.info("Accession get hash -> #{accessionnumber}") | ||||
|         hash = get_hash(accessionnumber) | ||||
|         if hash == "nil" do | ||||
|        | ||||
|           conn | ||||
|           |> put_status(:not_found) | ||||
|           |> json(%{error: "Estudio no encontrado"}) | ||||
|         else | ||||
|          | ||||
|           conn | ||||
|           |> put_status(:ok) | ||||
|           |> json(%{hash: hash}) | ||||
|  | ||||
|         end | ||||
|     end | ||||
|   end | ||||
|  | ||||
|     def get_hash(accessionnumber) do | ||||
|  | ||||
|       studyidentifier = Envar.get("IDENTIFIERFIELD") || "IDSTUDY" | ||||
|  | ||||
| @ -45,10 +64,7 @@ defmodule ApiWeb.GetHash do | ||||
|  | ||||
|       case Repo.one(query) do | ||||
|         nil -> | ||||
|           conn | ||||
|           |> put_status(:not_found) | ||||
|           |> json(%{error: "Estudio no encontrado"}) | ||||
|  | ||||
|           "nil" | ||||
|         res -> | ||||
|           vencimiento = DateTime.add(DateTime.utc_now(), 2 * 24 * 60 * 60, :second) | ||||
|  | ||||
| @ -56,13 +72,11 @@ defmodule ApiWeb.GetHash do | ||||
|  | ||||
|           token = generate_token(json_data) | ||||
|  | ||||
|           conn | ||||
|           |> put_status(:ok) | ||||
|           |> json(%{hash: token}) | ||||
|       end | ||||
|     end | ||||
|  | ||||
|   end | ||||
|  | ||||
|  | ||||
|   def generate_token(json) do | ||||
|     json_string = Jason.encode!(json) | ||||
|     query = "select encrypt('#{json_string}'::bytea, '1nf0rm3', 'aes')::text" | ||||
|  | ||||
							
								
								
									
										44
									
								
								lib/api_web/controllers/redirect.ex
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								lib/api_web/controllers/redirect.ex
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,44 @@ | ||||
| defmodule ApiWeb.Redirect do | ||||
|   use ApiWeb, :controller | ||||
|   alias Api.Repo | ||||
|   import Ecto.Query | ||||
|   require Logger | ||||
|  | ||||
|  | ||||
|    def index(conn, %{"accession" => accession}) do | ||||
|     Envar.load(".env") | ||||
|     Envar.require_env_file(".env") | ||||
|  | ||||
|     redirect = Envar.get("REDIRECT") | ||||
|     Logger.info("parametros: #{inspect(accession)}") | ||||
|      | ||||
|     | ||||
|     if redirect == "TRUE"  do | ||||
|       hash = case get_hash_v2(accession) do | ||||
|          {:ok, hash} -> | ||||
|               | ||||
|           url = "https://estudio.informemedico.com.ar/#/191/" <> hash | ||||
|            | ||||
|         {:error, error_msg} -> | ||||
|         text(conn, "Error al obtener hash: #{error_msg}") | ||||
|          | ||||
|          end | ||||
|        redirect(conn, external: hash) | ||||
|       else | ||||
|         text(conn, "Error 404") | ||||
|      end | ||||
|    end | ||||
|  | ||||
|    defp get_hash_v2(accession) do | ||||
|     | ||||
|      hash = ApiWeb.GetHash.get_hash(accession) | ||||
|      if hash == "nil" do | ||||
|        {:error, "Estudio no encontrado"} | ||||
|      else | ||||
|        {:ok, hash} | ||||
|      end | ||||
|    end | ||||
|  | ||||
| end | ||||
|  | ||||
|  | ||||
| @ -34,6 +34,7 @@ defmodule ApiWeb.Router do | ||||
|     post "/studies", StudiesController, :index | ||||
|     post "/sharestudy", ShareController, :index | ||||
|     get "/gethash/:study", GetHash, :index | ||||
|     get "/redirect/:accession", Redirect, :index | ||||
|     get "/study/:hash", StudyController, :index | ||||
|     get "/downloadpdf/:idstudyreport", DownloadpdfController, :index | ||||
|     get "/attachment/:idstudyattachment", AttachmentController, :index | ||||
|  | ||||
		Reference in New Issue
	
	Block a user