This is an automated email from the ASF dual-hosted git repository.

rzo1 pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/opennlp.git


The following commit(s) were added to refs/heads/main by this push:
     new 297dc9b2 OPENNLP-1697 - GH action fail because of 403 returned by 
sourceforge
297dc9b2 is described below

commit 297dc9b2b8611c8aed2b0bc262972027c04aa4d7
Author: Richard Zowalla <[email protected]>
AuthorDate: Fri Jan 17 13:55:32 2025 +0100

    OPENNLP-1697 - GH action fail because of 403 returned by sourceforge
---
 .../opennlp/tools/EnabledWhenCDNAvailable.java     | 30 ++++++++++++++++++----
 1 file changed, 25 insertions(+), 5 deletions(-)

diff --git 
a/opennlp-tools/src/test/java/opennlp/tools/EnabledWhenCDNAvailable.java 
b/opennlp-tools/src/test/java/opennlp/tools/EnabledWhenCDNAvailable.java
index ccba1b5d..fccc5526 100644
--- a/opennlp-tools/src/test/java/opennlp/tools/EnabledWhenCDNAvailable.java
+++ b/opennlp-tools/src/test/java/opennlp/tools/EnabledWhenCDNAvailable.java
@@ -22,6 +22,8 @@ import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.net.InetSocketAddress;
 import java.net.Socket;
+import java.net.URL;
+import javax.net.ssl.HttpsURLConnection;
 
 import org.junit.jupiter.api.extension.ConditionEvaluationResult;
 import org.junit.jupiter.api.extension.ExecutionCondition;
@@ -51,14 +53,32 @@ public @interface EnabledWhenCDNAvailable {
         final EnabledWhenCDNAvailable annotation = optional.get();
         final String host = annotation.hostname();
         try (Socket socket = new Socket()) {
-          socket.connect(new InetSocketAddress(host, 80), TIMEOUT_MS);
-          return ConditionEvaluationResult.enabled("Resource (CDN) 
reachable.");
+          // First, try to establish a socket connection to ensure the host is 
reachable
+          socket.connect(new InetSocketAddress(host, 443), TIMEOUT_MS);
+
+          // Then, try to check the HTTP status by making an HTTPS request
+          final URL url = new URL("https://"; + host);
+          final HttpsURLConnection connection = (HttpsURLConnection) 
url.openConnection();
+          connection.setConnectTimeout(TIMEOUT_MS);
+          connection.setReadTimeout(TIMEOUT_MS);
+          int statusCode = connection.getResponseCode();
+
+          // If the HTTP status code indicates success (2xx range), return 
enabled
+          if (statusCode >= 200 && statusCode < 300) {
+            return ConditionEvaluationResult.enabled(
+                "Resource (CDN) reachable with status code: " + statusCode);
+          } else {
+            return ConditionEvaluationResult.disabled(
+                "Resource (CDN) reachable, but HTTP status code: " + 
statusCode);
+
+          }
         } catch (IOException e) {
-          // Unreachable, unresolvable or timeout
-          return ConditionEvaluationResult.disabled("Resource (CDN) 
unreachable.");
+          return ConditionEvaluationResult.disabled(
+              "Resource (CDN) unreachable.");
         }
       }
-      return ConditionEvaluationResult.enabled("Nothing annotated with 
DisabledWhenOffline.");
+      return ConditionEvaluationResult.enabled(
+          "Nothing annotated with EnabledWhenCDNAvailable.");
     }
   }
 

Reply via email to