public static IEnumerable <GenerateResult> GenerateTypes(CodeModel serviceClient, string apiVersion) { if (serviceClient == null) { throw new ArgumentNullException(nameof(serviceClient)); } var providerDefinitions = new Dictionary <string, ProviderDefinition>(StringComparer.OrdinalIgnoreCase); foreach (var putMethod in serviceClient.Methods.Where(method => ShouldProcess(serviceClient, method, apiVersion))) { var(success, failureReason, resourceDescriptors) = ParseMethod(putMethod, apiVersion); if (!success) { LogWarning($"Skipping path '{putMethod.Url}': {failureReason}"); continue; } var getMethod = serviceClient.Methods.FirstOrDefault(x => x.Url == putMethod.Url && x.HttpMethod == HttpMethod.Get); foreach (var descriptor in resourceDescriptors) { if (!providerDefinitions.ContainsKey(descriptor.ProviderNamespace)) { providerDefinitions[descriptor.ProviderNamespace] = new ProviderDefinition { Namespace = descriptor.ProviderNamespace, ApiVersion = apiVersion, Model = serviceClient, }; } var providerDefinition = providerDefinitions[descriptor.ProviderNamespace]; providerDefinition.ResourceDefinitions.Add(new ResourceDefinition { Descriptor = descriptor, DeclaringMethod = putMethod, GetMethod = getMethod, }); } } return(providerDefinitions.Select(definition => ProviderTypeGenerator.Generate(serviceClient, definition.Value))); }
public static GenerateResult Generate(CodeModel codeModel, ProviderDefinition definition) { var generator = new ProviderTypeGenerator(codeModel, definition); return(generator.Process()); }