Skip to content

Commit 506d47d

Browse files
committed
stream request and method collection examples and related fixes
1 parent 8c10af5 commit 506d47d

25 files changed

+1189
-25
lines changed

Templates/CSharp/Requests/IStreamRequest.cs.tt

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,13 @@ else
2727
@namespace = prop.Class.AsOdcmClass().Namespace.GetNamespaceName();
2828
}
2929

30-
if (propClass.EndsWith("Request"))
31-
{
32-
propClass = String.Concat(propClass, "Object");
33-
}
30+
var iBaseRequestTypeName = @namespace.GetCoreLibraryType("IBaseRequest");
31+
var iHttpProviderTypeName = @namespace.GetCoreLibraryType("IHttpProvider");
32+
33+
if (propClass.EndsWith("Request"))
34+
{
35+
propClass = String.Concat(propClass, "Object");
36+
}
3437
#>
3538

3639
namespace <#=@namespace#>
@@ -43,7 +46,7 @@ namespace <#=@namespace#>
4346
/// <summary>
4447
/// The interface I<#=propRequest#>.
4548
/// </summary>
46-
public partial interface I<#=propRequest#> : IBaseRequest
49+
public partial interface I<#=propRequest#> : <#=iBaseRequestTypeName#>
4750
{
4851
/// <summary>
4952
/// Gets the stream.
@@ -55,7 +58,7 @@ namespace <#=@namespace#>
5558
/// Gets the stream.
5659
/// </summary>
5760
/// <param name="cancellationToken">The <see cref="CancellationToken"/> for the request.</param>
58-
/// <param name="completionOption">The <see cref="HttpCompletionOption"/> to pass to the <see cref="IHttpProvider"/> on send.</param>
61+
/// <param name="completionOption">The <see cref="HttpCompletionOption"/> to pass to the <see cref="<#=iHttpProviderTypeName#>"/> on send.</param>
5962
/// <returns>The stream.</returns>
6063
System.Threading.Tasks.Task<Stream> GetAsync(CancellationToken cancellationToken, HttpCompletionOption completionOption = HttpCompletionOption.ResponseContentRead);
6164

@@ -78,7 +81,7 @@ namespace <#=@namespace#>
7881
/// <typeparam name="T">The type returned by the PUT call.</typeparam>
7982
/// <param name="<#=propName#>">The stream to PUT.</param>
8083
/// <param name="cancellationToken">The <see cref="CancellationToken"/> for the request.</param>
81-
/// <param name="completionOption">The <see cref="HttpCompletionOption"/> to pass to the <see cref="IHttpProvider"/> on send.</param>
84+
/// <param name="completionOption">The <see cref="HttpCompletionOption"/> to pass to the <see cref="<#=iHttpProviderTypeName#>"/> on send.</param>
8285
/// <returns>The object returned by the PUT call.</returns>
8386
System.Threading.Tasks.Task<T> PutAsync<T>(Stream <#=propName#>, CancellationToken cancellationToken, HttpCompletionOption completionOption = HttpCompletionOption.ResponseContentRead) where T : <#=propClass#>;
8487
<#
@@ -99,7 +102,7 @@ namespace <#=@namespace#>
99102
/// </summary>
100103
/// <param name="<#=propName#>">The stream to PUT.</param>
101104
/// <param name="cancellationToken">The <see cref="CancellationToken"/> for the request.</param>
102-
/// <param name="completionOption">The <see cref="HttpCompletionOption"/> to pass to the <see cref="IHttpProvider"/> on send.</param>
105+
/// <param name="completionOption">The <see cref="HttpCompletionOption"/> to pass to the <see cref="<#=iHttpProviderTypeName#>"/> on send.</param>
103106
/// <returns>The updated stream.</returns>
104107
System.Threading.Tasks.Task<Stream> PutAsync(Stream <#=propName#>, CancellationToken cancellationToken, HttpCompletionOption completionOption = HttpCompletionOption.ResponseContentRead);
105108
<#

Templates/CSharp/Requests/IStreamRequestBuilder.cs.tt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@ else
3030
@namespace = prop.Class.AsOdcmClass().Namespace.GetNamespaceName();
3131
}
3232

33+
var optionTypeName = @namespace.GetCoreLibraryType("Option");
34+
3335
#>
3436

3537
namespace <#=@namespace#>
@@ -46,6 +48,6 @@ namespace <#=@namespace#>
4648
/// </summary>
4749
/// <param name="options">The query and header options for the request.</param>
4850
/// <returns>The built request.</returns>
49-
I<#=propRequest#> Request(IEnumerable<Option> options = null);
51+
I<#=propRequest#> Request(IEnumerable<<#=optionTypeName#>> options = null);
5052
}
5153
}

