Skip to content

Commit 80a607c

Browse files
committed
Support updating the default base Graph URL via the endpointVersion argument.
1 parent 19d8d41 commit 80a607c

File tree

4 files changed

+51
-5
lines changed

4 files changed

+51
-5
lines changed

src/GraphODataTemplateWriter/Settings/ConfigurationService.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,13 @@ public static class ConfigurationService
1717
private static IConfigurationProvider _configurationProvider;
1818
private static TemplateWriterSettings templateWriterSettings = null;
1919
private static string targetLanguage = null;
20+
private static string endpointVersion = null;
2021
private static Dictionary<string, string> properties = null;
2122

22-
public static void Initialize(IConfigurationProvider configurationProvider, string targetLanguage = null, IEnumerable<string> properties = null)
23+
public static void Initialize(IConfigurationProvider configurationProvider, string targetLanguage = null, IEnumerable<string> properties = null, string endpointVersion = "v1.0")
2324
{
25+
ConfigurationService.endpointVersion = endpointVersion;
26+
2427
_configurationProvider = configurationProvider;
2528
if (!String.IsNullOrEmpty(targetLanguage))
2629
{
@@ -58,6 +61,7 @@ private static TemplateWriterSettings LoadSettingsForLanguage()
5861
mainTWS.Properties = properties;
5962
}
6063

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

6266
TemplateWriterSettings.mainSettingsObject = mainTWS;
6367

src/GraphODataTemplateWriter/TemplateProcessor/TemplateWriter.cs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ public class TemplateWriter : IConfigurable, IOdcmWriter
2727

2828
private string targetLanguage;
2929
private IEnumerable<string> properties;
30+
private string endpointVersion;
3031

3132
public TemplateWriter()
3233
{
@@ -43,6 +44,13 @@ public TemplateWriter(string targetLanguage, IEnumerable<string> properties)
4344
this.properties = properties;
4445
}
4546

47+
public TemplateWriter(string targetLanguage, IEnumerable<string> properties, string endpointVersion)
48+
{
49+
this.targetLanguage = targetLanguage;
50+
this.properties = properties;
51+
this.endpointVersion = endpointVersion;
52+
}
53+
4654
private string PathWriterClassNameFormatString
4755
{
4856
get {
@@ -98,7 +106,7 @@ IEnumerable<TextFile> ProcessTemplates()
98106
// IConfigurationProvider
99107
public void SetConfigurationProvider(IConfigurationProvider configurationProvider)
100108
{
101-
ConfigurationService.Initialize(configurationProvider, this.targetLanguage, this.properties);
109+
ConfigurationService.Initialize(configurationProvider, this.targetLanguage, this.properties, this.endpointVersion);
102110
FileNameCasing nameCasing;
103111
if(!Enum.TryParse(ConfigurationService.Settings.DefaultFileCasing, out nameCasing))
104112
{

src/Typewriter/Generator.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ internal static class Generator
1818
/// <param name="options">The options bag</param>
1919
static internal void GenerateFiles(string csdlContents, Options options)
2020
{
21-
var filesToWrite = MetadataToClientSource(csdlContents, options.Language, options.Properties);
21+
var filesToWrite = MetadataToClientSource(csdlContents, options.Language, options.Properties, options.EndpointVersion);
2222
FileWriter.WriteAsync(filesToWrite, options.Output);
2323
}
2424

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

7373
var reader = new OdcmReader();
74-
var writer = new TemplateWriter(targetLanguage, properties);
74+
var writer = new TemplateWriter(targetLanguage, properties, endpointVersion);
7575
writer.SetConfigurationProvider(new ConfigurationProvider());
7676

7777
var model = reader.GenerateOdcmModel(new List<TextFile> { new TextFile("$metadata", edmxString) });

test/Typewriter.Test/Given_a_valid_metadata_file_to_Typewriter.cs

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,5 +72,39 @@ public void It_generates_PHP_models_with_a_property()
7272
}
7373
Assert.IsTrue(isExpectedNamespaceSet, $"The expected namespace, {testNamespace}, was not set in the generated test file.");
7474
}
75+
76+
[TestMethod]
77+
public void It_generates_dotNet_client_with_default_beta_baseUrl()
78+
{
79+
const string outputDirectory = "output";
80+
81+
Options options = new Options()
82+
{
83+
Output = outputDirectory,
84+
Language = "CSharp",
85+
GenerationMode = GenerationMode.Files,
86+
EndpointVersion = "beta"
87+
};
88+
89+
Generator.GenerateFiles(testMetadata, options);
90+
91+
FileInfo fileInfo = new FileInfo(outputDirectory + generatedOutputUrl + @"\Requests\GraphServiceClient.cs");
92+
Assert.IsTrue(fileInfo.Exists, $"Expected: {fileInfo.FullName}. File was not found.");
93+
94+
// Check that the beta endpoint was set as the default endpoint. Otherwise it uses v1.0.
95+
// https://github.com/microsoftgraph/msgraph-sdk-dotnet/blob/dev/src/Microsoft.Graph/Requests/Generated/GraphServiceClient.cs#L25
96+
IEnumerable<string> lines = File.ReadLines(fileInfo.FullName);
97+
bool hasFoundBetaUrl = false;
98+
string betaUrl = "https://graph.microsoft.com/beta";
99+
foreach (var line in lines)
100+
{
101+
if (line.Contains(betaUrl))
102+
{
103+
hasFoundBetaUrl = true;
104+
break;
105+
}
106+
}
107+
Assert.IsTrue(hasFoundBetaUrl, $"The expected default base URL, {betaUrl}, was not set in the generated test file.");
108+
}
75109
}
76110
}

0 commit comments

Comments
 (0)