Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,13 @@ public static class ConfigurationService
private static IConfigurationProvider _configurationProvider;
private static TemplateWriterSettings templateWriterSettings = null;
private static string targetLanguage = null;
private static string endpointVersion = null;
private static Dictionary<string, string> properties = null;

public static void Initialize(IConfigurationProvider configurationProvider, string targetLanguage = null, IEnumerable<string> properties = null)
public static void Initialize(IConfigurationProvider configurationProvider, string targetLanguage = null, IEnumerable<string> properties = null, string endpointVersion = "v1.0")
{
ConfigurationService.endpointVersion = endpointVersion;

_configurationProvider = configurationProvider;
if (!String.IsNullOrEmpty(targetLanguage))
{
Expand Down Expand Up @@ -58,6 +61,7 @@ private static TemplateWriterSettings LoadSettingsForLanguage()
mainTWS.Properties = properties;
}

mainTWS.DefaultBaseEndpointUrl = String.Format("https://graph.microsoft.com/{0}", endpointVersion);

TemplateWriterSettings.mainSettingsObject = mainTWS;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ public class TemplateWriter : IConfigurable, IOdcmWriter

private string targetLanguage;
private IEnumerable<string> properties;
private string endpointVersion;

public TemplateWriter()
{
Expand All @@ -43,6 +44,13 @@ public TemplateWriter(string targetLanguage, IEnumerable<string> properties)
this.properties = properties;
}

public TemplateWriter(string targetLanguage, IEnumerable<string> properties, string endpointVersion)
{
this.targetLanguage = targetLanguage;
this.properties = properties;
this.endpointVersion = endpointVersion;
}

private string PathWriterClassNameFormatString
{
get {
Expand Down Expand Up @@ -98,7 +106,7 @@ IEnumerable<TextFile> ProcessTemplates()
// IConfigurationProvider
public void SetConfigurationProvider(IConfigurationProvider configurationProvider)
{
ConfigurationService.Initialize(configurationProvider, this.targetLanguage, this.properties);
ConfigurationService.Initialize(configurationProvider, this.targetLanguage, this.properties, this.endpointVersion);
FileNameCasing nameCasing;
if(!Enum.TryParse(ConfigurationService.Settings.DefaultFileCasing, out nameCasing))
{
Expand Down
6 changes: 3 additions & 3 deletions src/Typewriter/Generator.cs
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ internal static class Generator
/// <param name="options">The options bag</param>
static internal void GenerateFiles(string csdlContents, Options options)
{
var filesToWrite = MetadataToClientSource(csdlContents, options.Language, options.Properties);
var filesToWrite = MetadataToClientSource(csdlContents, options.Language, options.Properties, options.EndpointVersion);
FileWriter.WriteAsync(filesToWrite, options.Output);
}

Expand Down Expand Up @@ -65,13 +65,13 @@ static private string CleanMetadata(string csdlContents, Options options)
/// <param name="edmxString">The EDMX file as a string.</param>
/// <param name="targetLanguage">Specifies the target language. Possible values are csharp, php, etc.</param>
/// <returns></returns>
static private IEnumerable<TextFile> MetadataToClientSource(string edmxString, string targetLanguage, IEnumerable<string> properties)
static private IEnumerable<TextFile> MetadataToClientSource(string edmxString, string targetLanguage, IEnumerable<string> properties, string endpointVersion = "v1.0")
{
if (String.IsNullOrEmpty(edmxString))
throw new ArgumentNullException("edmxString", "The EDMX file string contains no content.");

var reader = new OdcmReader();
var writer = new TemplateWriter(targetLanguage, properties);
var writer = new TemplateWriter(targetLanguage, properties, endpointVersion);
writer.SetConfigurationProvider(new ConfigurationProvider());

var model = reader.GenerateOdcmModel(new List<TextFile> { new TextFile("$metadata", edmxString) });
Expand Down
9 changes: 9 additions & 0 deletions src/Typewriter/MetadataPreprocessor.cs
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,15 @@ internal static string CleanMetadata(string csdlContents)
AddContainsTarget("plannerPlan");
AddContainsTarget("plannerDelta");

AddContainsTarget("teamsAppDefinition");
AddContainsTarget("itemActivity");

// Intune
AddContainsTarget("windows81TrustedRootCertificate");
AddContainsTarget("iosTrustedRootCertificate");
AddContainsTarget("mobileContainedApp");
AddContainsTarget("managedDeviceCertificateState");

return xMetadata.ToString();
}

Expand Down
34 changes: 34 additions & 0 deletions test/Typewriter.Test/Given_a_valid_metadata_file_to_Typewriter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -72,5 +72,39 @@ public void It_generates_PHP_models_with_a_property()
}
Assert.IsTrue(isExpectedNamespaceSet, $"The expected namespace, {testNamespace}, was not set in the generated test file.");
}

[TestMethod]
public void It_generates_dotNet_client_with_default_beta_baseUrl()
{
const string outputDirectory = "output";

Options options = new Options()
{
Output = outputDirectory,
Language = "CSharp",
GenerationMode = GenerationMode.Files,
EndpointVersion = "beta"
};

Generator.GenerateFiles(testMetadata, options);

FileInfo fileInfo = new FileInfo(outputDirectory + generatedOutputUrl + @"\Requests\GraphServiceClient.cs");
Assert.IsTrue(fileInfo.Exists, $"Expected: {fileInfo.FullName}. File was not found.");

// Check that the beta endpoint was set as the default endpoint. Otherwise it uses v1.0.
// https://github.com/microsoftgraph/msgraph-sdk-dotnet/blob/dev/src/Microsoft.Graph/Requests/Generated/GraphServiceClient.cs#L25
IEnumerable<string> lines = File.ReadLines(fileInfo.FullName);
bool hasFoundBetaUrl = false;
string betaUrl = "https://graph.microsoft.com/beta";
foreach (var line in lines)
{
if (line.Contains(betaUrl))
{
hasFoundBetaUrl = true;
break;
}
}
Assert.IsTrue(hasFoundBetaUrl, $"The expected default base URL, {betaUrl}, was not set in the generated test file.");
}
}
}