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

jongyoul pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/zeppelin-site.git


The following commit(s) were added to refs/heads/master by this push:
     new 36d152073 Improving Task Delayed by the Delay Function with 
Async/Await during Maven Dependency Download (#22)
36d152073 is described below

commit 36d152073e64a544a9a493f421137e6464104a7d
Author: pythonstrup <pythonst...@gmail.com>
AuthorDate: Wed Oct 23 14:30:10 2024 +0900

    Improving Task Delayed by the Delay Function with Async/Await during Maven 
Dependency Download (#22)
---
 .../helium/lib/getBasicMavenArtifactInfo.js        | 407 ++++++++++-----------
 .../workflows/helium/lib/getMavenArtifactInfo.js   | 355 +++++++++---------
 2 files changed, 374 insertions(+), 388 deletions(-)

diff --git a/.github/workflows/helium/lib/getBasicMavenArtifactInfo.js 
b/.github/workflows/helium/lib/getBasicMavenArtifactInfo.js
index d038ac051..9c95bf5ee 100644
--- a/.github/workflows/helium/lib/getBasicMavenArtifactInfo.js
+++ b/.github/workflows/helium/lib/getBasicMavenArtifactInfo.js
@@ -6,12 +6,6 @@ import xml2jsImport from 'xml2js';
 
 const xml2js = Promise.promisifyAll(xml2jsImport);
 
-const zeppelinList = [];
-const pomUriList = [];
-const responseList = [];
-const bodyList = [];
-const finalArtifactList = [];
-
 function filterLessThanOneYear(standard) {
   const duration = moment.duration({ year: 1 });
   const oneYearAgo = moment().subtract(duration).format();
@@ -21,30 +15,33 @@ function filterLessThanOneYear(standard) {
 }
 
 async function searchOnlyZeppelinRelatedArtifact(uri) {
+  const zeppelinList = [];
   const options = {
     uri: uri,
     json: true,
   };
 
-  return fetch(uri).then(async (result) => {
-    const response = (await result.json()).response;
-    const body = response.docs;
+  const result = await fetch(uri);
+  const responseText = await result.text();
+  console.log(`Root URI: ${uri}`);
+  console.log(`Root URI Fetch Result: ${responseText}`);
+  const response = JSON.parse(responseText).response;
+  const body = response.docs;
 
-    for (const artifact in body) {
-      const artifactId = body[artifact].a;
-      const groupId = body[artifact].g;
-      let published = body[artifact].timestamp;
-      published = moment(published).format();
+  for (const artifact in body) {
+    const artifactId = body[artifact].a;
+    const groupId = body[artifact].g;
+    let published = body[artifact].timestamp;
+    published = moment(published).format();
 
-      if (filterLessThanOneYear(published)) {
-        zeppelinList.push({
-          groupId,
-          artifactId,
-        });
-      }
+    if (filterLessThanOneYear(published)) {
+      zeppelinList.push({
+        groupId,
+        artifactId,
+      });
     }
-    return zeppelinList;
-  });
+  }
+  return zeppelinList;
 }
 
 function createSlashedGroupId(groupId) {
@@ -59,7 +56,7 @@ function createSlashedGroupId(groupId) {
 }
 
 function createPomUrl(groupId, artifactId, version) {
-  const baseUri = 'http://repo1.maven.org/maven2/';
+  const baseUri = 'https://repo1.maven.org/maven2/';
   const slashedGroupId = createSlashedGroupId(groupId);
 
   if (slashedGroupId) {
@@ -71,214 +68,210 @@ function createPomUrl(groupId, artifactId, version) {
 
 async function getAllVersionInfo(zeppelinList) {
   // get all version of an artifact
-  return _.map(zeppelinList, function (resources) {
-    const baseUri =
-      'http://search.maven.org/solrsearch/select?q=g:%22' +
-      resources.groupId +
-      '%22+AND+a:%22' +
-      resources.artifactId +
-      '%22&core=gav&rows=20';
-    const options = {
-      uri: baseUri,
-      json: true,
-    };
+  return Promise.all(
+      zeppelinList.map(async (resources) => {
+        const baseUri =
+            'https://search.maven.org/solrsearch/select?q=g:%22' +
+            resources.groupId +
+            '%22+AND+a:%22' +
+            resources.artifactId +
+            '%22&core=gav&rows=20';
+        const options = {
+          uri: baseUri,
+          json: true,
+        };
 
-    return fetch(baseUri).then(async (result) => {
-      const response = (await result.json()).response;
-      const body = response.docs;
-      const pomUriListEachVer = {};
+        const result = await fetch(baseUri);
 
-      for (const ver in body) {
-        const artifactId = body[ver].a;
-        const groupId = body[ver].g.split('.');
-        const version = body[ver].v;
-        let published = body[ver].timestamp;
-        published = moment(published).format();
+        const responseText = await result.text();
+        console.log(`Base URI: ${baseUri}`);
+        console.log(`Base URI Fetch Result: ${responseText}`);
+        const response = JSON.parse(responseText).response;
+        const body = response.docs;
+        const pomUriListEachVer = {};
 
-        if (filterLessThanOneYear(published) && createSlashedGroupId(groupId)) 
{
-          const pomUri = createPomUrl(groupId, artifactId, version);
+        for (const ver in body) {
+          const artifactId = body[ver].a;
+          const groupId = body[ver].g.split('.');
+          const version = body[ver].v;
+          let published = body[ver].timestamp;
+          published = moment(published).format();
 
-          pomUriListEachVer[version] = {
-            artifactId,
-            version,
-            published,
-            pomUri,
-          };
+          if (filterLessThanOneYear(published) && 
createSlashedGroupId(groupId)) {
+            const pomUri = createPomUrl(groupId, artifactId, version);
+
+            pomUriListEachVer[version] = {
+              artifactId,
+              version,
+              published,
+              pomUri,
+            };
+          }
         }
-      }
-      pomUriList.push(pomUriListEachVer);
-      return pomUriList;
-    });
-  });
+        return pomUriListEachVer;
+      })
+  ).then((resolve) => resolve);
 }
 
-function getEachPomFileContent(pomUriList) {
-  return _.map(pomUriList, function (result) {
-    return Promise.all(
-      _.map(result, function (ver) {
-        const options = {
-          uri: ver.pomUri,
-        };
-        const artifactId = ver.artifactId;
-        const published = ver.published;
-        const version = ver.version;
+async function getEachPomFileContent(pomUriList) {
+  return Promise.all(
+      pomUriList.map(async function (result) {
+        return Promise.all(
+            _.map(result, async function (ver) {
+              const options = {
+                uri: ver.pomUri,
+              };
+              const artifactId = ver.artifactId;
+              const published = ver.published;
+              const version = ver.version;
 
-        const pomUri = ver.pomUri.replace('http', 'https');
-        return fetch(pomUri).then(async (result) => {
-          const response = await result.text();
+              const pomUri = ver.pomUri;
+              const result = await fetch(pomUri);
+              const response = await result.text();
+              console.log(`Pom URI: ${pomUri}`);
+              console.log(`Pom URI Fetch Result: ${response}`);
 
-          const eachVersionResponse = {
-            version: version,
-            artifactId: artifactId,
-            published: published,
-            response: response,
-          };
-          return eachVersionResponse;
-        });
+              const eachVersionResponse = {
+                version: version,
+                artifactId: artifactId,
+                published: published,
+                response: response,
+              };
+              return eachVersionResponse;
+            })
+        ).then((resolve) => resolve);
       })
-    ).then(function (result) {
-      responseList.push(result);
-    });
-  });
+  ).then((resolve) => resolve);
 }
 
-function parseXmlToJson(responseList) {
-  return _.map(responseList, function (response) {
-    return Promise.all(
-      _.map(response, function (ver) {
-        // parse each pom.xml to JSON format
-        return xml2js
-          .parseStringAsync(ver.response, { explicitArray: false })
-          .then(function (result) {
-            const projectDeps = result.project.dependencies;
-            const projectDepManages = result.project.dependencyManagement;
-            const name = result.project.artifactId;
-            const groupId = result.project.groupId
-              ? result.project.groupId
-              : result.project.parent.groupId;
-            const artifactId = result.project.artifactId;
-            const version = result.project.version
-              ? result.project.version
-              : result.project.parent.version;
-            const description = result.project.description
-              ? result.project.description
-              : result.project.name;
-            const published = ver.published;
+async function parseXmlToJson(responseList) {
+  return Promise.all(
+      _.map(responseList, async function (response) {
+        return Promise.all(
+            _.map(response, async function (ver) {
+              // parse each pom.xml to JSON format
+              const result = await xml2js.parseStringAsync(ver.response, { 
explicitArray: false });
+              const projectDeps = result.project.dependencies;
+              const projectDepManages = result.project.dependencyManagement;
+              const name = result.project.artifactId;
+              const groupId = result.project.groupId
+                  ? result.project.groupId
+                  : result.project.parent.groupId;
+              const artifactId = result.project.artifactId;
+              const version = result.project.version
+                  ? result.project.version
+                  : result.project.parent.version;
+              const description = result.project.description
+                  ? result.project.description
+                  : result.project.name;
+              const published = ver.published;
 
-            let dependencies;
-            if (projectDeps) {
-              dependencies = projectDeps.dependency;
-            } else if (projectDepManages) {
-              dependencies = projectDepManages.dependencies.dependency;
-            } else {
-              dependencies = undefined;
-            }
+              let dependencies;
+              if (projectDeps) {
+                dependencies = projectDeps.dependency;
+              } else if (projectDepManages) {
+                dependencies = projectDepManages.dependencies.dependency;
+              } else {
+                dependencies = undefined;
+              }
 
-            const eachVerBodyList = {
-              name: name,
-              groupId: groupId,
-              artifactId: artifactId,
-              version: version,
-              description: description,
-              published: published,
-              dependencies: dependencies,
-            };
-            return eachVerBodyList;
-          });
+              const eachVerBodyList = {
+                name: name,
+                groupId: groupId,
+                artifactId: artifactId,
+                version: version,
+                description: description,
+                published: published,
+                dependencies: dependencies,
+              };
+              return eachVerBodyList;
+            })
+        ).then((resolve) => resolve);
       })
-    ).then(function (result) {
-      bodyList.push(result);
-    });
-  });
+  ).then((resolve) => resolve);
 }
 
-function filterWithGivenArtifact(bodyList) {
-  return _.map(bodyList, function (version) {
-    return Promise.all(
-      _.map(version, function (dep, index) {
-        const type = 'INTERPRETER';
-        const license = 'Apache-2.0';
-        const icon = '<i class="fa fa-rocket"></i>';
-        const dependency = dep.dependencies;
-        const name = dep.name;
-        const groupId = dep.groupId;
-        const artifactId = dep.artifactId;
-        const version = index == 0 ? 'latest' : dep.version;
-        const artifact = artifactId + '@' + dep.version;
-        const description = dep.description ? dep.description : name;
-        const published = dep.published;
+async function filterWithGivenArtifact(bodyList) {
+  return Promise.all(
+      _.map(bodyList, async function (version) {
+        return Promise.all(
+            _.map(version, function (dep, index) {
+              const type = 'INTERPRETER';
+              const license = 'Apache-2.0';
+              const icon = '<i class="fa fa-rocket"></i>';
+              const dependency = dep.dependencies;
+              const name = dep.name;
+              const groupId = dep.groupId;
+              const artifactId = dep.artifactId;
+              const version = index == 0 ? 'latest' : dep.version;
+              const artifact = artifactId + '@' + dep.version;
+              const description = dep.description ? dep.description : name;
+              const published = dep.published;
 
-        const interpreters = [
-          'spark-interpreter',
-          'zeppelin-jupyter-interpreter',
-          'zeppelin-display',
-          'zeppelin-flink',
-          'spark-scala-',
-          'sap',
-          'spark1-shims',
-          'spark2-shims',
-          'spark3-shims',
-          'spark-scala-parent',
-          'spark-shims',
-          'zeppelin-beam',
-          'zeppelin-kylin',
-          'zeppelin-ignite_',
-          'zeppelin-flink_',
-          'zeppelin-lens',
-          'zeppelin-cassandra_',
-          'zeppelin-solr',
-          'zeppelin-viyadb',
-          'snappydata-zeppelin',
-        ];
-        const result = dependency
-          ? _.findWhere(dependency, { artifactId: 'zeppelin-interpreter' }) ||
-            interpreters.some((interpreter) => dep.name.includes(interpreter))
-          : undefined;
+              const interpreters = [
+                'spark-interpreter',
+                'zeppelin-jupyter-interpreter',
+                'zeppelin-display',
+                'zeppelin-flink',
+                'spark-scala-',
+                'sap',
+                'spark1-shims',
+                'spark2-shims',
+                'spark3-shims',
+                'spark-scala-parent',
+                'spark-shims',
+                'zeppelin-beam',
+                'zeppelin-kylin',
+                'zeppelin-ignite_',
+                'zeppelin-flink_',
+                'zeppelin-lens',
+                'zeppelin-cassandra_',
+                'zeppelin-solr',
+                'zeppelin-viyadb',
+                'snappydata-zeppelin',
+              ];
+              const result = dependency
+                  ? _.findWhere(dependency, { artifactId: 
'zeppelin-interpreter' }) ||
+                  interpreters.some((interpreter) => 
dep.name.includes(interpreter))
+                  : undefined;
 
-        return result
-          ? {
-              type: type,
-              name: name,
-              version: version,
-              published: published,
-              artifact: artifact,
-              description: description,
-              license: license,
-              icon: icon,
-              groupId: groupId,
-              artifactId: artifactId,
+              return result
+                  ? {
+                    type: type,
+                    name: name,
+                    version: version,
+                    published: published,
+                    artifact: artifact,
+                    description: description,
+                    license: license,
+                    icon: icon,
+                    groupId: groupId,
+                    artifactId: artifactId,
+                  }
+                  : undefined;
+            })
+        ).then((resultArtifact) => {
+          const resultByVersion = _.indexBy(_.omit(resultArtifact, 
_.isUndefined), 'version');
+          for (const key in resultByVersion) {
+            const obj = resultByVersion[key];
+            if (obj.version == 'latest') {
+              obj.version = obj.artifact.split('@')[1];
             }
-          : undefined;
+          }
+          return resultByVersion;
+        });
       })
-    ).then(function (result) {
-      const resultByVersion = _.indexBy(_.omit(result, _.isUndefined), 
'version');
-      for (const key in resultByVersion) {
-        const obj = resultByVersion[key];
-        if (obj.version == 'latest') {
-          obj.version = obj.artifact.split('@')[1];
-        }
-      }
-
-      finalArtifactList.push(resultByVersion);
-    });
-  });
+  ).then((resolve) => resolve);
 }
 
-const delay = (timeToDelay) => new Promise((resolve) => setTimeout(resolve, 
timeToDelay));
-const result = {};
-
 export async function getBasicMavenHandler(callback) {
-  const uri = 'http://search.maven.org/solrsearch/select?q=zeppelin&rows=200';
-  await searchOnlyZeppelinRelatedArtifact(uri);
-  await delay(5000);
-  await getAllVersionInfo(zeppelinList);
-  await delay(3000);
-  await getEachPomFileContent(pomUriList);
-  await delay(3000);
-  await parseXmlToJson(responseList);
-  await delay(3000);
-  await filterWithGivenArtifact(bodyList);
-  await delay(3000);
+  const result = {};
+  const uri = 'https://search.maven.org/solrsearch/select?q=zeppelin&rows=200';
+  const zeppelinList = await searchOnlyZeppelinRelatedArtifact(uri);
+  const pomUriList = await getAllVersionInfo(zeppelinList);
+  const responseList = await getEachPomFileContent(pomUriList);
+  const bodyList = await parseXmlToJson(responseList);
+  const finalArtifactList = await filterWithGivenArtifact(bodyList);
   _.map(finalArtifactList, function (artifact) {
     if (!_.isEmpty(artifact)) {
       for (const key in artifact) {
diff --git a/.github/workflows/helium/lib/getMavenArtifactInfo.js 
b/.github/workflows/helium/lib/getMavenArtifactInfo.js
index 5aa8e019e..c9da1f399 100644
--- a/.github/workflows/helium/lib/getMavenArtifactInfo.js
+++ b/.github/workflows/helium/lib/getMavenArtifactInfo.js
@@ -6,12 +6,6 @@ import xml2jsImport from 'xml2js';
 
 const xml2js = Promise.promisifyAll(xml2jsImport);
 
-const zeppelinList = [];
-const pomUriList = [];
-const responseList = [];
-const bodyList = [];
-const finalArtifactList = [];
-
 function filterLessThanOneYear(standard) {
   const duration = moment.duration({ year: 1 });
   const oneYearAgo = moment().subtract(duration).format();
@@ -21,30 +15,33 @@ function filterLessThanOneYear(standard) {
 }
 
 async function searchOnlyZeppelinRelatedArtifact(uri) {
+  const zeppelinList = [];
   const options = {
     uri: uri,
     json: true,
   };
 
-  return fetch(uri).then(async (result) => {
-    const response = (await result.json()).response;
-    const body = response.docs;
+  const result = await fetch(uri);
+  const responseText = await result.text();
+  console.log(`Root URI: ${uri}`);
+  console.log(`Root URI Fetch Result: ${responseText}`);
+  const response = JSON.parse(responseText).response;
+  const body = response.docs;
 
-    for (const artifact in body) {
-      const artifactId = body[artifact].a;
-      const groupId = body[artifact].g;
-      let published = body[artifact].timestamp;
-      published = moment(published).format();
+  for (const artifact in body) {
+    const artifactId = body[artifact].a;
+    const groupId = body[artifact].g;
+    let published = body[artifact].timestamp;
+    published = moment(published).format();
 
-      if (filterLessThanOneYear(published)) {
-        zeppelinList.push({
-          groupId,
-          artifactId,
-        });
-      }
+    if (filterLessThanOneYear(published)) {
+      zeppelinList.push({
+        groupId,
+        artifactId,
+      });
     }
-    return zeppelinList;
-  });
+  }
+  return zeppelinList;
 }
 
 function createSlashedGroupId(groupId) {
@@ -59,7 +56,7 @@ function createSlashedGroupId(groupId) {
 }
 
 function createPomUrl(groupId, artifactId, version) {
-  const baseUri = 'http://repo1.maven.org/maven2/';
+  const baseUri = 'https://repo1.maven.org/maven2/';
   const slashedGroupId = createSlashedGroupId(groupId);
 
   if (slashedGroupId) {
@@ -71,170 +68,171 @@ function createPomUrl(groupId, artifactId, version) {
 
 async function getAllVersionInfo(zeppelinList) {
   // get all version of an artifact
-  return _.map(zeppelinList, function (resources) {
-    const baseUri =
-      'http://search.maven.org/solrsearch/select?q=g:%22' +
-      resources.groupId +
-      '%22+AND+a:%22' +
-      resources.artifactId +
-      '%22&core=gav&rows=20';
-    const options = {
-      uri: baseUri,
-      json: true,
-    };
+  return Promise.all(
+      zeppelinList.map(async (resources) => {
+        const baseUri =
+            'https://search.maven.org/solrsearch/select?q=g:%22' +
+            resources.groupId +
+            '%22+AND+a:%22' +
+            resources.artifactId +
+            '%22&core=gav&rows=20';
+        const options = {
+          uri: baseUri,
+          json: true,
+        };
 
-    return fetch(baseUri).then(async (result) => {
-      const response = (await result.json()).response;
-      const body = response.docs;
-      const pomUriListEachVer = {};
+        const result = await fetch(baseUri);
 
-      for (const ver in body) {
-        const artifactId = body[ver].a;
-        const groupId = body[ver].g.split('.');
-        const version = body[ver].v;
-        let published = body[ver].timestamp;
-        published = moment(published).format();
+        const responseText = await result.text();
+        console.log(`Base URI: ${baseUri}`);
+        console.log(`Base URI Fetch Result: ${responseText}`);
+        const response = JSON.parse(responseText).response;
+        const body = response.docs;
+        const pomUriListEachVer = {};
 
-        if (filterLessThanOneYear(published) && createSlashedGroupId(groupId)) 
{
-          const pomUri = createPomUrl(groupId, artifactId, version);
+        for (const ver in body) {
+          const artifactId = body[ver].a;
+          const groupId = body[ver].g.split('.');
+          const version = body[ver].v;
+          let published = body[ver].timestamp;
+          published = moment(published).format();
 
-          pomUriListEachVer[version] = {
-            artifactId,
-            version,
-            published,
-            pomUri,
-          };
+          if (filterLessThanOneYear(published) && 
createSlashedGroupId(groupId)) {
+            const pomUri = createPomUrl(groupId, artifactId, version);
+
+            pomUriListEachVer[version] = {
+              artifactId,
+              version,
+              published,
+              pomUri,
+            };
+          }
         }
-      }
-      pomUriList.push(pomUriListEachVer);
-      return pomUriList;
-    });
-  });
+        return pomUriListEachVer;
+      })
+  ).then((resolve) => resolve);
 }
 
-function getEachPomFileContent(pomUriList) {
-  return _.map(pomUriList, function (result) {
-    return Promise.all(
-      _.map(result, function (ver) {
-        const options = {
-          uri: ver.pomUri,
-        };
-        const artifactId = ver.artifactId;
-        const published = ver.published;
-        const version = ver.version;
+async function getEachPomFileContent(pomUriList) {
+  return Promise.all(
+      pomUriList.map(async function (result) {
+        return Promise.all(
+            _.map(result, async function (ver) {
+              const options = {
+                uri: ver.pomUri,
+              };
+              const artifactId = ver.artifactId;
+              const published = ver.published;
+              const version = ver.version;
 
-        const pomUri = ver.pomUri.replace('http', 'https');
-        return fetch(pomUri).then(async (result) => {
-          const response = await result.text();
+              const pomUri = ver.pomUri;
+              const result = await fetch(pomUri);
+              const response = await result.text();
+              console.log(`Pom URI: ${pomUri}`);
+              console.log(`Pom URI Fetch Result: ${response}`);
 
-          const eachVersionResponse = {
-            version: version,
-            artifactId: artifactId,
-            published: published,
-            response: response,
-          };
-          return eachVersionResponse;
-        });
+              const eachVersionResponse = {
+                version: version,
+                artifactId: artifactId,
+                published: published,
+                response: response,
+              };
+              return eachVersionResponse;
+            })
+        ).then((resolve) => resolve);
       })
-    ).then(function (result) {
-      responseList.push(result);
-    });
-  });
+  ).then((resolve) => resolve);
 }
 
-function parseXmlToJson(responseList) {
-  return _.map(responseList, function (response) {
-    return Promise.all(
-      _.map(response, function (ver) {
-        // parse each pom.xml to JSON format
-        return xml2js
-          .parseStringAsync(ver.response, { explicitArray: false })
-          .then(function (result) {
-            const projectDeps = result.project.dependencies;
-            const projectDepManages = result.project.dependencyManagement;
-            const name = result.project.artifactId;
-            const groupId = result.project.groupId
-              ? result.project.groupId
-              : result.project.parent.groupId;
-            const artifactId = result.project.artifactId;
-            const version = result.project.version
-              ? result.project.version
-              : result.project.parent.version;
-            const description = result.project.description
-              ? result.project.description
-              : result.project.name;
-            const published = ver.published;
+async function parseXmlToJson(responseList) {
+  return Promise.all(
+      _.map(responseList, async function (response) {
+        return Promise.all(
+            _.map(response, async function (ver) {
+              // parse each pom.xml to JSON format
+              const result = await xml2js.parseStringAsync(ver.response, { 
explicitArray: false });
+              const projectDeps = result.project.dependencies;
+              const projectDepManages = result.project.dependencyManagement;
+              const name = result.project.artifactId;
+              const groupId = result.project.groupId
+                  ? result.project.groupId
+                  : result.project.parent.groupId;
+              const artifactId = result.project.artifactId;
+              const version = result.project.version
+                  ? result.project.version
+                  : result.project.parent.version;
+              const description = result.project.description
+                  ? result.project.description
+                  : result.project.name;
+              const published = ver.published;
 
-            let dependencies;
-            if (projectDeps) {
-              dependencies = projectDeps.dependency;
-            } else if (projectDepManages) {
-              dependencies = projectDepManages.dependencies.dependency;
-            } else {
-              dependencies = undefined;
-            }
+              let dependencies;
+              if (projectDeps) {
+                dependencies = projectDeps.dependency;
+              } else if (projectDepManages) {
+                dependencies = projectDepManages.dependencies.dependency;
+              } else {
+                dependencies = undefined;
+              }
 
-            const eachVerBodyList = {
-              name: name,
-              groupId: groupId,
-              artifactId: artifactId,
-              version: version,
-              description: description,
-              published: published,
-              dependencies: dependencies,
-            };
-            return eachVerBodyList;
-          });
+              const eachVerBodyList = {
+                name: name,
+                groupId: groupId,
+                artifactId: artifactId,
+                version: version,
+                description: description,
+                published: published,
+                dependencies: dependencies,
+              };
+              return eachVerBodyList;
+            })
+        ).then((resolve) => resolve);
       })
-    ).then(function (result) {
-      bodyList.push(result);
-    });
-  });
+  ).then((resolve) => resolve);
 }
 
-function filterWithGivenArtifact(bodyList) {
-  return _.map(bodyList, function (version) {
-    return Promise.all(
-      _.map(version, function (dep, index) {
-        const type = 'INTERPRETER';
-        const license = 'Apache-2.0';
-        const icon = '<i class="fa fa-rocket"></i>';
-        const dependency = dep.dependencies;
-        const name = dep.name;
-        const groupId = dep.groupId;
-        const artifactId = dep.artifactId;
-        const version = index == 0 ? 'latest' : dep.version;
-        const artifact = artifactId + '@' + dep.version;
-        const description = dep.description ? dep.description : name;
-        const published = dep.published;
+async function filterWithGivenArtifact(bodyList) {
+  return Promise.all(
+      _.map(bodyList, async function (version) {
+        return Promise.all(
+            _.map(version, function (dep, index) {
+              const type = 'INTERPRETER';
+              const license = 'Apache-2.0';
+              const icon = '<i class="fa fa-rocket"></i>';
+              const dependency = dep.dependencies;
+              const name = dep.name;
+              const groupId = dep.groupId;
+              const artifactId = dep.artifactId;
+              const version = index == 0 ? 'latest' : dep.version;
+              const artifact = artifactId + '@' + dep.version;
+              const description = dep.description ? dep.description : name;
+              const published = dep.published;
 
-        return result
-          ? {
-              type: type,
-              name: name,
-              version: version,
-              published: published,
-              artifact: artifact,
-              description: description,
-              license: license,
-              icon: icon,
-              groupId: groupId,
-              artifactId: artifactId,
+              return {
+                type: type,
+                name: name,
+                version: version,
+                published: published,
+                artifact: artifact,
+                description: description,
+                license: license,
+                icon: icon,
+                groupId: groupId,
+                artifactId: artifactId,
+              };
+            })
+        ).then((artifactResult) => {
+          const resultByVersion = _.indexBy(_.omit(artifactResult, 
_.isUndefined), 'version');
+          for (const key in resultByVersion) {
+            const obj = resultByVersion[key];
+            if (obj.version == 'latest') {
+              obj.version = obj.artifact.split('@')[1];
             }
-          : undefined;
+          }
+          return resultByVersion;
+        });
       })
-    ).then(function (result) {
-      const resultByVersion = _.indexBy(_.omit(result, _.isUndefined), 
'version');
-      for (const key in resultByVersion) {
-        const obj = resultByVersion[key];
-        if (obj.version == 'latest') {
-          obj.version = obj.artifact.split('@')[1];
-        }
-      }
-
-      finalArtifactList.push(resultByVersion);
-    });
-  });
+  ).then((resolve) => resolve);
 }
 
 function getMavenUris() {
@@ -259,29 +257,24 @@ function getMavenUris() {
   ];
   const uris = [];
   for (const dependency of dependencies) {
-    const uri = 
`http://search.maven.org/solrsearch/select?q=${dependency}&rows=100`;
+    const uri = 
`https://search.maven.org/solrsearch/select?q=${dependency}&rows=100`;
     uris.push(uri);
   }
   return uris;
 }
 
-const delay = (timeToDelay) => new Promise((resolve) => setTimeout(resolve, 
timeToDelay));
-const result = [];
-
 export async function getMavenHandler(callback) {
+  const result = {};
   let mavenUris = getMavenUris();
+  const zeppelinList = [];
   for (const uri of mavenUris) {
-    await searchOnlyZeppelinRelatedArtifact(uri);
+    const artifacts = await searchOnlyZeppelinRelatedArtifact(uri);
+    zeppelinList.push(...artifacts);
   }
-  await delay(5000);
-  await getAllVersionInfo(zeppelinList);
-  await delay(4000);
-  await getEachPomFileContent(pomUriList);
-  await delay(4000);
-  await parseXmlToJson(responseList);
-  await delay(4000);
-  await filterWithGivenArtifact(bodyList);
-  await delay(4000);
+  const pomUriList = await getAllVersionInfo(zeppelinList);
+  const responseList = await getEachPomFileContent(pomUriList);
+  const bodyList = await parseXmlToJson(responseList);
+  const finalArtifactList = await filterWithGivenArtifact(bodyList);
   _.map(finalArtifactList, function (artifact) {
     if (!_.isEmpty(artifact)) {
       for (const key in artifact) {

Reply via email to