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

aradzinski pushed a commit to branch NLPCRAFT-156
in repository https://gitbox.apache.org/repos/asf/incubator-nlpcraft.git


The following commit(s) were added to refs/heads/NLPCRAFT-156 by this push:
     new ec74be5  Fix for NLPCRAFT-156 and NLPCRAFT-157.
ec74be5 is described below

commit ec74be5065d624291644ff935500ee9188fc45d9
Author: Aaron Radzinski <[email protected]>
AuthorDate: Fri Oct 16 01:08:01 2020 -0700

    Fix for NLPCRAFT-156 and NLPCRAFT-157.
---
 .../org/apache/nlpcraft/common/util/NCUtils.scala  | 36 ++++++++++++++++++++++
 .../nlpcraft/model/tools/cmdline/NCCli.scala       | 18 ++++++++---
 .../org/apache/nlpcraft/probe/NCProbeBoot.scala    |  2 +-
 .../org/apache/nlpcraft/server/NCServer.scala      |  2 +-
 .../nlpcraft/server/rest/NCBasicRestApi.scala      | 12 ++++----
 5 files changed, 58 insertions(+), 12 deletions(-)

diff --git 
a/nlpcraft/src/main/scala/org/apache/nlpcraft/common/util/NCUtils.scala 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/common/util/NCUtils.scala
index 7890583..15a5c38 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/common/util/NCUtils.scala
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/common/util/NCUtils.scala
@@ -48,9 +48,13 @@ import org.apache.commons.io.IOUtils
 import org.apache.nlpcraft.common._
 import org.apache.nlpcraft.common.ansi.NCAnsi._
 import org.apache.nlpcraft.common.blowfish.NCBlowfishHasher
+import org.apache.nlpcraft.common.version.NCVersion
 import org.jsoup.Jsoup
 import org.jsoup.nodes.Document
 import resource._
+import java.net.http.HttpClient
+import java.net.http.HttpRequest
+import java.net.http.HttpResponse
 
 import scala.annotation.tailrec
 import scala.collection.JavaConverters._
