From 24d1ac125c6ae719b3d119f2ec0079dcd74eadc2 Mon Sep 17 00:00:00 2001
From: Alexander Strizhakov <alex.strizhakov@gmail.com>
Date: Tue, 3 Mar 2020 13:24:19 +0300
Subject: [PATCH] hiding raise error logic to otp_version module

---
 lib/pleroma/application.ex | 23 ++++-------------------
 lib/pleroma/otp_version.ex | 20 ++++++++++++++++++++
 2 files changed, 24 insertions(+), 19 deletions(-)

diff --git a/lib/pleroma/application.ex b/lib/pleroma/application.ex
index 9b228d6b9..d0b9c3c41 100644
--- a/lib/pleroma/application.ex
+++ b/lib/pleroma/application.ex
@@ -42,6 +42,10 @@ def start(_type, _args) do
     setup_instrumenters()
     load_custom_modules()
 
+    if adapter() == Tesla.Adapter.Gun do
+      Pleroma.OTPVersion.check!()
+    end
+
     # Define workers and child supervisors to be supervised
     children =
       [
@@ -66,25 +70,6 @@ def start(_type, _args) do
           Pleroma.Gopher.Server
         ]
 
-    if adapter() == Tesla.Adapter.Gun do
-      case Pleroma.OTPVersion.check() do
-        :ok ->
-          :ok
-
-        {:error, version} ->
-          raise "
-            !!!OTP VERSION WARNING!!!
-            You are using gun adapter with OTP version #{version}, which doesn't support correct handling of unordered certificates chains.
-            "
-
-        :undefined ->
-          raise "
-            !!!OTP VERSION WARNING!!!
-            To support correct handling of unordered certificates chains - OTP version must be > 22.2.
-            "
-      end
-    end
-
     # See http://elixir-lang.org/docs/stable/elixir/Supervisor.html
     # for other strategies and supported options
     opts = [strategy: :one_for_one, name: Pleroma.Supervisor]
diff --git a/lib/pleroma/otp_version.ex b/lib/pleroma/otp_version.ex
index 54ceaff47..9ced2d27d 100644
--- a/lib/pleroma/otp_version.ex
+++ b/lib/pleroma/otp_version.ex
@@ -5,6 +5,26 @@
 defmodule Pleroma.OTPVersion do
   @type check_status() :: :ok | :undefined | {:error, String.t()}
 
+  @spec check!() :: :ok | no_return()
+  def check! do
+    case check() do
+      :ok ->
+        :ok
+
+      {:error, version} ->
+        raise "
+            !!!OTP VERSION WARNING!!!
+            You are using gun adapter with OTP version #{version}, which doesn't support correct handling of unordered certificates chains.
+            "
+
+      :undefined ->
+        raise "
+            !!!OTP VERSION WARNING!!!
+            To support correct handling of unordered certificates chains - OTP version must be > 22.2.
+            "
+    end
+  end
+
   @spec check() :: check_status()
   def check do
     # OTP Version https://erlang.org/doc/system_principles/versions.html#otp-version