server/lib/services/TemplatesService.dart (57 lines of code) (raw):

// Copyright 2023 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. import 'dart:convert'; import 'package:cloud_provision_shared/catalog/models/param.dart'; import 'package:cloud_provision_shared/catalog/models/template.dart'; import 'package:cloud_provision_server/services/BaseService.dart'; import 'package:cloud_provision_server/services/ConfigService.dart'; import 'package:http/http.dart' as http; class TemplatesService extends BaseService { ConfigService _configService = ConfigService(); String _getCatalogUrl(String catalogSource) { var catalogUrl = getEnvVar("GCP_CATALOG_URL")!; if (catalogSource == "community") { catalogUrl = getEnvVar("COMMUNITY_CATALOG_URL")!; } else if (catalogSource == "customer") { catalogUrl = ""; } return catalogUrl; } /// Returns list of solution templates Future<List<Template>> getTemplates( String catalogSource, String catalogUrl) async { final http.Client client = new http.Client(); // TODO: add logic to handle private catalog if (catalogSource == "customer") { return []; } var catalogUrl = _getCatalogUrl(catalogSource); var response = await client.get(Uri.parse(catalogUrl)); Iterable templateList = json.decode(response.body); List<Template> templates = List<Template>.from( templateList.map((model) => Template.fromJson(model))); return templates; } Future<Template?> getTemplateById( int templateId, String catalogSource) async { final http.Client client = new http.Client(); // TODO: add logic to handle private catalog if (catalogSource == "customer") { return null; } var catalogUrl = _getCatalogUrl(catalogSource); var response = await client.get(Uri.parse(catalogUrl)); Iterable templateList = json.decode(response.body); List<Template> templates = List<Template>.from( templateList.map((model) => Template.fromJson(model))); List<Template> templateL = templates.where((element) => element.id == templateId).toList(); Template template; if (templateL.isEmpty) { return null; } template = templateL.first; Map<String, dynamic> cloudProvisionJsonConfig = await _configService.getJson(template.cloudProvisionConfigUrl); Iterable paramsList = cloudProvisionJsonConfig['inputs']; List<Param> params = List<Param>.from(paramsList.map((model) => Param.fromJson(model))); template.inputs = params; return template; } }