Skip to content

Commit 3758076

Browse files
authored
Fix routes resolving for empty method (#239)
1 parent bf99b83 commit 3758076

13 files changed

+52
-71
lines changed

nanoFramework.WebServer.FileSystem.nuspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ Otherwise use 'nanoFramework.WebServer' nuget.</description>
2424
<tags>http https webserver net netmf nf nanoframework</tags>
2525
<dependencies>
2626
<dependency id="nanoFramework.CoreLibrary" version="1.15.5" />
27-
<dependency id="nanoFramework.System.Net.Http.Server" version="1.5.113" />
27+
<dependency id="nanoFramework.System.Net.Http.Server" version="1.5.118" />
2828
<dependency id="nanoFramework.System.IO.FileSystem" version="1.1.32" />
2929
</dependencies>
3030
</metadata>

nanoFramework.WebServer.FileSystem/nanoFramework.WebServer.FileSystem.nfproj

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -106,9 +106,8 @@
106106
<Reference Include="System.Net">
107107
<HintPath>..\packages\nanoFramework.System.Net.1.10.68\lib\System.Net.dll</HintPath>
108108
</Reference>
109-
<Reference Include="System.Net.Http, Version=1.5.113.0, Culture=neutral, PublicKeyToken=c07d481e9758c731">
110-
<HintPath>..\packages\nanoFramework.System.Net.Http.Server.1.5.113\lib\System.Net.Http.dll</HintPath>
111-
<Private>True</Private>
109+
<Reference Include="System.Net.Http">
110+
<HintPath>..\packages\nanoFramework.System.Net.Http.Server.1.5.118\lib\System.Net.Http.dll</HintPath>
112111
</Reference>
113112
<Reference Include="System.Threading, Version=1.1.32.63105, Culture=neutral, PublicKeyToken=c07d481e9758c731">
114113
<HintPath>..\packages\nanoFramework.System.Threading.1.1.32\lib\System.Threading.dll</HintPath>

nanoFramework.WebServer.FileSystem/packages.config

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
<package id="nanoFramework.System.IO.FileSystem" version="1.1.32" targetFramework="netnano1.0" />
77
<package id="nanoFramework.System.IO.Streams" version="1.1.52" targetFramework="netnano1.0" />
88
<package id="nanoFramework.System.Net" version="1.10.68" targetFramework="netnano1.0" />
9-
<package id="nanoFramework.System.Net.Http.Server" version="1.5.113" targetFramework="netnano1.0" />
9+
<package id="nanoFramework.System.Net.Http.Server" version="1.5.118" targetFramework="netnano1.0" />
1010
<package id="nanoFramework.System.Runtime" version="1.0.6" targetFramework="netnano1.0" />
1111
<package id="nanoFramework.System.Text" version="1.2.54" targetFramework="netnano1.0" />
1212
<package id="nanoFramework.System.Threading" version="1.1.32" targetFramework="netnano1.0" />

nanoFramework.WebServer.FileSystem/packages.lock.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,9 @@
4040
},
4141
"nanoFramework.System.Net.Http.Server": {
4242
"type": "Direct",
43-
"requested": "[1.5.113, 1.5.113]",
44-
"resolved": "1.5.113",
45-
"contentHash": "gaCPn1h0VGWRA5gG6FoWlm8W9PgoBMekOsgOKKJEhl90TEMJSI8VM/4Xlgzg8KY6tEKvUkn9uXBoVHa0f2vGLg=="
43+
"requested": "[1.5.118, 1.5.118]",
44+
"resolved": "1.5.118",
45+
"contentHash": "ufWlPDHTEvZEYsXqagHLC9K5v7o6o/lRYF+obNaWeLXlxbLR32TAPXgrSGcIkhjY6wksX77lcqu2wkAgStRdag=="
4646
},
4747
"nanoFramework.System.Runtime": {
4848
"type": "Direct",

nanoFramework.WebServer.nuspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ If serving files from local storage is a requirement, please use instead the 'na
2222
<tags>http https webserver net netmf nf nanoframework</tags>
2323
<dependencies>
2424
<dependency id="nanoFramework.CoreLibrary" version="1.15.5" />
25-
<dependency id="nanoFramework.System.Net.Http.Server" version="1.5.113" />
25+
<dependency id="nanoFramework.System.Net.Http.Server" version="1.5.118" />
2626
</dependencies>
2727
</metadata>
2828
<files>

nanoFramework.WebServer/WebServer.cs

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ public class WebServer : IDisposable
3939
public const char ParamEqual = '=';
4040

4141
private const int MaxSizeBuffer = 1024;
42+
private const string DefaultRouteMethod = "GET";
4243

4344
#region internal objects
4445

@@ -595,12 +596,7 @@ private void StartListener()
595596
/// <returns></returns>
596597
public static bool IsRouteMatch(CallbackRoutes route, string method, string rawUrl)
597598
{
598-
if (route.Method == string.Empty)
599-
{
600-
return false;
601-
}
602-
603-
if (method != route.Method)
599+
if (method != (string.IsNullOrEmpty(route.Method) ? DefaultRouteMethod : route.Method))
604600
{
605601
return false;
606602
}

nanoFramework.WebServer/nanoFramework.WebServer.nfproj

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -70,9 +70,8 @@
7070
<Reference Include="System.Net">
7171
<HintPath>..\packages\nanoFramework.System.Net.1.10.68\lib\System.Net.dll</HintPath>
7272
</Reference>
73-
<Reference Include="System.Net.Http, Version=1.5.113.0, Culture=neutral, PublicKeyToken=c07d481e9758c731">
74-
<HintPath>..\packages\nanoFramework.System.Net.Http.Server.1.5.113\lib\System.Net.Http.dll</HintPath>
75-
<Private>True</Private>
73+
<Reference Include="System.Net.Http">
74+
<HintPath>..\packages\nanoFramework.System.Net.Http.Server.1.5.118\lib\System.Net.Http.dll</HintPath>
7675
</Reference>
7776
<Reference Include="System.Threading, Version=1.1.32.63105, Culture=neutral, PublicKeyToken=c07d481e9758c731">
7877
<HintPath>..\packages\nanoFramework.System.Threading.1.1.32\lib\System.Threading.dll</HintPath>

nanoFramework.WebServer/packages.config

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<package id="nanoFramework.System.Collections" version="1.5.31" targetFramework="netnano1.0" />
66
<package id="nanoFramework.System.IO.Streams" version="1.1.52" targetFramework="netnano1.0" />
77
<package id="nanoFramework.System.Net" version="1.10.68" targetFramework="netnano1.0" />
8-
<package id="nanoFramework.System.Net.Http.Server" version="1.5.113" targetFramework="netnano1.0" />
8+
<package id="nanoFramework.System.Net.Http.Server" version="1.5.118" targetFramework="netnano1.0" />
99
<package id="nanoFramework.System.Text" version="1.2.54" targetFramework="netnano1.0" />
1010
<package id="nanoFramework.System.Threading" version="1.1.32" targetFramework="netnano1.0" />
1111
<package id="Nerdbank.GitVersioning" version="3.6.133" developmentDependency="true" targetFramework="netnano1.0" />

nanoFramework.WebServer/packages.lock.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,9 @@
3434
},
3535
"nanoFramework.System.Net.Http.Server": {
3636
"type": "Direct",
37-
"requested": "[1.5.113, 1.5.113]",
38-
"resolved": "1.5.113",
39-
"contentHash": "gaCPn1h0VGWRA5gG6FoWlm8W9PgoBMekOsgOKKJEhl90TEMJSI8VM/4Xlgzg8KY6tEKvUkn9uXBoVHa0f2vGLg=="
37+
"requested": "[1.5.118, 1.5.118]",
38+
"resolved": "1.5.118",
39+
"contentHash": "ufWlPDHTEvZEYsXqagHLC9K5v7o6o/lRYF+obNaWeLXlxbLR32TAPXgrSGcIkhjY6wksX77lcqu2wkAgStRdag=="
4040
},
4141
"nanoFramework.System.Text": {
4242
"type": "Direct",

tests/nanoFramework.WebServer.Tests/WebServerTests.cs

Lines changed: 28 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -11,23 +11,6 @@ namespace nanoFramework.WebServer.Tests
1111
[TestClass]
1212
public class WebServerTests
1313
{
14-
[TestMethod]
15-
public void IsRouteMatch_Should_ReturnFalseForEmptyMethod()
16-
{
17-
// Arrange
18-
var route = new CallbackRoutes()
19-
{
20-
Method = "GET",
21-
Route = "/api/test"
22-
};
23-
24-
// Act
25-
var result = WebServer.IsRouteMatch(route, "", "/api/test");
26-
27-
// Assert
28-
Assert.IsFalse(result);
29-
}
30-
3114
[TestMethod]
3215
public void IsRouteMatch_Should_ReturnFalseForNotMatchingMethod()
3316
{
@@ -46,41 +29,42 @@ public void IsRouteMatch_Should_ReturnFalseForNotMatchingMethod()
4629
}
4730

4831
[TestMethod]
49-
[DataRow("GET", "/api/test", "/api/test")]
50-
[DataRow("POST", "/api/test", "/api/test")]
51-
[DataRow("PUT", "/api/test", "/api/test")]
52-
[DataRow("PATCH", "/api/test", "/api/test")]
53-
[DataRow("DELETE", "/api/test", "/api/test")]
54-
[DataRow("GET", "/API/TEST", "/api/test")]
55-
[DataRow("POST", "/API/TEST", "/api/test")]
56-
[DataRow("PUT", "/API/TEST", "/api/test")]
57-
[DataRow("PATCH", "/API/TEST", "/api/test")]
58-
[DataRow("DELETE", "/API/TEST", "/api/test")]
59-
[DataRow("GET", "/api/test", "/API/TEST")]
60-
[DataRow("POST", "/api/test", "/api/test")]
61-
[DataRow("PUT", "/api/test", "/API/TEST")]
62-
[DataRow("PATCH", "/api/test", "/API/TEST")]
63-
[DataRow("DELETE", "/api/test", "/API/TEST")]
64-
[DataRow("GET", "/api/test", "/api/test?id=1234")]
65-
[DataRow("GET", "/api/test", "/api/test?id=")]
66-
[DataRow("GET", "/api/test/resource/name", "/api/test/resource/name")]
67-
[DataRow("GET", "/api/test/resource/name", "/api/test/resource/name?id=1234")]
68-
[DataRow("GET", "/api/test/resource/name", "/api/test/resource/name?test=")]
69-
[DataRow("GET", "/api/test/resource/name", "/api/test/resource/name?")]
70-
[DataRow("GET", "/api/test/resource/name", "/api/test/resource/name?test=&id=123&app=something")]
71-
public void IsRouteMatch_Should_ReturnTrueForMatchingMethodAndRoute(string method, string url, string invokedUrl)
32+
[DataRow("GET", "/api/test", "GET", "/api/test")]
33+
[DataRow("", "/api/test", "GET", "/api/test")]
34+
[DataRow("POST", "/api/test", "POST", "/api/test")]
35+
[DataRow("PUT", "/api/test", "PUT", "/api/test")]
36+
[DataRow("PATCH", "/api/test", "PATCH", "/api/test")]
37+
[DataRow("DELETE", "/api/test", "DELETE", "/api/test")]
38+
[DataRow("GET", "/API/TEST", "GET", "/api/test")]
39+
[DataRow("POST", "/API/TEST", "POST", "/api/test")]
40+
[DataRow("PUT", "/API/TEST", "PUT", "/api/test")]
41+
[DataRow("PATCH", "/API/TEST", "PATCH", "/api/test")]
42+
[DataRow("DELETE", "/API/TEST", "DELETE", "/api/test")]
43+
[DataRow("GET", "/api/test", "GET", "/API/TEST")]
44+
[DataRow("POST", "/api/test", "POST", "/api/test")]
45+
[DataRow("PUT", "/api/test", "PUT", "/API/TEST")]
46+
[DataRow("PATCH", "/api/test", "PATCH", "/API/TEST")]
47+
[DataRow("DELETE", "/api/test", "DELETE", "/API/TEST")]
48+
[DataRow("GET", "/api/test", "GET", "/api/test?id=1234")]
49+
[DataRow("GET", "/api/test", "GET", "/api/test?id=")]
50+
[DataRow("GET", "/api/test/resource/name", "GET", "/api/test/resource/name")]
51+
[DataRow("GET", "/api/test/resource/name", "GET", "/api/test/resource/name?id=1234")]
52+
[DataRow("GET", "/api/test/resource/name", "GET", "/api/test/resource/name?test=")]
53+
[DataRow("GET", "/api/test/resource/name", "GET", "/api/test/resource/name?")]
54+
[DataRow("GET", "/api/test/resource/name", "GET", "/api/test/resource/name?test=&id=123&app=something")]
55+
public void IsRouteMatch_Should_ReturnTrueForMatchingMethodAndRoute(string routeMethod, string routeUrl, string invokedMethod, string invokedUrl)
7256
{
73-
Console.WriteLine(invokedUrl);
57+
Console.WriteLine($"Params: routeMethod: {routeMethod} routeUrl: {routeUrl} invokedMethod: {invokedMethod} invokedUrl: {invokedUrl}");
7458
// Arrange
7559
var route = new CallbackRoutes()
7660
{
77-
Method = method,
78-
Route = url,
61+
Method = routeMethod,
62+
Route = routeUrl,
7963
CaseSensitive = false
8064
};
8165

8266
// Act
83-
var result = WebServer.IsRouteMatch(route, method, invokedUrl);
67+
var result = WebServer.IsRouteMatch(route, invokedMethod, invokedUrl);
8468

8569
// Assert
8670
Assert.IsTrue(result);

0 commit comments

Comments
 (0)