Templates/CSharp/Requests/MethodCollectionPage.cs.tt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ var method = host.CurrentType.AsOdcmMethod();
77
var @namespace = method.Namespace.GetNamespaceName();
88

99
var collectionPageTypeName = @namespace.GetCoreLibraryType("CollectionPage");
10+
var iBaseClientTypeName = @namespace.GetCoreLibraryType("IBaseClient");
1011

1112
var returnType = method.ReturnType.GetTypeString(@namespace);
1213

@@ -31,7 +32,7 @@ namespace <#=@namespace#>
3132
/// <summary>
3233
/// Initializes the NextPageRequest property.
3334
/// </summary>
34-
public void InitializeNextPageRequest(IBaseClient client, string nextPageLinkString)
35+
public void InitializeNextPageRequest(<#=iBaseClientTypeName#> client, string nextPageLinkString)
3536
{
3637
if (!string.IsNullOrEmpty(nextPageLinkString))
3738
{

Templates/CSharp/Requests/StreamRequest.cs.tt

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,16 @@ else
2727

2828
propRequest = propClass + prop.Name.ToCheckedCase() + "Request";
2929
}
30-
if (propClass.EndsWith("Request"))
31-
{
32-
propClass = String.Concat(propClass, "Object");
33-
}
30+
31+
var iBaseClientTypeName = @namespace.GetCoreLibraryType("IBaseClient");
32+
var optionTypeName = @namespace.GetCoreLibraryType("Option");
33+
var baseRequestTypeName = @namespace.GetCoreLibraryType("BaseRequest");
34+
var iHttpProviderTypeName = @namespace.GetCoreLibraryType("IHttpProvider");
35+
36+
if (propClass.EndsWith("Request"))
37+
{
38+
propClass = String.Concat(propClass, "Object");
39+
}
3440
#>
3541

3642
namespace <#=@namespace#>
@@ -43,18 +49,18 @@ namespace <#=@namespace#>
4349
/// <summary>
4450
/// The type <#=propRequest#>.
4551
/// </summary>
46-
public partial class <#=propRequest#> : BaseRequest, I<#=propRequest#>
52+
public partial class <#=propRequest#> : <#=baseRequestTypeName#>, I<#=propRequest#>
4753
{
4854
/// <summary>
4955
/// Constructs a new <#=propRequest#>.
5056
/// <param name="requestUrl">The request URL.</param>
51-
/// <param name="client">The <see cref="IBaseClient"/> for handling requests.</param>
57+
/// <param name="client">The <see cref="<#=iBaseClientTypeName#>"/> for handling requests.</param>
5258
/// <param name="options">Query option name value pairs for the request.</param>
5359
/// </summary>
5460
public <#=propRequest#>(
5561
string requestUrl,
56-
IBaseClient client,
57-
IEnumerable<Option> options)
62+
<#=iBaseClientTypeName#> client,
63+
IEnumerable<<#=optionTypeName#>> options)
5864
: base(requestUrl, client, options)
5965
{
6066
}
@@ -72,7 +78,7 @@ namespace <#=@namespace#>
7278
/// Gets the stream.
7379
/// </summary>
7480
/// <param name="cancellationToken">The <see cref="CancellationToken"/> for the request.</param>
75-
/// <param name="completionOption">The <see cref="HttpCompletionOption"/> to pass to the <see cref="IHttpProvider"/> on send.</param>
81+
/// <param name="completionOption">The <see cref="HttpCompletionOption"/> to pass to the <see cref="<#=iHttpProviderTypeName#>"/> on send.</param>
7682
/// <returns>The stream.</returns>
7783
public System.Threading.Tasks.Task<Stream> GetAsync(CancellationToken cancellationToken, HttpCompletionOption completionOption = HttpCompletionOption.ResponseContentRead)
7884
{
@@ -101,7 +107,7 @@ namespace <#=@namespace#>
101107
/// <typeparam name="T">The type returned by the PUT call.</typeparam>
102108
/// <param name="<#=propName#>">The stream to PUT.</param>
103109
/// <param name="cancellationToken">The <see cref="CancellationToken"/> for the request.</param>
104-
/// <param name="completionOption">The <see cref="HttpCompletionOption"/> to pass to the <see cref="IHttpProvider"/> on send.</param>
110+
/// <param name="completionOption">The <see cref="HttpCompletionOption"/> to pass to the <see cref="<#=iHttpProviderTypeName#>"/> on send.</param>
105111
/// <returns>The object returned by the PUT call.</returns>
106112
public System.Threading.Tasks.Task<T> PutAsync<T>(Stream <#=propName#>, CancellationToken cancellationToken, HttpCompletionOption completionOption = HttpCompletionOption.ResponseContentRead) where T : <#=propClass#>
107113
{
@@ -130,7 +136,7 @@ namespace <#=@namespace#>
130136
/// </summary>
131137
/// <param name="<#=propName#>">The stream to PUT.</param>
132138
/// <param name="cancellationToken">The <see cref="CancellationToken"/> for the request.</param>
133-
/// <param name="completionOption">The <see cref="HttpCompletionOption"/> to pass to the <see cref="IHttpProvider"/> on send.</param>
139+
/// <param name="completionOption">The <see cref="HttpCompletionOption"/> to pass to the <see cref="<#=iHttpProviderTypeName#>"/> on send.</param>
134140
/// <returns>The updated stream.</returns>
135141
public System.Threading.Tasks.Task<Stream> PutAsync(Stream <#=propName#>, CancellationToken cancellationToken, HttpCompletionOption completionOption = HttpCompletionOption.ResponseContentRead)
136142
{

Templates/CSharp/Requests/StreamRequestBuilder.cs.tt

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,10 @@ else
3030
@namespace = prop.Class.AsOdcmClass().Namespace.GetNamespaceName();
3131
}
3232

33+
var iBaseClientTypeName = @namespace.GetCoreLibraryType("IBaseClient");
34+
var optionTypeName = @namespace.GetCoreLibraryType("Option");
35+
var baseRequestBuilderTypeName = @namespace.GetCoreLibraryType("BaseRequestBuilder");
36+
3337
#>
3438

3539
namespace <#=@namespace#>
@@ -39,16 +43,16 @@ namespace <#=@namespace#>
3943
/// <summary>
4044
/// The type <#=propRequestBuilder#>.
4145
/// </summary>
42-
public partial class <#=propRequestBuilder#> : BaseRequestBuilder, I<#=propRequestBuilder#>
46+
public partial class <#=propRequestBuilder#> : <#=baseRequestBuilderTypeName#>, I<#=propRequestBuilder#>
4347
{
4448
/// <summary>
4549
/// Constructs a new <#=propRequestBuilder#>.
4650
/// </summary>
4751
/// <param name="requestUrl">The URL for the built request.</param>
48-
/// <param name="client">The <see cref="IBaseClient"/> for handling requests.</param>
52+
/// <param name="client">The <see cref="<#=iBaseClientTypeName#>"/> for handling requests.</param>
4953
public <#=propRequestBuilder#>(
5054
string requestUrl,
51-
IBaseClient client)
55+
<#=iBaseClientTypeName#> client)
5256
: base(requestUrl, client)
5357
{
5458
}
@@ -58,7 +62,7 @@ namespace <#=@namespace#>
5862
/// </summary>
5963
/// <param name="options">The query and header options for the request.</param>
6064
/// <returns>The built request.</returns>
61-
public I<#=propRequest#> Request(IEnumerable<Option> options = null)
65+
public I<#=propRequest#> Request(IEnumerable<<#=optionTypeName#>> options = null)
6266
{
6367
return new <#=propRequest#>(this.RequestUrl, this.Client, options);
6468
}

test/Typewriter.Test/Metadata/MetadataMultipleNamespaces.xml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -195,6 +195,10 @@
195195
<NavigationProperty Name="refTypes" Type="Collection(graph.entityType3)" />
196196
<NavigationProperty Name="refType" Type="graph.call" /> <!-- No ContainsTarget -->
197197
<NavigationProperty Name="sessionRef" Type="microsoft.graph2.callRecords.session" /> <!-- No ContainsTarget -->
198+
<NavigationProperty Name="photo" Type="microsoft.graph2.callRecords.photo" ContainsTarget="true" />
199+
</EntityType>
200+
<EntityType Name="photo" BaseType="graph.entity" HasStream="true">
201+
<Property Name="failureInfo" Type="microsoft.graph2.callRecords.failureInfo" />
198202
</EntityType>
199203
<ComplexType Name="endpoint">
200204
<Property Name="userAgent" Type="microsoft.graph2.callRecords.userAgent" />
@@ -262,6 +266,10 @@
262266
<Parameter Name="SingleSession" Type="microsoft.graph2.callRecords.session" Nullable="false" />
263267
<Parameter Name="Comment" Type="Edm.String" Unicode="false" />
264268
</Action>
269+
<Action Name="testAction" IsBound="true">
270+
<Parameter Name="bindingParameter" Type="microsoft.graph2.callRecords.segment" />
271+
<ReturnType Type="Collection(microsoft.graph2.callRecords.session)" />
272+
</Action>
265273
</Schema>
266274
</edmx:DataServices>
267275
</edmx:Edmx>
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
// ------------------------------------------------------------------------------
2+
// Copyright (c) Microsoft Corporation. All Rights Reserved. Licensed under the MIT License. See License in the project root for license information.
3+
// ------------------------------------------------------------------------------
4+
5+
// **NOTE** This file was generated by a tool and any changes will be overwritten.
6+
// <auto-generated/>
7+
8+
// Template Source: Templates\CSharp\Model\EntityType.cs.tt
9+
10+
namespace Microsoft.Graph2.CallRecords
11+
{
12+
using System;
13+
using System.Collections.Generic;
14+
using System.IO;
15+
using System.Runtime.Serialization;
16+
using Newtonsoft.Json;
17+
18+
/// <summary>
19+
/// The type Photo.
20+
/// </summary>
21+
[JsonObject(MemberSerialization = MemberSerialization.OptIn)]
22+
public partial class Photo : Microsoft.Graph.Entity
23+
{
24+
25+
///<summary>
26+
/// The Photo constructor
27+
///</summary>
28+
public Photo()
29+
{
30+
this.ODataType = "microsoft.graph2.callRecords.photo";
31+
}
32+
33+
/// <summary>
34+
/// Gets or sets failure info.
35+
/// </summary>
36+
[JsonProperty(NullValueHandling = NullValueHandling.Ignore, PropertyName = "failureInfo", Required = Newtonsoft.Json.Required.Default)]
37+
public FailureInfo FailureInfo { get; set; }
38+
39+
}
40+
}
41+

test/Typewriter.Test/TestDataCSharp/com/Microsoft/Graph2/CallRecords/Model/Segment.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,12 @@ public Segment()
8484
[JsonProperty(NullValueHandling = NullValueHandling.Ignore, PropertyName = "sessionRef", Required = Newtonsoft.Json.Required.Default)]
8585
public Session SessionRef { get; set; }
8686

87+
/// <summary>
88+
/// Gets or sets photo.
89+
/// </summary>
90+
[JsonProperty(NullValueHandling = NullValueHandling.Ignore, PropertyName = "photo", Required = Newtonsoft.Json.Required.Default)]
91+
public Photo Photo { get; set; }
92+
8793
}
8894
}
8995

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
// ------------------------------------------------------------------------------
2+
// Copyright (c) Microsoft Corporation. All Rights Reserved. Licensed under the MIT License. See License in the project root for license information.
3+
// ------------------------------------------------------------------------------
4+
5+
// **NOTE** This file was generated by a tool and any changes will be overwritten.
6+
// <auto-generated/>
7+
8+
// Template Source: Templates\CSharp\Requests\IStreamRequest.cs.tt
9+
10+
namespace Microsoft.Graph2.CallRecords
11+
{
12+
using System.Collections.Generic;
13+
using System.IO;
14+
using System.Net.Http;
15+
using System.Threading;
16+
17+
/// <summary>
18+
/// The interface IPhotoContentRequest.
19+
/// </summary>
20+
public partial interface IPhotoContentRequest : Microsoft.Graph.IBaseRequest
21+
{
22+
/// <summary>
23+
/// Gets the stream.
24+
/// </summary>
25+
/// <returns>The stream.</returns>
26+
System.Threading.Tasks.Task<Stream> GetAsync();
27+
28+
/// <summary>
29+
/// Gets the stream.
30+
/// </summary>
31+
/// <param name="cancellationToken">The <see cref="CancellationToken"/> for the request.</param>
32+
/// <param name="completionOption">The <see cref="HttpCompletionOption"/> to pass to the <see cref="Microsoft.Graph.IHttpProvider"/> on send.</param>
33+
/// <returns>The stream.</returns>
34+
System.Threading.Tasks.Task<Stream> GetAsync(CancellationToken cancellationToken, HttpCompletionOption completionOption = HttpCompletionOption.ResponseContentRead);
35+
36+
37+
/// <summary>
38+
/// PUTs the specified stream.
39+
/// </summary>
40+
/// <param name="content">The stream to PUT.</param>
41+
/// <returns>The updated stream.</returns>
42+
System.Threading.Tasks.Task<Stream> PutAsync(Stream content);
43+
44+
/// <summary>
45+
/// PUTs the specified stream.
46+
/// </summary>
47+
/// <param name="content">The stream to PUT.</param>
48+
/// <param name="cancellationToken">The <see cref="CancellationToken"/> for the request.</param>
49+
/// <param name="completionOption">The <see cref="HttpCompletionOption"/> to pass to the <see cref="Microsoft.Graph.IHttpProvider"/> on send.</param>
50+
/// <returns>The updated stream.</returns>
51+
System.Threading.Tasks.Task<Stream> PutAsync(Stream content, CancellationToken cancellationToken, HttpCompletionOption completionOption = HttpCompletionOption.ResponseContentRead);
52+
53+
}
54+
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
// ------------------------------------------------------------------------------
2+
// Copyright (c) Microsoft Corporation. All Rights Reserved. Licensed under the MIT License. See License in the project root for license information.
3+
// ------------------------------------------------------------------------------
4+
5+
// **NOTE** This file was generated by a tool and any changes will be overwritten.
6+
// <auto-generated/>
7+
8+
// Template Source: Templates\CSharp\Requests\IStreamRequestBuilder.cs.tt
9+
10+
namespace Microsoft.Graph2.CallRecords
11+
{
12+
using System.Collections.Generic;
13+
14+
/// <summary>
15+
/// The interface IPhotoContentRequestBuilder.
16+
/// </summary>
17+
public partial interface IPhotoContentRequestBuilder
18+
{
19+
/// <summary>
20+
/// Builds the request.
21+
/// </summary>
22+
/// <param name="options">The query and header options for the request.</param>
23+
/// <returns>The built request.</returns>
24+
IPhotoContentRequest Request(IEnumerable<Microsoft.Graph.Option> options = null);
25+
}
26+
}

0 commit comments

Comments
 (0)