private getRequestedUriVersion()

in packages/aws-rfdk/lib/lambdas/nodejs/lib/version-provider/version-provider.ts [231:291]


  private getRequestedUriVersion(
    requestedVersion: string[],
    indexedVersionInfo: any,
    platform: Platform,
    product: Product,
  ): IVersionedUris | undefined {
    let versionMap = indexedVersionInfo;
    const versionArray: string[] = [];

    // iterate through all 4 major, minor, release and patch numbers,
    // and get the matching version from the indexed version map.
    for (let versionIndex = 0; versionIndex < 4; versionIndex++) {
      let version: string;
      if (requestedVersion[versionIndex + 1] == null) {

        // version is not provided, get the max version.
        const numberValues: number[] = (Object.keys(versionMap)).map((val: string) => {
          return parseInt(val, 10);
        });
        version = (Math.max(...numberValues)).toString();

      } else {
        version = requestedVersion[versionIndex + 1];
      }
      if (versionMap[version] === undefined) {
        throw new Error(`${product} version ${requestedVersion[0]} is not available on ${platform}`);
      }
      versionArray[versionIndex] = version;
      versionMap = versionMap[version];
    }

    let uriIndex: IUris | undefined;
    if ((platform in versionMap)) {
      const platformVersionMap = versionMap[platform];
      if (product == Product.deadline) {
        uriIndex = {
          bundle: platformVersionMap.bundle,
          clientInstaller: platformVersionMap.clientInstaller,
          repositoryInstaller: platformVersionMap.repositoryInstaller,
          certificateInstaller: platformVersionMap.certificateInstaller,
        };

      } else { // Product.deadlineDocker
        uriIndex = {
          bundle: platformVersionMap,
        };
      }
    }

    if (uriIndex) {
      return {
        MajorVersion: versionArray[0],
        MinorVersion: versionArray[1],
        ReleaseVersion: versionArray[2],
        PatchVersion: versionArray[3],
        Uris: uriIndex,
      };
    } else {
      return undefined;
    }
  }