Skip to content

Commit 7bc4cc6

Browse files
Chris Martinezcommonsensesoftware
authored andcommitted
Fix convention to only support POST API descriptions for EDM actions
1 parent 157a10a commit 7bc4cc6

File tree

3 files changed

+41
-19
lines changed

3 files changed

+41
-19
lines changed

src/Common.OData.ApiExplorer/AspNet.OData/Builder/ODataValidationSettingsConvention.cs

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -139,23 +139,6 @@ protected virtual ApiParameterDescription NewCountParameter( ODataQueryOptionDes
139139
return NewParameterDescription( GetName( Count ), description, typeof( bool ), defaultValue: false );
140140
}
141141

142-
static bool IsSupportHttpMethod( string httpMethod )
143-
{
144-
Contract.Requires( !string.IsNullOrEmpty( httpMethod ) );
145-
146-
switch ( httpMethod.ToUpperInvariant() )
147-
{
148-
// query or function
149-
case "GET":
150-
151-
// action
152-
case "POST":
153-
return true;
154-
}
155-
156-
return false;
157-
}
158-
159142
string GetName( AllowedQueryOptions option )
160143
{
161144
Contract.Requires( option == Filter || ( option > Filter && option < Supported && ( (int) option % 2 == 0 ) ) );

src/Microsoft.AspNet.OData.Versioning.ApiExplorer/AspNet.OData/Builder/ODataValidationSettingsConvention.cs

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
namespace Microsoft.AspNet.OData.Builder
22
{
33
using Microsoft.AspNet.OData.Extensions;
4+
using Microsoft.OData.Edm;
45
using System;
56
using System.Diagnostics.Contracts;
67
using System.Web.Http.Controllers;
@@ -18,7 +19,7 @@ public virtual void ApplyTo( ApiDescription apiDescription )
1819
{
1920
Arg.NotNull( apiDescription, nameof( apiDescription ) );
2021

21-
if ( !IsSupportHttpMethod( apiDescription.HttpMethod.Method ) )
22+
if ( !IsSupported( apiDescription ) )
2223
{
2324
return;
2425
}
@@ -136,5 +137,22 @@ static ApiParameterDescription SetAction( ApiParameterDescription parameter, Htt
136137

137138
return parameter;
138139
}
140+
141+
static bool IsSupported( ApiDescription apiDescription )
142+
{
143+
Contract.Requires( apiDescription != null );
144+
145+
switch ( apiDescription.HttpMethod.Method.ToUpperInvariant() )
146+
{
147+
case "GET":
148+
// query or function
149+
return true;
150+
case "POST":
151+
// action
152+
return apiDescription.Operation()?.IsAction() == true;
153+
}
154+
155+
return false;
156+
}
139157
}
140158
}

src/Microsoft.AspNetCore.OData.Versioning.ApiExplorer/AspNet.OData/Builder/ODataValidationSettingsConvention.cs

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,14 @@
11
namespace Microsoft.AspNet.OData.Builder
22
{
3+
using Microsoft.AspNet.OData.Routing;
4+
using Microsoft.AspNet.OData.Routing.Template;
35
using Microsoft.AspNetCore.Mvc.Abstractions;
46
using Microsoft.AspNetCore.Mvc.ApiExplorer;
7+
using Microsoft.OData.Edm;
58
using System;
69
using System.Collections.Generic;
710
using System.Diagnostics.Contracts;
11+
using System.Linq;
812
using static Microsoft.AspNet.OData.Query.AllowedQueryOptions;
913
using static Microsoft.AspNetCore.Http.StatusCodes;
1014
using static Microsoft.AspNetCore.Mvc.ModelBinding.BindingSource;
@@ -20,7 +24,7 @@ public virtual void ApplyTo( ApiDescription apiDescription )
2024
{
2125
Arg.NotNull( apiDescription, nameof( apiDescription ) );
2226

23-
if ( !IsSupportHttpMethod( apiDescription.HttpMethod ) )
27+
if ( !IsSupported( apiDescription ) )
2428
{
2529
return;
2630
}
@@ -156,5 +160,22 @@ static bool IsSingleResult( ApiDescription description, out Type resultType )
156160
resultType = responseType;
157161
return true;
158162
}
163+
164+
static bool IsSupported( ApiDescription apiDescription )
165+
{
166+
Contract.Requires( apiDescription != null );
167+
168+
switch ( apiDescription.HttpMethod.ToUpperInvariant() )
169+
{
170+
case "GET":
171+
// query or function
172+
return true;
173+
case "POST":
174+
// action
175+
return apiDescription.Operation()?.IsAction() == true;
176+
}
177+
178+
return false;
179+
}
159180
}
160181
}

0 commit comments

Comments
 (0)