private void GetListParameters()

in src/extensions/speech_extension/commands/custom_speech_recognition_command.cs [646:777]


        private void GetListParameters(string kind, out string path, out string message, out string query)
        {
            kind = _values.GetOrDefault("csr.list.kind", kind);
            
            var listLanguages = _values.GetOrDefault("csr.list.languages", false);
            var languageKind = _values.GetOrDefault("csr.list.languages.kind", listLanguages ? kind.TrimEnd('s') : "");

            var list = _values.GetOrEmpty("csr.list.id");
            var listOk = list.StartsWith("http");

            var listId = listOk ? "" : list;

            var dataset = _values.GetOrEmpty("csr.dataset.id");
            var datasetOk = !string.IsNullOrEmpty(dataset) && dataset.StartsWith("http");

            var kindIsDatasets = kind == "datasets";
            var datasetId = IdHelpers.GetIdFromNamedValue(_values, "csr.dataset.id", kindIsDatasets ? listId : "");
            var datasetIdOk = !string.IsNullOrEmpty(datasetId) && !datasetId.StartsWith("http");

            var datasetFiles = _values.GetOrDefault("csr.list.dataset.files", datasetOk || datasetIdOk);
            if (datasetFiles && !datasetOk && !datasetIdOk)
            {
                _values.AddThrowError(
                    "WARNING:", $"Cannot list dataset files without a valid dataset ID/URL!",
                        "USE:", $"{Program.Name} csr dataset list --dataset ID/URL --files");
            }

            var evaluation = _values.GetOrEmpty("csr.evaluation.id");
            var evaluationOk = !string.IsNullOrEmpty(evaluation) && evaluation.StartsWith("http");

            var kindIsEvaluations = kind == "evaluations";
            var evaluationId = IdHelpers.GetIdFromNamedValue(_values, "csr.evaluation.id", kindIsEvaluations ? listId : "");
            var evaluationIdOk = !string.IsNullOrEmpty(evaluationId) && !evaluationId.StartsWith("http");

            var evaluationFiles = _values.GetOrDefault("csr.list.evaluation.files", evaluationOk || evaluationIdOk);
            if (evaluationFiles && !evaluationIdOk && !evaluationIdOk)
            {
                _values.AddThrowError(
                    "WARNING:", $"Cannot list evaluation files without a valid evaluation ID/URL!",
                        "USE:", $"{Program.Name} csr evaluation list --evaluation ID/URL --files");
            }

            var endpoint = _values.GetOrEmpty("csr.endpoint.id");
            var endpointOk = !string.IsNullOrEmpty(endpoint) && endpoint.StartsWith("http");

            var kindIsEndpoints = kind == "endpoints";
            var endpointId = IdHelpers.GetIdFromNamedValue(_values, "csr.endpoint.id", kindIsEndpoints ? listId : "");
            var endpointIdOk = !string.IsNullOrEmpty(endpointId) && !endpointId.StartsWith("http");

            var endpointLogs = _values.GetOrDefault("csr.list.endpoint.logs", endpointOk || endpointIdOk);
            if (endpointLogs && !endpointOk && !endpointIdOk)
            {
                _values.AddThrowError(
                    "WARNING:", $"Cannot list endpoint logs without a valid endpoint ID/URL!",
                        "USE:", $"{Program.Name} csr endpoint list --endpoint ID/URL --logs");
            }

            path = "";
            message = "";
            if (datasetOk)
            {
                path = $"{dataset}/files";
                message = "Listing dataset files ...";
            }
            else if (datasetIdOk)
            {
                path = $"datasets/{datasetId}/files";
                message = "Listing dataset files ...";
            }
            else if (evaluationOk)
            {
                path = evaluation.EndsWith("/files") ? evaluation : $"{evaluation}/files";
                message = "Listing evaluation files ...";
            }
            else if (evaluationIdOk)
            {
                path = $"evaluations/{evaluationId}/files";
                message = "Listing evaluation files ...";
            }
            else if (endpointOk)
            {
                path = endpoint.EndsWith("/files/logs") ? endpoint : $"{endpoint}/files/logs";
                message = "Listing endpoint logs";
            }
            else if (endpointIdOk)
            {
                path = $"endpoints/{endpointId}/files/logs";
                message = "Listing endpoint logs ...";
            }
            else if (listOk && list.Contains("/datasets/"))
            {
                path = list.EndsWith("/files") ? list : $"{list}/files";
                message = "Listing dataset files ...";
            }
            else if (listOk && list.Contains("/evaluations/"))
            {
                path = list.EndsWith("/files") ? list : $"{list}/files";
                message = "Listing evaluation files ...";
            }
            else if (listOk && list.Contains("/endpoints/"))
            {
                path = list.EndsWith("/files") ? list : $"{list}/files";
                message = "Listing endpoint files ...";
            }
            else if (!string.IsNullOrEmpty(languageKind))
            {
                path = $"{languageKind}s/locales";
                message = $"Listing {languageKind} languages ...";
            }
            else if (!string.IsNullOrEmpty(kind))
            {
                var projectId = IdHelpers.GetIdFromNamedValue(_values, "csr.project.id");
                var projectOk = !string.IsNullOrEmpty(projectId);

                path = projectOk ? $"projects/{projectId}/{kind}" : kind;
                message = $"Listing {kind} ...";
            }
            else
            {
                _values.AddThrowError(
                    "WARNING:", $"Couldn't find resource type to list!",
                        "SEE:", $"{Program.Name} help csr");
            }

            var top = _values.GetOrEmpty("csr.top");
            var skip = _values.GetOrEmpty("csr.skip");

            query = "";
            if (!string.IsNullOrEmpty(skip)) query += $"&skip={skip}";
            if (!string.IsNullOrEmpty(top)) query += $"&top={top}";
            query = query.Trim('&');
        }