Adding E2E test application and fixing OutputHttpCode when no content (#240)
This commit is contained in:
Родитель
ec4022e268
Коммит
0193d88759
|
@ -104,7 +104,7 @@
|
||||||
<Private>True</Private>
|
<Private>True</Private>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System.Net">
|
<Reference Include="System.Net">
|
||||||
<HintPath>..\packages\nanoFramework.System.Net.1.10.68\lib\System.Net.dll</HintPath>
|
<HintPath>..\packages\nanoFramework.System.Net.1.10.70\lib\System.Net.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System.Net.Http">
|
<Reference Include="System.Net.Http">
|
||||||
<HintPath>..\packages\nanoFramework.System.Net.Http.Server.1.5.118\lib\System.Net.Http.dll</HintPath>
|
<HintPath>..\packages\nanoFramework.System.Net.Http.Server.1.5.118\lib\System.Net.Http.dll</HintPath>
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
<package id="nanoFramework.System.Collections" version="1.5.31" targetFramework="netnano1.0" />
|
<package id="nanoFramework.System.Collections" version="1.5.31" targetFramework="netnano1.0" />
|
||||||
<package id="nanoFramework.System.IO.FileSystem" version="1.1.32" targetFramework="netnano1.0" />
|
<package id="nanoFramework.System.IO.FileSystem" version="1.1.32" targetFramework="netnano1.0" />
|
||||||
<package id="nanoFramework.System.IO.Streams" version="1.1.52" targetFramework="netnano1.0" />
|
<package id="nanoFramework.System.IO.Streams" version="1.1.52" targetFramework="netnano1.0" />
|
||||||
<package id="nanoFramework.System.Net" version="1.10.68" targetFramework="netnano1.0" />
|
<package id="nanoFramework.System.Net" version="1.10.70" targetFramework="netnano1.0" />
|
||||||
<package id="nanoFramework.System.Net.Http.Server" version="1.5.118" targetFramework="netnano1.0" />
|
<package id="nanoFramework.System.Net.Http.Server" version="1.5.118" targetFramework="netnano1.0" />
|
||||||
<package id="nanoFramework.System.Runtime" version="1.0.6" targetFramework="netnano1.0" />
|
<package id="nanoFramework.System.Runtime" version="1.0.6" targetFramework="netnano1.0" />
|
||||||
<package id="nanoFramework.System.Text" version="1.2.54" targetFramework="netnano1.0" />
|
<package id="nanoFramework.System.Text" version="1.2.54" targetFramework="netnano1.0" />
|
||||||
|
|
|
@ -34,9 +34,9 @@
|
||||||
},
|
},
|
||||||
"nanoFramework.System.Net": {
|
"nanoFramework.System.Net": {
|
||||||
"type": "Direct",
|
"type": "Direct",
|
||||||
"requested": "[1.10.68, 1.10.68]",
|
"requested": "[1.10.70, 1.10.70]",
|
||||||
"resolved": "1.10.68",
|
"resolved": "1.10.70",
|
||||||
"contentHash": "PoM4NadhtMBnuGiOPqi+TJZD8xicz0v72hG5gPGDvWXeKDCMYCMqiCqY+di2pRL3qGHkF+hh8kLOf+wBUJBWNQ=="
|
"contentHash": "XP4XdmsCDrXcOJDSfo4zgqccTwPoygBH8y19pnVmrF/EYwbx4WzaMvRE5VnYKu2bp10T78su16+jxzeFZADqDw=="
|
||||||
},
|
},
|
||||||
"nanoFramework.System.Net.Http.Server": {
|
"nanoFramework.System.Net.Http.Server": {
|
||||||
"type": "Direct",
|
"type": "Direct",
|
||||||
|
|
|
@ -15,6 +15,10 @@ Project("{11A8DD76-328B-46DF-9F39-F559912D0360}") = "nanoFramework.WebServer.Fil
|
||||||
EndProject
|
EndProject
|
||||||
Project("{11A8DD76-328B-46DF-9F39-F559912D0360}") = "nanoFramework.WebServer.Tests", "tests\nanoFramework.WebServer.Tests\nanoFramework.WebServer.Tests.nfproj", "{2C2B4750-2A48-4D19-9404-178AAB946482}"
|
Project("{11A8DD76-328B-46DF-9F39-F559912D0360}") = "nanoFramework.WebServer.Tests", "tests\nanoFramework.WebServer.Tests\nanoFramework.WebServer.Tests.nfproj", "{2C2B4750-2A48-4D19-9404-178AAB946482}"
|
||||||
EndProject
|
EndProject
|
||||||
|
Project("{11A8DD76-328B-46DF-9F39-F559912D0360}") = "WebServerE2ETests", "tests\WebServerE2ETests\WebServerE2ETests.nfproj", "{A0611EAD-FB04-44E7-BAD3-459DD0A7FF46}"
|
||||||
|
EndProject
|
||||||
|
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{E76226D2-994C-4EE1-B346-050F31B175BD}"
|
||||||
|
EndProject
|
||||||
Global
|
Global
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
Debug|Any CPU = Debug|Any CPU
|
Debug|Any CPU = Debug|Any CPU
|
||||||
|
@ -39,10 +43,20 @@ Global
|
||||||
{2C2B4750-2A48-4D19-9404-178AAB946482}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{2C2B4750-2A48-4D19-9404-178AAB946482}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{2C2B4750-2A48-4D19-9404-178AAB946482}.Release|Any CPU.Build.0 = Release|Any CPU
|
{2C2B4750-2A48-4D19-9404-178AAB946482}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{2C2B4750-2A48-4D19-9404-178AAB946482}.Release|Any CPU.Deploy.0 = Release|Any CPU
|
{2C2B4750-2A48-4D19-9404-178AAB946482}.Release|Any CPU.Deploy.0 = Release|Any CPU
|
||||||
|
{A0611EAD-FB04-44E7-BAD3-459DD0A7FF46}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{A0611EAD-FB04-44E7-BAD3-459DD0A7FF46}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{A0611EAD-FB04-44E7-BAD3-459DD0A7FF46}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
|
||||||
|
{A0611EAD-FB04-44E7-BAD3-459DD0A7FF46}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{A0611EAD-FB04-44E7-BAD3-459DD0A7FF46}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{A0611EAD-FB04-44E7-BAD3-459DD0A7FF46}.Release|Any CPU.Deploy.0 = Release|Any CPU
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(SolutionProperties) = preSolution
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
HideSolutionNode = FALSE
|
HideSolutionNode = FALSE
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
|
GlobalSection(NestedProjects) = preSolution
|
||||||
|
{2C2B4750-2A48-4D19-9404-178AAB946482} = {E76226D2-994C-4EE1-B346-050F31B175BD}
|
||||||
|
{A0611EAD-FB04-44E7-BAD3-459DD0A7FF46} = {E76226D2-994C-4EE1-B346-050F31B175BD}
|
||||||
|
EndGlobalSection
|
||||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||||
SolutionGuid = {262CE437-AD82-4481-8B77-593288986C70}
|
SolutionGuid = {262CE437-AD82-4481-8B77-593288986C70}
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
|
|
|
@ -560,6 +560,7 @@ namespace nanoFramework.WebServer
|
||||||
}
|
}
|
||||||
|
|
||||||
InvokeRoute(route, context);
|
InvokeRoute(route, context);
|
||||||
|
HandleContextResponse(context);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!isRoute)
|
if (!isRoute)
|
||||||
|
|
|
@ -68,7 +68,7 @@
|
||||||
<Private>True</Private>
|
<Private>True</Private>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System.Net">
|
<Reference Include="System.Net">
|
||||||
<HintPath>..\packages\nanoFramework.System.Net.1.10.68\lib\System.Net.dll</HintPath>
|
<HintPath>..\packages\nanoFramework.System.Net.1.10.70\lib\System.Net.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System.Net.Http">
|
<Reference Include="System.Net.Http">
|
||||||
<HintPath>..\packages\nanoFramework.System.Net.Http.Server.1.5.118\lib\System.Net.Http.dll</HintPath>
|
<HintPath>..\packages\nanoFramework.System.Net.Http.Server.1.5.118\lib\System.Net.Http.dll</HintPath>
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
<package id="nanoFramework.Runtime.Events" version="1.11.15" targetFramework="netnano1.0" />
|
<package id="nanoFramework.Runtime.Events" version="1.11.15" targetFramework="netnano1.0" />
|
||||||
<package id="nanoFramework.System.Collections" version="1.5.31" targetFramework="netnano1.0" />
|
<package id="nanoFramework.System.Collections" version="1.5.31" targetFramework="netnano1.0" />
|
||||||
<package id="nanoFramework.System.IO.Streams" version="1.1.52" targetFramework="netnano1.0" />
|
<package id="nanoFramework.System.IO.Streams" version="1.1.52" targetFramework="netnano1.0" />
|
||||||
<package id="nanoFramework.System.Net" version="1.10.68" targetFramework="netnano1.0" />
|
<package id="nanoFramework.System.Net" version="1.10.70" targetFramework="netnano1.0" />
|
||||||
<package id="nanoFramework.System.Net.Http.Server" version="1.5.118" targetFramework="netnano1.0" />
|
<package id="nanoFramework.System.Net.Http.Server" version="1.5.118" targetFramework="netnano1.0" />
|
||||||
<package id="nanoFramework.System.Text" version="1.2.54" targetFramework="netnano1.0" />
|
<package id="nanoFramework.System.Text" version="1.2.54" targetFramework="netnano1.0" />
|
||||||
<package id="nanoFramework.System.Threading" version="1.1.32" targetFramework="netnano1.0" />
|
<package id="nanoFramework.System.Threading" version="1.1.32" targetFramework="netnano1.0" />
|
||||||
|
|
|
@ -28,9 +28,9 @@
|
||||||
},
|
},
|
||||||
"nanoFramework.System.Net": {
|
"nanoFramework.System.Net": {
|
||||||
"type": "Direct",
|
"type": "Direct",
|
||||||
"requested": "[1.10.68, 1.10.68]",
|
"requested": "[1.10.70, 1.10.70]",
|
||||||
"resolved": "1.10.68",
|
"resolved": "1.10.70",
|
||||||
"contentHash": "PoM4NadhtMBnuGiOPqi+TJZD8xicz0v72hG5gPGDvWXeKDCMYCMqiCqY+di2pRL3qGHkF+hh8kLOf+wBUJBWNQ=="
|
"contentHash": "XP4XdmsCDrXcOJDSfo4zgqccTwPoygBH8y19pnVmrF/EYwbx4WzaMvRE5VnYKu2bp10T78su16+jxzeFZADqDw=="
|
||||||
},
|
},
|
||||||
"nanoFramework.System.Net.Http.Server": {
|
"nanoFramework.System.Net.Http.Server": {
|
||||||
"type": "Direct",
|
"type": "Direct",
|
||||||
|
|
|
@ -0,0 +1,46 @@
|
||||||
|
// Copyright (c) 2020 Laurent Ellerbach and the project contributors
|
||||||
|
// See LICENSE file in the project root for full license information.
|
||||||
|
|
||||||
|
using nanoFramework.WebServer;
|
||||||
|
using System.Net;
|
||||||
|
|
||||||
|
namespace WebServerE2ETests
|
||||||
|
{
|
||||||
|
[Authentication("Basic")]
|
||||||
|
class AuthController
|
||||||
|
{
|
||||||
|
[Route("authbasic")]
|
||||||
|
public void Basic(WebServerEventArgs e)
|
||||||
|
{
|
||||||
|
WebServer.OutputHttpCode(e.Context.Response, HttpStatusCode.OK);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Route("authbasicspecial")]
|
||||||
|
[Authentication("Basic:user2 password")]
|
||||||
|
public void Special(WebServerEventArgs e)
|
||||||
|
{
|
||||||
|
WebServer.OutputHttpCode(e.Context.Response, HttpStatusCode.OK);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Authentication("ApiKey:superKey1234")]
|
||||||
|
[Route("authapi")]
|
||||||
|
public void Key(WebServerEventArgs e)
|
||||||
|
{
|
||||||
|
WebServer.OutputHttpCode(e.Context.Response, HttpStatusCode.OK);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Route("authnone")]
|
||||||
|
[Authentication("None")]
|
||||||
|
public void None(WebServerEventArgs e)
|
||||||
|
{
|
||||||
|
WebServer.OutputHttpCode(e.Context.Response, HttpStatusCode.OK);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Authentication("ApiKey")]
|
||||||
|
[Route("authdefaultapi")]
|
||||||
|
public void DefaultApi(WebServerEventArgs e)
|
||||||
|
{
|
||||||
|
WebServer.OutputHttpCode(e.Context.Response, HttpStatusCode.OK);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,105 @@
|
||||||
|
// Copyright (c) 2020 Laurent Ellerbach and the project contributors
|
||||||
|
// See LICENSE file in the project root for full license information.
|
||||||
|
|
||||||
|
using nanoFramework.Networking;
|
||||||
|
using nanoFramework.WebServer;
|
||||||
|
using System;
|
||||||
|
using System.Diagnostics;
|
||||||
|
using System.IO;
|
||||||
|
using System.Net;
|
||||||
|
using System.Net.NetworkInformation;
|
||||||
|
using System.Threading;
|
||||||
|
|
||||||
|
namespace WebServerE2ETests
|
||||||
|
{
|
||||||
|
public class Program
|
||||||
|
{
|
||||||
|
private const string Ssid = "yourSSID";
|
||||||
|
private const string Password = "YourPAssword";
|
||||||
|
private static WebServer _server;
|
||||||
|
|
||||||
|
public static void Main()
|
||||||
|
{
|
||||||
|
Debug.WriteLine("Hello from nanoFramework WebServer end to end tests!");
|
||||||
|
|
||||||
|
var res = WifiNetworkHelper.ConnectDhcp(Ssid, Password, requiresDateTime: true, token: new CancellationTokenSource(60_000).Token);
|
||||||
|
if (!res)
|
||||||
|
{
|
||||||
|
Debug.WriteLine("Impossible to connect to wifi, most likely invalid credentials");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Debug.WriteLine($"Connected with wifi credentials. IP Address: {GetCurrentIPAddress()}");
|
||||||
|
_server = new WebServer(80, HttpProtocol.Http, new Type[] { typeof(SimpleRouteController), typeof(AuthController) });
|
||||||
|
// To test authentication with various scenarios
|
||||||
|
_server.ApiKey = "ATopSecretAPIKey1234";
|
||||||
|
_server.Credential = new NetworkCredential("topuser", "topPassword");
|
||||||
|
// Add a handler for commands that are received by the server.
|
||||||
|
_server.CommandReceived += ServerCommandReceived;
|
||||||
|
|
||||||
|
// Start the server.
|
||||||
|
_server.Start();
|
||||||
|
|
||||||
|
Thread.Sleep(Timeout.Infinite);
|
||||||
|
|
||||||
|
// Browse our samples repository: https://github.com/nanoframework/samples
|
||||||
|
// Check our documentation online: https://docs.nanoframework.net/
|
||||||
|
// Join our lively Discord community: https://discord.gg/gCyBu8T
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void ServerCommandReceived(object obj, WebServerEventArgs e)
|
||||||
|
{
|
||||||
|
const string FileName = "I:\\Text.txt";
|
||||||
|
var url = e.Context.Request.RawUrl;
|
||||||
|
Debug.WriteLine($"{nameof(ServerCommandReceived)} {e.Context.Request.HttpMethod} {url}");
|
||||||
|
|
||||||
|
if (url.ToLower().IndexOf("/param.htm") == 0)
|
||||||
|
{
|
||||||
|
// Test with parameters
|
||||||
|
var parameters = WebServer.DecodeParam(url);
|
||||||
|
string toOutput = "<html><head>" +
|
||||||
|
"<title>Hi from nanoFramework Server</title></head><body>Here are the parameters of this URL: <br />";
|
||||||
|
foreach (var par in parameters)
|
||||||
|
{
|
||||||
|
toOutput += $"Parameter name: {par.Name}, Value: {par.Value}<br />";
|
||||||
|
}
|
||||||
|
toOutput += "</body></html>";
|
||||||
|
WebServer.OutPutStream(e.Context.Response, toOutput);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else if (url.IndexOf("/Text.txt") == 0)
|
||||||
|
{
|
||||||
|
if (File.Exists(FileName))
|
||||||
|
{
|
||||||
|
WebServer.SendFileOverHTTP(e.Context.Response, FileName);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
WebServer.OutputHttpCode(e.Context.Response, HttpStatusCode.NotFound);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (url.ToLower().IndexOf("/useinternal") == 0)
|
||||||
|
{
|
||||||
|
File.WriteAllText(FileName, "This is a test file for WebServer");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
WebServer.OutPutStream(e.Context.Response, "<html><head>" +
|
||||||
|
"<title>Hi from nanoFramework Server</title></head><body>You want me to say hello in a real HTML page!<br/><a href='/useinternal'>Generate an internal text.txt file</a><br />" +
|
||||||
|
"<a href='/Text.txt'>Download the Text.txt file</a><br>" +
|
||||||
|
"Try this url with parameters: <a href='/param.htm?param1=42&second=24&NAme=Ellerbach'>/param.htm?param1=42&second=24&NAme=Ellerbach</a></body></html>");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static string GetCurrentIPAddress()
|
||||||
|
{
|
||||||
|
NetworkInterface ni = NetworkInterface.GetAllNetworkInterfaces()[0];
|
||||||
|
|
||||||
|
// get first NI ( Wifi on ESP32 )
|
||||||
|
return ni.IPv4Address.ToString();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,33 @@
|
||||||
|
using System.Reflection;
|
||||||
|
using System.Runtime.CompilerServices;
|
||||||
|
using System.Runtime.InteropServices;
|
||||||
|
|
||||||
|
// General Information about an assembly is controlled through the following
|
||||||
|
// set of attributes. Change these attribute values to modify the information
|
||||||
|
// associated with an assembly.
|
||||||
|
[assembly: AssemblyTitle("CSharp.BlankApplication")]
|
||||||
|
[assembly: AssemblyDescription("")]
|
||||||
|
[assembly: AssemblyConfiguration("")]
|
||||||
|
[assembly: AssemblyCompany("")]
|
||||||
|
[assembly: AssemblyProduct("CSharp.BlankApplication")]
|
||||||
|
[assembly: AssemblyCopyright("Copyright © 2024")]
|
||||||
|
[assembly: AssemblyTrademark("")]
|
||||||
|
[assembly: AssemblyCulture("")]
|
||||||
|
|
||||||
|
// Setting ComVisible to false makes the types in this assembly not visible
|
||||||
|
// to COM components. If you need to access a type in this assembly from
|
||||||
|
// COM, set the ComVisible attribute to true on that type.
|
||||||
|
[assembly: ComVisible(false)]
|
||||||
|
|
||||||
|
// Version information for an assembly consists of the following four values:
|
||||||
|
//
|
||||||
|
// Major Version
|
||||||
|
// Minor Version
|
||||||
|
// Build Number
|
||||||
|
// Revision
|
||||||
|
//
|
||||||
|
// You can specify all the values or you can default the Build and Revision Numbers
|
||||||
|
// by using the '*' as shown below:
|
||||||
|
// [assembly: AssemblyVersion("1.0.*")]
|
||||||
|
[assembly: AssemblyVersion("1.0.0.0")]
|
||||||
|
[assembly: AssemblyFileVersion("1.0.0.0")]
|
|
@ -0,0 +1,49 @@
|
||||||
|
// Copyright (c) 2020 Laurent Ellerbach and the project contributors
|
||||||
|
// See LICENSE file in the project root for full license information.
|
||||||
|
|
||||||
|
using nanoFramework.WebServer;
|
||||||
|
using System.Diagnostics;
|
||||||
|
using System.Net;
|
||||||
|
|
||||||
|
namespace WebServerE2ETests
|
||||||
|
{
|
||||||
|
internal class SimpleRouteController
|
||||||
|
{
|
||||||
|
[Route("okcode")]
|
||||||
|
public void OutputWithOKCode(WebServerEventArgs e)
|
||||||
|
{
|
||||||
|
Debug.WriteLine($"{nameof(OutputWithOKCode)} {e.Context.Request.HttpMethod} {e.Context.Request.RawUrl}");
|
||||||
|
WebServer.OutputHttpCode(e.Context.Response, HttpStatusCode.OK);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Route("notfoundcode")]
|
||||||
|
public void OutputWithNotFoundCode(WebServerEventArgs e)
|
||||||
|
{
|
||||||
|
Debug.WriteLine($"{nameof(OutputWithNotFoundCode)} {e.Context.Request.HttpMethod} {e.Context.Request.RawUrl}");
|
||||||
|
WebServer.OutputHttpCode(e.Context.Response, HttpStatusCode.NotFound);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Route("oktext")]
|
||||||
|
public void OutputWithOKText(WebServerEventArgs e)
|
||||||
|
{
|
||||||
|
Debug.WriteLine($"{nameof(OutputWithOKText)} {e.Context.Request.HttpMethod} {e.Context.Request.RawUrl}");
|
||||||
|
WebServer.OutPutStream(e.Context.Response, "OK");
|
||||||
|
}
|
||||||
|
|
||||||
|
[Route("test"), Route("Test2"), Route("tEst42"), Route("TEST")]
|
||||||
|
[CaseSensitive]
|
||||||
|
[Method("GET")]
|
||||||
|
public void RouteGetTest(WebServerEventArgs e)
|
||||||
|
{
|
||||||
|
string route = $"The route asked is {e.Context.Request.RawUrl.TrimStart('/').Split('/')[0]}";
|
||||||
|
e.Context.Response.ContentType = "text/plain";
|
||||||
|
WebServer.OutPutStream(e.Context.Response, route);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Route("test/any")]
|
||||||
|
public void RouteAnyTest(WebServerEventArgs e)
|
||||||
|
{
|
||||||
|
WebServer.OutputHttpCode(e.Context.Response, HttpStatusCode.OK);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,76 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project ToolsVersion="Current" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<PropertyGroup Label="Globals">
|
||||||
|
<NanoFrameworkProjectSystemPath>$(MSBuildExtensionsPath)\nanoFramework\v1.0\</NanoFrameworkProjectSystemPath>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Import Project="$(NanoFrameworkProjectSystemPath)NFProjectSystem.Default.props" Condition="Exists('$(NanoFrameworkProjectSystemPath)NFProjectSystem.Default.props')" />
|
||||||
|
<PropertyGroup>
|
||||||
|
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||||
|
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||||
|
<ProjectTypeGuids>{11A8DD76-328B-46DF-9F39-F559912D0360};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
|
||||||
|
<ProjectGuid>a0611ead-fb04-44e7-bad3-459dd0a7ff46</ProjectGuid>
|
||||||
|
<OutputType>Exe</OutputType>
|
||||||
|
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||||
|
<FileAlignment>512</FileAlignment>
|
||||||
|
<RootNamespace>WebServerE2ETests</RootNamespace>
|
||||||
|
<AssemblyName>WebServerE2ETests</AssemblyName>
|
||||||
|
<TargetFrameworkVersion>v1.0</TargetFrameworkVersion>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Import Project="$(NanoFrameworkProjectSystemPath)NFProjectSystem.props" Condition="Exists('$(NanoFrameworkProjectSystemPath)NFProjectSystem.props')" />
|
||||||
|
<ItemGroup>
|
||||||
|
<Compile Include="AuthController.cs" />
|
||||||
|
<Compile Include="Program.cs" />
|
||||||
|
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||||
|
<Compile Include="SimpleRouteController.cs" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\..\nanoFramework.WebServer.FileSystem\nanoFramework.WebServer.FileSystem.nfproj" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Reference Include="mscorlib">
|
||||||
|
<HintPath>..\..\packages\nanoFramework.CoreLibrary.1.15.5\lib\mscorlib.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="nanoFramework.Runtime.Events">
|
||||||
|
<HintPath>..\..\packages\nanoFramework.Runtime.Events.1.11.15\lib\nanoFramework.Runtime.Events.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="nanoFramework.System.Collections">
|
||||||
|
<HintPath>..\..\packages\nanoFramework.System.Collections.1.5.31\lib\nanoFramework.System.Collections.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="nanoFramework.System.Runtime">
|
||||||
|
<HintPath>..\..\packages\nanoFramework.System.Runtime.1.0.6\lib\nanoFramework.System.Runtime.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="nanoFramework.System.Text">
|
||||||
|
<HintPath>..\..\packages\nanoFramework.System.Text.1.2.54\lib\nanoFramework.System.Text.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="System.Device.Wifi">
|
||||||
|
<HintPath>..\..\packages\nanoFramework.System.Device.Wifi.1.5.71\lib\System.Device.Wifi.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="System.IO.FileSystem">
|
||||||
|
<HintPath>..\..\packages\nanoFramework.System.IO.FileSystem.1.1.32\lib\System.IO.FileSystem.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="System.IO.Streams">
|
||||||
|
<HintPath>..\..\packages\nanoFramework.System.IO.Streams.1.1.52\lib\System.IO.Streams.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="System.Net">
|
||||||
|
<HintPath>..\..\packages\nanoFramework.System.Net.1.10.70\lib\System.Net.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="System.Net.Http">
|
||||||
|
<HintPath>..\..\packages\nanoFramework.System.Net.Http.Server.1.5.118\lib\System.Net.Http.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="System.Threading">
|
||||||
|
<HintPath>..\..\packages\nanoFramework.System.Threading.1.1.32\lib\System.Threading.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<None Include="packages.config" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Content Include="packages.lock.json" />
|
||||||
|
</ItemGroup>
|
||||||
|
<Import Project="$(NanoFrameworkProjectSystemPath)NFProjectSystem.CSharp.targets" Condition="Exists('$(NanoFrameworkProjectSystemPath)NFProjectSystem.CSharp.targets')" />
|
||||||
|
<ProjectExtensions>
|
||||||
|
<ProjectCapabilities>
|
||||||
|
<ProjectConfigurationsDeclaredAsItems />
|
||||||
|
</ProjectCapabilities>
|
||||||
|
</ProjectExtensions>
|
||||||
|
</Project>
|
|
@ -0,0 +1,14 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<packages>
|
||||||
|
<package id="nanoFramework.CoreLibrary" version="1.15.5" targetFramework="netnano1.0" />
|
||||||
|
<package id="nanoFramework.Runtime.Events" version="1.11.15" targetFramework="netnano1.0" />
|
||||||
|
<package id="nanoFramework.System.Collections" version="1.5.31" targetFramework="netnano1.0" />
|
||||||
|
<package id="nanoFramework.System.Device.Wifi" version="1.5.71" targetFramework="netnano1.0" />
|
||||||
|
<package id="nanoFramework.System.IO.FileSystem" version="1.1.32" targetFramework="netnano1.0" />
|
||||||
|
<package id="nanoFramework.System.IO.Streams" version="1.1.52" targetFramework="netnano1.0" />
|
||||||
|
<package id="nanoFramework.System.Net" version="1.10.70" targetFramework="netnano1.0" />
|
||||||
|
<package id="nanoFramework.System.Net.Http.Server" version="1.5.118" targetFramework="netnano1.0" />
|
||||||
|
<package id="nanoFramework.System.Runtime" version="1.0.6" targetFramework="netnano1.0" />
|
||||||
|
<package id="nanoFramework.System.Text" version="1.2.54" targetFramework="netnano1.0" />
|
||||||
|
<package id="nanoFramework.System.Threading" version="1.1.32" targetFramework="netnano1.0" />
|
||||||
|
</packages>
|
|
@ -0,0 +1,73 @@
|
||||||
|
{
|
||||||
|
"version": 1,
|
||||||
|
"dependencies": {
|
||||||
|
".NETnanoFramework,Version=v1.0": {
|
||||||
|
"nanoFramework.CoreLibrary": {
|
||||||
|
"type": "Direct",
|
||||||
|
"requested": "[1.15.5, 1.15.5]",
|
||||||
|
"resolved": "1.15.5",
|
||||||
|
"contentHash": "u2+GvAp1uxLrGdILACAZy+EVKOs28EQ52j8Lz7599egXZ3GBGejjnR2ofhjMQwzrJLlgtyrsx8nSLngDfJNsAg=="
|
||||||
|
},
|
||||||
|
"nanoFramework.Runtime.Events": {
|
||||||
|
"type": "Direct",
|
||||||
|
"requested": "[1.11.15, 1.11.15]",
|
||||||
|
"resolved": "1.11.15",
|
||||||
|
"contentHash": "3uDNSTfiaewDAyi6fOMWYru0JCn/gr8DEv+Ro/V12SzojU9Dyxl5nSVOBtBXts7vErfIthB6SPiK180AMnrI8A=="
|
||||||
|
},
|
||||||
|
"nanoFramework.System.Collections": {
|
||||||
|
"type": "Direct",
|
||||||
|
"requested": "[1.5.31, 1.5.31]",
|
||||||
|
"resolved": "1.5.31",
|
||||||
|
"contentHash": "q7G0BHkbhUzpUJiOQNlZZDSMcZEU2/QJBDiSEQAF23wOya4EBaCXS74jAVcEfkHBgOkF413jKZq5vldpjqUfUw=="
|
||||||
|
},
|
||||||
|
"nanoFramework.System.Device.Wifi": {
|
||||||
|
"type": "Direct",
|
||||||
|
"requested": "[1.5.71, 1.5.71]",
|
||||||
|
"resolved": "1.5.71",
|
||||||
|
"contentHash": "9xOeWznAgLbnEoBLLKSJ3tDL4ZnxVBhUZDfNbMpoGXlb8zYLBMDNOtlWtSJmvpQb4SH7BNoqdEIBtLyXIKMCZw=="
|
||||||
|
},
|
||||||
|
"nanoFramework.System.IO.FileSystem": {
|
||||||
|
"type": "Direct",
|
||||||
|
"requested": "[1.1.32, 1.1.32]",
|
||||||
|
"resolved": "1.1.32",
|
||||||
|
"contentHash": "wZMqZFaQcN5BGlzCMgS7R0pMyNL2hxE+FGrng0xiOydTLCXIJsmloGHJkv9oZ/MxEVYQhTlqsn8vxd8ouQUnOg=="
|
||||||
|
},
|
||||||
|
"nanoFramework.System.IO.Streams": {
|
||||||
|
"type": "Direct",
|
||||||
|
"requested": "[1.1.52, 1.1.52]",
|
||||||
|
"resolved": "1.1.52",
|
||||||
|
"contentHash": "gdExWfWNSl4dgaIoVHHFmhLiRSKAabHA8ueHuErGAWd97qaoN2wSHCtvKqfOu1zuzyccbFpm4HBxVsh6bWMyXw=="
|
||||||
|
},
|
||||||
|
"nanoFramework.System.Net": {
|
||||||
|
"type": "Direct",
|
||||||
|
"requested": "[1.10.70, 1.10.70]",
|
||||||
|
"resolved": "1.10.70",
|
||||||
|
"contentHash": "XP4XdmsCDrXcOJDSfo4zgqccTwPoygBH8y19pnVmrF/EYwbx4WzaMvRE5VnYKu2bp10T78su16+jxzeFZADqDw=="
|
||||||
|
},
|
||||||
|
"nanoFramework.System.Net.Http.Server": {
|
||||||
|
"type": "Direct",
|
||||||
|
"requested": "[1.5.118, 1.5.118]",
|
||||||
|
"resolved": "1.5.118",
|
||||||
|
"contentHash": "ufWlPDHTEvZEYsXqagHLC9K5v7o6o/lRYF+obNaWeLXlxbLR32TAPXgrSGcIkhjY6wksX77lcqu2wkAgStRdag=="
|
||||||
|
},
|
||||||
|
"nanoFramework.System.Runtime": {
|
||||||
|
"type": "Direct",
|
||||||
|
"requested": "[1.0.6, 1.0.6]",
|
||||||
|
"resolved": "1.0.6",
|
||||||
|
"contentHash": "n87itPUMSsOJkUsdoXr0vhiBTggZBMgCtIIC7c+RsVAhF2u/0TU/h+ZLNyFL8Xhl0taPcTN4LiPPTkI+e95Q/g=="
|
||||||
|
},
|
||||||
|
"nanoFramework.System.Text": {
|
||||||
|
"type": "Direct",
|
||||||
|
"requested": "[1.2.54, 1.2.54]",
|
||||||
|
"resolved": "1.2.54",
|
||||||
|
"contentHash": "k3OutSNRMs9di42LQ+5GbpHBY07aMEZWGkaS3Mj3ZU4cWqJc4deFGzRd+LBFQl1mRGdQaM5sl/euTZdcg8R9Zg=="
|
||||||
|
},
|
||||||
|
"nanoFramework.System.Threading": {
|
||||||
|
"type": "Direct",
|
||||||
|
"requested": "[1.1.32, 1.1.32]",
|
||||||
|
"resolved": "1.1.32",
|
||||||
|
"contentHash": "6o7Y4gH15FLuo2FWGLecABiCD57V5QMf5g/hEneV64VmhoXI8Bk7r6BDBPTfAePs738xbc1ECpA5dJmbSmtilg=="
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -53,7 +53,7 @@
|
||||||
<HintPath>..\..\packages\nanoFramework.System.IO.Streams.1.1.52\lib\System.IO.Streams.dll</HintPath>
|
<HintPath>..\..\packages\nanoFramework.System.IO.Streams.1.1.52\lib\System.IO.Streams.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System.Net">
|
<Reference Include="System.Net">
|
||||||
<HintPath>..\..\packages\nanoFramework.System.Net.1.10.68\lib\System.Net.dll</HintPath>
|
<HintPath>..\..\packages\nanoFramework.System.Net.1.10.70\lib\System.Net.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System.Net.Http">
|
<Reference Include="System.Net.Http">
|
||||||
<HintPath>..\..\packages\nanoFramework.System.Net.Http.Server.1.5.118\lib\System.Net.Http.dll</HintPath>
|
<HintPath>..\..\packages\nanoFramework.System.Net.Http.Server.1.5.118\lib\System.Net.Http.dll</HintPath>
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
<package id="nanoFramework.Runtime.Events" version="1.11.15" targetFramework="netnano1.0" />
|
<package id="nanoFramework.Runtime.Events" version="1.11.15" targetFramework="netnano1.0" />
|
||||||
<package id="nanoFramework.System.Collections" version="1.5.31" targetFramework="netnano1.0" />
|
<package id="nanoFramework.System.Collections" version="1.5.31" targetFramework="netnano1.0" />
|
||||||
<package id="nanoFramework.System.IO.Streams" version="1.1.52" targetFramework="netnano1.0" />
|
<package id="nanoFramework.System.IO.Streams" version="1.1.52" targetFramework="netnano1.0" />
|
||||||
<package id="nanoFramework.System.Net" version="1.10.68" targetFramework="netnano1.0" />
|
<package id="nanoFramework.System.Net" version="1.10.70" targetFramework="netnano1.0" />
|
||||||
<package id="nanoFramework.System.Net.Http.Server" version="1.5.118" targetFramework="netnano1.0" />
|
<package id="nanoFramework.System.Net.Http.Server" version="1.5.118" targetFramework="netnano1.0" />
|
||||||
<package id="nanoFramework.System.Text" version="1.2.54" targetFramework="netnano1.0" />
|
<package id="nanoFramework.System.Text" version="1.2.54" targetFramework="netnano1.0" />
|
||||||
<package id="nanoFramework.System.Threading" version="1.1.32" targetFramework="netnano1.0" />
|
<package id="nanoFramework.System.Threading" version="1.1.32" targetFramework="netnano1.0" />
|
||||||
|
|
|
@ -28,9 +28,9 @@
|
||||||
},
|
},
|
||||||
"nanoFramework.System.Net": {
|
"nanoFramework.System.Net": {
|
||||||
"type": "Direct",
|
"type": "Direct",
|
||||||
"requested": "[1.10.68, 1.10.68]",
|
"requested": "[1.10.70, 1.10.70]",
|
||||||
"resolved": "1.10.68",
|
"resolved": "1.10.70",
|
||||||
"contentHash": "PoM4NadhtMBnuGiOPqi+TJZD8xicz0v72hG5gPGDvWXeKDCMYCMqiCqY+di2pRL3qGHkF+hh8kLOf+wBUJBWNQ=="
|
"contentHash": "XP4XdmsCDrXcOJDSfo4zgqccTwPoygBH8y19pnVmrF/EYwbx4WzaMvRE5VnYKu2bp10T78su16+jxzeFZADqDw=="
|
||||||
},
|
},
|
||||||
"nanoFramework.System.Net.Http.Server": {
|
"nanoFramework.System.Net.Http.Server": {
|
||||||
"type": "Direct",
|
"type": "Direct",
|
||||||
|
|
Загрузка…
Ссылка в новой задаче