@@ -1265,6 +1269,38 @@ object NCUtils extends LazyLogging {
         Option(scala.util.Try { Jsoup.connect(url).get() } getOrElse null)
 
     /**
+     * Records GA screen view event. Ignores any errors.
+     *
+     * @param cd Content description for GA measurement protocol.
+     */
+    def gaScreenView(cd: String): Unit =
+        try
+            HttpClient.newHttpClient.send(
+                HttpRequest.newBuilder()
+                    .uri(
+                        URI.create("http://www.google-analytics.com/collect";)
+                    )
+                    .POST(
+                        HttpRequest.BodyPublishers.ofString(
+                            s"v=1&" +
+                                s"t=screenview&" +
+                                s"tid=UA-180663034-1&" + // 
'nlpcraft.apache.org' web property.
+                                s"cid=555&" + // Hide any user information 
(anonymous user).
+                                s"aip=&" + // Hide user IP (anonymization).
+                                s"an=nlpcraft&" +
+                                s"av=${NCVersion.getCurrent.version}&" +
+                                s"aid=org.apache.nlpcraft&" +
+                                s"cd=$cd"
+                        )
+                    )
+                    .build(),
+                HttpResponse.BodyHandlers.ofString()
+            )
+        catch {
+            case _: Exception ⇒ () // Ignore.
+        }
+
+    /**
       * Formats given double number with provided precision.
       *
       * @param num Number to format.
diff --git 
a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/tools/cmdline/NCCli.scala 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/tools/cmdline/NCCli.scala
index 856e21a..a39434d 100644
--- 
a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/tools/cmdline/NCCli.scala
+++ 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/tools/cmdline/NCCli.scala
@@ -1885,8 +1885,19 @@ object NCCli extends App {
         if (state.accessToken.nonEmpty)
             error("Already signed in.")
         else {
-            val email = args.find(_.parameter.id == 
"email").getOrElse("[email protected]")
-            val passwd = args.find(_.parameter.id == 
"passwd").getOrElse("admin")
+            val email = args.find(_.parameter.id == 
"email").flatMap(_.value).getOrElse("[email protected]")
+            val passwd = args.find(_.parameter.id == 
"passwd").flatMap(_.value).getOrElse("admin")
+
+            httpRest(
+                cmd,
+                "signin",
+                s"""
+                   |{
+                   |"email": "$email",
+                   |"passwd": "$passwd"
+                   |}
+                   |""".stripMargin
+            )
         }
     }
 
@@ -2635,10 +2646,9 @@ object NCCli extends App {
      * @param args
      */
     private def boot(args: Array[String]): Unit = {
-        // Check version.
         new Thread() {
             override def run(): Unit = {
-                
System.out.println(U.getUrlDocument("https://nlpcraft.apache.org/vercheck/cli.html";))
+                U.gaScreenView("cli")
             }
         }
         .start()
diff --git 
a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/NCProbeBoot.scala 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/NCProbeBoot.scala
index e5d10c7..2de029f 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/NCProbeBoot.scala
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/NCProbeBoot.scala
@@ -171,7 +171,7 @@ private [probe] object NCProbeBoot extends LazyLogging with 
NCOpenCensusTrace {
     private def start0(cfg: ProbeConfig, fut: CompletableFuture[Integer]): 
Unit = {
         // Check version.
         new Thread() {
-            override def run(): Unit = 
U.getUrlDocument("https://nlpcraft.apache.org/vercheck/probe.html";)
+            override def run(): Unit = U.gaScreenView("probe")
         }
         .start()
 
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/server/NCServer.scala 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/server/NCServer.scala
index f47fd13..99b231d 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/server/NCServer.scala
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/server/NCServer.scala
@@ -352,7 +352,7 @@ object NCServer extends App with NCIgniteInstance with 
LazyLogging with NCOpenCe
 
     // Check version.
     new Thread() {
-        override def run(): Unit = 
U.getUrlDocument("https://nlpcraft.apache.org/vercheck/server.html";)
+        override def run(): Unit = U.gaScreenView("server")
     }
     .start()
 
diff --git 
a/nlpcraft/src/main/scala/org/apache/nlpcraft/server/rest/NCBasicRestApi.scala 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/server/rest/NCBasicRestApi.scala
index 126b25a..0f8416a 100644
--- 
a/nlpcraft/src/main/scala/org/apache/nlpcraft/server/rest/NCBasicRestApi.scala
+++ 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/server/rest/NCBasicRestApi.scala
@@ -68,17 +68,17 @@ class NCBasicRestApi extends NCRestApi with LazyLogging 
with NCOpenCensusTrace w
      * General control exception.
      * Note that these classes must be public because scala 2.11 internal 
errors (compilations problems).
      */
-    case class AccessTokenFailure(acsTkn: String) extends NCE(s"Unknown access 
token: $acsTkn")
-    case class SignInFailure(email: String) extends NCE(s"Invalid or unknown 
user credentials: $email")
+    case class AccessTokenFailure(acsTkn: String) extends NCE(s"Unknown or 
expired access token: $acsTkn")
+    case class SignInFailure(email: String) extends NCE(s"Invalid or unknown 
user email: $email")
     case class AdminRequired(email: String) extends NCE(s"Admin privileges 
required: $email")
     case class InvalidOperation(email: String) extends NCE(s"Invalid 
operation.")
     case class NotImplemented() extends NCE("Not implemented.")
 
     class InvalidArguments(msg: String) extends NCE(msg)
-    case class OutOfRangeField(fn: String, from: Number, to: Number) extends 
InvalidArguments(s"API field ($fn) value is out of range ($from, $to).")
-    case class TooLargeField(fn: String, max: Int) extends 
InvalidArguments(s"API field ($fn) value exceeded max length of $max.")
-    case class InvalidField(fn: String) extends InvalidArguments(s"API field 
invalid: $fn")
-    case class EmptyField(fn: String) extends InvalidArguments(s"API field 
cannot be empty: $fn")
+    case class OutOfRangeField(fn: String, from: Number, to: Number) extends 
InvalidArguments(s"Parameter ($fn) value is out of range ($from, $to).")
+    case class TooLargeField(fn: String, max: Int) extends 
InvalidArguments(s"Parameter ($fn) value exceeded max length of $max.")
+    case class InvalidField(fn: String) extends InvalidArguments(s"Parameter 
invalid: $fn")
+    case class EmptyField(fn: String) extends InvalidArguments(s"Parameter 
cannot be empty: $fn")
     case class InvalidExternalUserId(usrExtId: String) extends 
InvalidArguments(s"External user ID is invalid or unknown: $usrExtId")
     case class InvalidUserId(id: Long) extends InvalidArguments(s"User ID is 
invalid or unknown: $id")
     case class InvalidModelId(id: String) extends InvalidArguments(s"Unknown 
model ID: $id")

Reply via email to