mirror of
https://github.com/aaru-dps/Aaru.git
synced 2025-12-16 19:24:25 +00:00
Support receiving report V2 in server.
This commit is contained in:
@@ -40,6 +40,7 @@ using System.Web.Hosting;
|
|||||||
using System.Web.Http;
|
using System.Web.Http;
|
||||||
using System.Xml.Serialization;
|
using System.Xml.Serialization;
|
||||||
using DiscImageChef.CommonTypes.Metadata;
|
using DiscImageChef.CommonTypes.Metadata;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
|
||||||
namespace DiscImageChef.Server.Controllers
|
namespace DiscImageChef.Server.Controllers
|
||||||
{
|
{
|
||||||
@@ -93,6 +94,59 @@ namespace DiscImageChef.Server.Controllers
|
|||||||
#else
|
#else
|
||||||
response.Content = new StringContent("error", System.Text.Encoding.UTF8, "text/plain");
|
response.Content = new StringContent("error", System.Text.Encoding.UTF8, "text/plain");
|
||||||
return response;
|
return response;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// Receives a report from DiscImageChef.Core, verifies it's in the correct format and stores it on the server
|
||||||
|
/// </summary>
|
||||||
|
/// <returns>HTTP response</returns>
|
||||||
|
[Route("api/uploadreportv2")]
|
||||||
|
[HttpPost]
|
||||||
|
public HttpResponseMessage UploadReportV2()
|
||||||
|
{
|
||||||
|
HttpResponseMessage response = new HttpResponseMessage {StatusCode = HttpStatusCode.OK};
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
HttpRequest request = HttpContext.Current.Request;
|
||||||
|
|
||||||
|
StreamReader sr = new StreamReader(request.InputStream);
|
||||||
|
string jsonData = sr.ReadToEnd();
|
||||||
|
DeviceReportV2 newReport = JsonConvert.DeserializeObject<DeviceReportV2>(jsonData);
|
||||||
|
|
||||||
|
if(newReport == null)
|
||||||
|
{
|
||||||
|
response.Content = new StringContent("notstats", Encoding.UTF8, "text/plain");
|
||||||
|
return response;
|
||||||
|
}
|
||||||
|
|
||||||
|
Random rng = new Random();
|
||||||
|
string filename = $"NewReport_{DateTime.UtcNow:yyyyMMddHHmmssfff}_{rng.Next()}.json";
|
||||||
|
while(File.Exists(Path.Combine(HostingEnvironment.MapPath("~") ?? throw new InvalidOperationException(),
|
||||||
|
"Upload", filename)))
|
||||||
|
filename = $"NewReport_{DateTime.UtcNow:yyyyMMddHHmmssfff}_{rng.Next()}.json";
|
||||||
|
|
||||||
|
FileStream newFile =
|
||||||
|
new
|
||||||
|
FileStream(Path.Combine(HostingEnvironment.MapPath("~") ?? throw new InvalidOperationException(), "Upload", filename),
|
||||||
|
FileMode.CreateNew, FileAccess.ReadWrite, FileShare.None);
|
||||||
|
StreamWriter sw = new StreamWriter(newFile);
|
||||||
|
sw.Write(jsonData);
|
||||||
|
sw.Close();
|
||||||
|
newFile.Close();
|
||||||
|
|
||||||
|
response.Content = new StringContent("ok", Encoding.UTF8, "text/plain");
|
||||||
|
return response;
|
||||||
|
}
|
||||||
|
// ReSharper disable once RedundantCatchClause
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
#if DEBUG
|
||||||
|
throw;
|
||||||
|
#else
|
||||||
|
response.Content = new StringContent("error", System.Text.Encoding.UTF8, "text/plain");
|
||||||
|
return response;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,7 +4,6 @@
|
|||||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||||
<SchemaVersion>2.0</SchemaVersion>
|
<SchemaVersion>2.0</SchemaVersion>
|
||||||
<ProjectGuid>{75342D7A-C5EA-4A6F-A511-850B54310E5B}</ProjectGuid>
|
|
||||||
<ProjectTypeGuids>{349C5851-65DF-11DA-9384-00065B846F21};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
|
<ProjectTypeGuids>{349C5851-65DF-11DA-9384-00065B846F21};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
|
||||||
<OutputType>Library</OutputType>
|
<OutputType>Library</OutputType>
|
||||||
<RootNamespace>DiscImageChef.Server</RootNamespace>
|
<RootNamespace>DiscImageChef.Server</RootNamespace>
|
||||||
@@ -44,7 +43,7 @@
|
|||||||
<DebugType>full</DebugType>
|
<DebugType>full</DebugType>
|
||||||
<Optimize>false</Optimize>
|
<Optimize>false</Optimize>
|
||||||
<OutputPath>bin</OutputPath>
|
<OutputPath>bin</OutputPath>
|
||||||
<DefineConstants>DEBUG;</DefineConstants>
|
<DefineConstants>DEBUG;NET461</DefineConstants>
|
||||||
<ErrorReport>prompt</ErrorReport>
|
<ErrorReport>prompt</ErrorReport>
|
||||||
<WarningLevel>4</WarningLevel>
|
<WarningLevel>4</WarningLevel>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
@@ -114,12 +113,8 @@
|
|||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ProjectReference Include="..\DiscImageChef.CommonTypes\DiscImageChef.CommonTypes.csproj">
|
<ProjectReference Include="..\DiscImageChef.CommonTypes\DiscImageChef.CommonTypes.csproj">
|
||||||
<Project>{F2B84194-26EB-4227-B1C5-6602517E85AE}</Project>
|
|
||||||
<Name>DiscImageChef.CommonTypes</Name>
|
|
||||||
</ProjectReference>
|
</ProjectReference>
|
||||||
<ProjectReference Include="..\DiscImageChef.Decoders\DiscImageChef.Decoders.csproj">
|
<ProjectReference Include="..\DiscImageChef.Decoders\DiscImageChef.Decoders.csproj">
|
||||||
<Project>{0BEB3088-B634-4289-AE17-CDF2D25D00D5}</Project>
|
|
||||||
<Name>DiscImageChef.Decoders</Name>
|
|
||||||
</ProjectReference>
|
</ProjectReference>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|||||||
Reference in New Issue
Block a user