mirror of
https://github.com/BililiveRecorder/BililiveRecorder.git
synced 2024-11-15 19:22:19 +08:00
Web: Merge to one project, implement config GET/POST
This commit is contained in:
parent
abd62dc378
commit
f045ed4784
|
@ -1,22 +0,0 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net5.0</TargetFramework>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="GraphQL.Server.Core" Version="5.0.2" />
|
||||
<PackageReference Include="GraphQL.Server.Transports.AspNetCore.SystemTextJson" Version="5.0.2" />
|
||||
<PackageReference Include="GraphQL.Server.Transports.Subscriptions.WebSockets" Version="5.0.2" />
|
||||
<PackageReference Include="GraphQL.Server.Ui.Altair" Version="5.0.2" />
|
||||
<PackageReference Include="GraphQL.Server.Ui.GraphiQL" Version="5.0.2" />
|
||||
<PackageReference Include="GraphQL.Server.Ui.Playground" Version="5.0.2" />
|
||||
<PackageReference Include="GraphQL.Server.Ui.Voyager" Version="5.0.2" />
|
||||
<PackageReference Include="GraphQL.SystemReactive" Version="4.5.0" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\BililiveRecorder.Core\BililiveRecorder.Core.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
|
@ -3,7 +3,7 @@ using AutoMapper;
|
|||
using BililiveRecorder.Core;
|
||||
using BililiveRecorder.Core.Config.V2;
|
||||
using BililiveRecorder.Web.Models;
|
||||
using BililiveRecorder.Web.Schemas.Types;
|
||||
using BililiveRecorder.Web.Models.Rest;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
|
||||
namespace BililiveRecorder.Web.Api
|
||||
|
|
|
@ -2,6 +2,7 @@ using AutoMapper;
|
|||
using BililiveRecorder.Core;
|
||||
using BililiveRecorder.Core.Config.V2;
|
||||
using BililiveRecorder.Web.Models;
|
||||
using BililiveRecorder.Web.Models.Rest;
|
||||
|
||||
namespace BililiveRecorder.Web.Api
|
||||
{
|
||||
|
|
|
@ -4,7 +4,7 @@ using System.Threading.Tasks;
|
|||
using AutoMapper;
|
||||
using BililiveRecorder.Core;
|
||||
using BililiveRecorder.Web.Models;
|
||||
using BililiveRecorder.Web.Schemas.Types;
|
||||
using BililiveRecorder.Web.Models.Rest;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
using BililiveRecorder.Web.Models;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
|
||||
namespace BililiveRecorder.Web.Api
|
||||
|
@ -10,6 +11,6 @@ namespace BililiveRecorder.Web.Api
|
|||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[HttpGet]
|
||||
public Schemas.Types.RecorderVersion GetVersion() => Schemas.Types.RecorderVersion.Instance;
|
||||
public RecorderVersion GetVersion() => RecorderVersion.Instance;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk.Web">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net5.0</TargetFramework>
|
||||
<TargetFramework>net6.0</TargetFramework>
|
||||
<GenerateDocumentationFile>True</GenerateDocumentationFile>
|
||||
<NoWarn>1701;1702;1591</NoWarn>
|
||||
</PropertyGroup>
|
||||
|
@ -9,12 +9,20 @@
|
|||
<ItemGroup>
|
||||
<PackageReference Include="AutoMapper" Version="11.0.1" />
|
||||
<PackageReference Include="AutoMapper.Extensions.Microsoft.DependencyInjection" Version="11.0.0" />
|
||||
<PackageReference Include="GraphQL.Server.Core" Version="5.0.2" />
|
||||
<PackageReference Include="GraphQL.Server.Transports.AspNetCore.NewtonsoftJson" Version="5.0.2" />
|
||||
<PackageReference Include="GraphQL.Server.Transports.Subscriptions.WebSockets" Version="5.0.2" />
|
||||
<PackageReference Include="GraphQL.Server.Ui.Altair" Version="5.0.2" />
|
||||
<PackageReference Include="GraphQL.Server.Ui.GraphiQL" Version="5.0.2" />
|
||||
<PackageReference Include="GraphQL.Server.Ui.Playground" Version="5.0.2" />
|
||||
<PackageReference Include="GraphQL.Server.Ui.Voyager" Version="5.0.2" />
|
||||
<PackageReference Include="GraphQL.SystemReactive" Version="4.5.0" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="6.0.3" />
|
||||
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.3.0" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\BililiveRecorder.Web.Schemas\BililiveRecorder.Web.Schemas.csproj" />
|
||||
<ProjectReference Include="..\BililiveRecorder.Core\BililiveRecorder.Core.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
|
|
@ -1,11 +1,12 @@
|
|||
using System;
|
||||
using System.Linq;
|
||||
using BililiveRecorder.Core;
|
||||
using BililiveRecorder.Web.Schemas.Types;
|
||||
using BililiveRecorder.Web.Models;
|
||||
using BililiveRecorder.Web.Models.Graphql;
|
||||
using GraphQL;
|
||||
using GraphQL.Types;
|
||||
|
||||
namespace BililiveRecorder.Web.Schemas
|
||||
namespace BililiveRecorder.Web.Graphql
|
||||
{
|
||||
internal class RecorderMutation : ObjectGraphType
|
||||
{
|
||||
|
@ -50,9 +51,7 @@ namespace BililiveRecorder.Web.Schemas
|
|||
return null;
|
||||
}
|
||||
else
|
||||
{
|
||||
return this.recorder.AddRoom(roomid, enabled);
|
||||
}
|
||||
});
|
||||
|
||||
this.Field<RoomType>("removeRoom",
|
|
@ -2,11 +2,12 @@ using System;
|
|||
using System.Linq;
|
||||
using BililiveRecorder.Core;
|
||||
using BililiveRecorder.Core.Config.V2;
|
||||
using BililiveRecorder.Web.Schemas.Types;
|
||||
using BililiveRecorder.Web.Models;
|
||||
using BililiveRecorder.Web.Models.Graphql;
|
||||
using GraphQL;
|
||||
using GraphQL.Types;
|
||||
|
||||
namespace BililiveRecorder.Web.Schemas
|
||||
namespace BililiveRecorder.Web.Graphql
|
||||
{
|
||||
internal class RecorderQuery : ObjectGraphType
|
||||
{
|
|
@ -2,7 +2,7 @@ using System;
|
|||
using BililiveRecorder.Core;
|
||||
using GraphQL.Types;
|
||||
|
||||
namespace BililiveRecorder.Web.Schemas
|
||||
namespace BililiveRecorder.Web.Graphql
|
||||
{
|
||||
public class RecorderSchema : Schema
|
||||
{
|
|
@ -1,6 +1,6 @@
|
|||
using GraphQL.Types;
|
||||
|
||||
namespace BililiveRecorder.Web.Schemas
|
||||
namespace BililiveRecorder.Web.Graphql
|
||||
{
|
||||
internal class RecorderSubscription : ObjectGraphType
|
||||
{
|
|
@ -7,7 +7,135 @@ using BililiveRecorder.Core.Config.V2;
|
|||
using GraphQL.Types;
|
||||
using HierarchicalPropertyDefault;
|
||||
#nullable enable
|
||||
namespace BililiveRecorder.Web.Schemas.Types
|
||||
namespace BililiveRecorder.Web.Models
|
||||
{
|
||||
public class SetRoomConfig
|
||||
{
|
||||
public bool? AutoRecord { get; set; }
|
||||
public Optional<RecordMode>? OptionalRecordMode { get; set; }
|
||||
public Optional<CuttingMode>? OptionalCuttingMode { get; set; }
|
||||
public Optional<uint>? OptionalCuttingNumber { get; set; }
|
||||
public Optional<bool>? OptionalRecordDanmaku { get; set; }
|
||||
public Optional<bool>? OptionalRecordDanmakuRaw { get; set; }
|
||||
public Optional<bool>? OptionalRecordDanmakuSuperChat { get; set; }
|
||||
public Optional<bool>? OptionalRecordDanmakuGift { get; set; }
|
||||
public Optional<bool>? OptionalRecordDanmakuGuard { get; set; }
|
||||
public Optional<string?>? OptionalRecordingQuality { get; set; }
|
||||
|
||||
public void ApplyTo(RoomConfig config)
|
||||
{
|
||||
if (this.AutoRecord.HasValue) config.AutoRecord = this.AutoRecord.Value;
|
||||
if (this.OptionalRecordMode.HasValue) config.OptionalRecordMode = this.OptionalRecordMode.Value;
|
||||
if (this.OptionalCuttingMode.HasValue) config.OptionalCuttingMode = this.OptionalCuttingMode.Value;
|
||||
if (this.OptionalCuttingNumber.HasValue) config.OptionalCuttingNumber = this.OptionalCuttingNumber.Value;
|
||||
if (this.OptionalRecordDanmaku.HasValue) config.OptionalRecordDanmaku = this.OptionalRecordDanmaku.Value;
|
||||
if (this.OptionalRecordDanmakuRaw.HasValue) config.OptionalRecordDanmakuRaw = this.OptionalRecordDanmakuRaw.Value;
|
||||
if (this.OptionalRecordDanmakuSuperChat.HasValue) config.OptionalRecordDanmakuSuperChat = this.OptionalRecordDanmakuSuperChat.Value;
|
||||
if (this.OptionalRecordDanmakuGift.HasValue) config.OptionalRecordDanmakuGift = this.OptionalRecordDanmakuGift.Value;
|
||||
if (this.OptionalRecordDanmakuGuard.HasValue) config.OptionalRecordDanmakuGuard = this.OptionalRecordDanmakuGuard.Value;
|
||||
if (this.OptionalRecordingQuality.HasValue) config.OptionalRecordingQuality = this.OptionalRecordingQuality.Value;
|
||||
}
|
||||
}
|
||||
|
||||
public class SetGlobalConfig
|
||||
{
|
||||
public Optional<RecordMode>? OptionalRecordMode { get; set; }
|
||||
public Optional<CuttingMode>? OptionalCuttingMode { get; set; }
|
||||
public Optional<uint>? OptionalCuttingNumber { get; set; }
|
||||
public Optional<bool>? OptionalRecordDanmaku { get; set; }
|
||||
public Optional<bool>? OptionalRecordDanmakuRaw { get; set; }
|
||||
public Optional<bool>? OptionalRecordDanmakuSuperChat { get; set; }
|
||||
public Optional<bool>? OptionalRecordDanmakuGift { get; set; }
|
||||
public Optional<bool>? OptionalRecordDanmakuGuard { get; set; }
|
||||
public Optional<string?>? OptionalRecordingQuality { get; set; }
|
||||
public Optional<string?>? OptionalRecordFilenameFormat { get; set; }
|
||||
public Optional<string?>? OptionalWebHookUrls { get; set; }
|
||||
public Optional<string?>? OptionalWebHookUrlsV2 { get; set; }
|
||||
public Optional<bool>? OptionalWpfShowTitleAndArea { get; set; }
|
||||
public Optional<string?>? OptionalCookie { get; set; }
|
||||
public Optional<string?>? OptionalLiveApiHost { get; set; }
|
||||
public Optional<uint>? OptionalTimingCheckInterval { get; set; }
|
||||
public Optional<uint>? OptionalTimingStreamRetry { get; set; }
|
||||
public Optional<uint>? OptionalTimingStreamRetryNoQn { get; set; }
|
||||
public Optional<uint>? OptionalTimingStreamConnect { get; set; }
|
||||
public Optional<uint>? OptionalTimingDanmakuRetry { get; set; }
|
||||
public Optional<uint>? OptionalTimingWatchdogTimeout { get; set; }
|
||||
public Optional<uint>? OptionalRecordDanmakuFlushInterval { get; set; }
|
||||
|
||||
public void ApplyTo(GlobalConfig config)
|
||||
{
|
||||
if (this.OptionalRecordMode.HasValue) config.OptionalRecordMode = this.OptionalRecordMode.Value;
|
||||
if (this.OptionalCuttingMode.HasValue) config.OptionalCuttingMode = this.OptionalCuttingMode.Value;
|
||||
if (this.OptionalCuttingNumber.HasValue) config.OptionalCuttingNumber = this.OptionalCuttingNumber.Value;
|
||||
if (this.OptionalRecordDanmaku.HasValue) config.OptionalRecordDanmaku = this.OptionalRecordDanmaku.Value;
|
||||
if (this.OptionalRecordDanmakuRaw.HasValue) config.OptionalRecordDanmakuRaw = this.OptionalRecordDanmakuRaw.Value;
|
||||
if (this.OptionalRecordDanmakuSuperChat.HasValue) config.OptionalRecordDanmakuSuperChat = this.OptionalRecordDanmakuSuperChat.Value;
|
||||
if (this.OptionalRecordDanmakuGift.HasValue) config.OptionalRecordDanmakuGift = this.OptionalRecordDanmakuGift.Value;
|
||||
if (this.OptionalRecordDanmakuGuard.HasValue) config.OptionalRecordDanmakuGuard = this.OptionalRecordDanmakuGuard.Value;
|
||||
if (this.OptionalRecordingQuality.HasValue) config.OptionalRecordingQuality = this.OptionalRecordingQuality.Value;
|
||||
if (this.OptionalRecordFilenameFormat.HasValue) config.OptionalRecordFilenameFormat = this.OptionalRecordFilenameFormat.Value;
|
||||
if (this.OptionalWebHookUrls.HasValue) config.OptionalWebHookUrls = this.OptionalWebHookUrls.Value;
|
||||
if (this.OptionalWebHookUrlsV2.HasValue) config.OptionalWebHookUrlsV2 = this.OptionalWebHookUrlsV2.Value;
|
||||
if (this.OptionalWpfShowTitleAndArea.HasValue) config.OptionalWpfShowTitleAndArea = this.OptionalWpfShowTitleAndArea.Value;
|
||||
if (this.OptionalCookie.HasValue) config.OptionalCookie = this.OptionalCookie.Value;
|
||||
if (this.OptionalLiveApiHost.HasValue) config.OptionalLiveApiHost = this.OptionalLiveApiHost.Value;
|
||||
if (this.OptionalTimingCheckInterval.HasValue) config.OptionalTimingCheckInterval = this.OptionalTimingCheckInterval.Value;
|
||||
if (this.OptionalTimingStreamRetry.HasValue) config.OptionalTimingStreamRetry = this.OptionalTimingStreamRetry.Value;
|
||||
if (this.OptionalTimingStreamRetryNoQn.HasValue) config.OptionalTimingStreamRetryNoQn = this.OptionalTimingStreamRetryNoQn.Value;
|
||||
if (this.OptionalTimingStreamConnect.HasValue) config.OptionalTimingStreamConnect = this.OptionalTimingStreamConnect.Value;
|
||||
if (this.OptionalTimingDanmakuRetry.HasValue) config.OptionalTimingDanmakuRetry = this.OptionalTimingDanmakuRetry.Value;
|
||||
if (this.OptionalTimingWatchdogTimeout.HasValue) config.OptionalTimingWatchdogTimeout = this.OptionalTimingWatchdogTimeout.Value;
|
||||
if (this.OptionalRecordDanmakuFlushInterval.HasValue) config.OptionalRecordDanmakuFlushInterval = this.OptionalRecordDanmakuFlushInterval.Value;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
namespace BililiveRecorder.Web.Models.Rest
|
||||
{
|
||||
public class RoomConfigDto
|
||||
{
|
||||
public bool AutoRecord { get; set; }
|
||||
public Optional<RecordMode> OptionalRecordMode { get; set; }
|
||||
public Optional<CuttingMode> OptionalCuttingMode { get; set; }
|
||||
public Optional<uint> OptionalCuttingNumber { get; set; }
|
||||
public Optional<bool> OptionalRecordDanmaku { get; set; }
|
||||
public Optional<bool> OptionalRecordDanmakuRaw { get; set; }
|
||||
public Optional<bool> OptionalRecordDanmakuSuperChat { get; set; }
|
||||
public Optional<bool> OptionalRecordDanmakuGift { get; set; }
|
||||
public Optional<bool> OptionalRecordDanmakuGuard { get; set; }
|
||||
public Optional<string?> OptionalRecordingQuality { get; set; }
|
||||
}
|
||||
|
||||
public class GlobalConfigDto
|
||||
{
|
||||
public Optional<RecordMode> OptionalRecordMode { get; set; }
|
||||
public Optional<CuttingMode> OptionalCuttingMode { get; set; }
|
||||
public Optional<uint> OptionalCuttingNumber { get; set; }
|
||||
public Optional<bool> OptionalRecordDanmaku { get; set; }
|
||||
public Optional<bool> OptionalRecordDanmakuRaw { get; set; }
|
||||
public Optional<bool> OptionalRecordDanmakuSuperChat { get; set; }
|
||||
public Optional<bool> OptionalRecordDanmakuGift { get; set; }
|
||||
public Optional<bool> OptionalRecordDanmakuGuard { get; set; }
|
||||
public Optional<string?> OptionalRecordingQuality { get; set; }
|
||||
public Optional<string?> OptionalRecordFilenameFormat { get; set; }
|
||||
public Optional<string?> OptionalWebHookUrls { get; set; }
|
||||
public Optional<string?> OptionalWebHookUrlsV2 { get; set; }
|
||||
public Optional<bool> OptionalWpfShowTitleAndArea { get; set; }
|
||||
public Optional<string?> OptionalCookie { get; set; }
|
||||
public Optional<string?> OptionalLiveApiHost { get; set; }
|
||||
public Optional<uint> OptionalTimingCheckInterval { get; set; }
|
||||
public Optional<uint> OptionalTimingStreamRetry { get; set; }
|
||||
public Optional<uint> OptionalTimingStreamRetryNoQn { get; set; }
|
||||
public Optional<uint> OptionalTimingStreamConnect { get; set; }
|
||||
public Optional<uint> OptionalTimingDanmakuRetry { get; set; }
|
||||
public Optional<uint> OptionalTimingWatchdogTimeout { get; set; }
|
||||
public Optional<uint> OptionalRecordDanmakuFlushInterval { get; set; }
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
namespace BililiveRecorder.Web.Models.Graphql
|
||||
{
|
||||
internal class RoomConfigType : ObjectGraphType<RoomConfig>
|
||||
{
|
||||
|
@ -85,34 +213,6 @@ namespace BililiveRecorder.Web.Schemas.Types
|
|||
}
|
||||
}
|
||||
|
||||
public class SetRoomConfig // TODO MOVE THIS TYPE
|
||||
{
|
||||
public bool? AutoRecord { get; set; }
|
||||
public Optional<RecordMode>? OptionalRecordMode { get; set; }
|
||||
public Optional<CuttingMode>? OptionalCuttingMode { get; set; }
|
||||
public Optional<uint>? OptionalCuttingNumber { get; set; }
|
||||
public Optional<bool>? OptionalRecordDanmaku { get; set; }
|
||||
public Optional<bool>? OptionalRecordDanmakuRaw { get; set; }
|
||||
public Optional<bool>? OptionalRecordDanmakuSuperChat { get; set; }
|
||||
public Optional<bool>? OptionalRecordDanmakuGift { get; set; }
|
||||
public Optional<bool>? OptionalRecordDanmakuGuard { get; set; }
|
||||
public Optional<string?>? OptionalRecordingQuality { get; set; }
|
||||
|
||||
public void ApplyTo(RoomConfig config)
|
||||
{
|
||||
if (this.AutoRecord.HasValue) config.AutoRecord = this.AutoRecord.Value;
|
||||
if (this.OptionalRecordMode.HasValue) config.OptionalRecordMode = this.OptionalRecordMode.Value;
|
||||
if (this.OptionalCuttingMode.HasValue) config.OptionalCuttingMode = this.OptionalCuttingMode.Value;
|
||||
if (this.OptionalCuttingNumber.HasValue) config.OptionalCuttingNumber = this.OptionalCuttingNumber.Value;
|
||||
if (this.OptionalRecordDanmaku.HasValue) config.OptionalRecordDanmaku = this.OptionalRecordDanmaku.Value;
|
||||
if (this.OptionalRecordDanmakuRaw.HasValue) config.OptionalRecordDanmakuRaw = this.OptionalRecordDanmakuRaw.Value;
|
||||
if (this.OptionalRecordDanmakuSuperChat.HasValue) config.OptionalRecordDanmakuSuperChat = this.OptionalRecordDanmakuSuperChat.Value;
|
||||
if (this.OptionalRecordDanmakuGift.HasValue) config.OptionalRecordDanmakuGift = this.OptionalRecordDanmakuGift.Value;
|
||||
if (this.OptionalRecordDanmakuGuard.HasValue) config.OptionalRecordDanmakuGuard = this.OptionalRecordDanmakuGuard.Value;
|
||||
if (this.OptionalRecordingQuality.HasValue) config.OptionalRecordingQuality = this.OptionalRecordingQuality.Value;
|
||||
}
|
||||
}
|
||||
|
||||
internal class SetRoomConfigType : InputObjectGraphType<SetRoomConfig>
|
||||
{
|
||||
public SetRoomConfigType()
|
||||
|
@ -130,58 +230,6 @@ namespace BililiveRecorder.Web.Schemas.Types
|
|||
}
|
||||
}
|
||||
|
||||
public class SetGlobalConfig // TODO MOVE THIS TYPE
|
||||
{
|
||||
public Optional<RecordMode>? OptionalRecordMode { get; set; }
|
||||
public Optional<CuttingMode>? OptionalCuttingMode { get; set; }
|
||||
public Optional<uint>? OptionalCuttingNumber { get; set; }
|
||||
public Optional<bool>? OptionalRecordDanmaku { get; set; }
|
||||
public Optional<bool>? OptionalRecordDanmakuRaw { get; set; }
|
||||
public Optional<bool>? OptionalRecordDanmakuSuperChat { get; set; }
|
||||
public Optional<bool>? OptionalRecordDanmakuGift { get; set; }
|
||||
public Optional<bool>? OptionalRecordDanmakuGuard { get; set; }
|
||||
public Optional<string?>? OptionalRecordingQuality { get; set; }
|
||||
public Optional<string?>? OptionalRecordFilenameFormat { get; set; }
|
||||
public Optional<string?>? OptionalWebHookUrls { get; set; }
|
||||
public Optional<string?>? OptionalWebHookUrlsV2 { get; set; }
|
||||
public Optional<bool>? OptionalWpfShowTitleAndArea { get; set; }
|
||||
public Optional<string?>? OptionalCookie { get; set; }
|
||||
public Optional<string?>? OptionalLiveApiHost { get; set; }
|
||||
public Optional<uint>? OptionalTimingCheckInterval { get; set; }
|
||||
public Optional<uint>? OptionalTimingStreamRetry { get; set; }
|
||||
public Optional<uint>? OptionalTimingStreamRetryNoQn { get; set; }
|
||||
public Optional<uint>? OptionalTimingStreamConnect { get; set; }
|
||||
public Optional<uint>? OptionalTimingDanmakuRetry { get; set; }
|
||||
public Optional<uint>? OptionalTimingWatchdogTimeout { get; set; }
|
||||
public Optional<uint>? OptionalRecordDanmakuFlushInterval { get; set; }
|
||||
|
||||
public void ApplyTo(GlobalConfig config)
|
||||
{
|
||||
if (this.OptionalRecordMode.HasValue) config.OptionalRecordMode = this.OptionalRecordMode.Value;
|
||||
if (this.OptionalCuttingMode.HasValue) config.OptionalCuttingMode = this.OptionalCuttingMode.Value;
|
||||
if (this.OptionalCuttingNumber.HasValue) config.OptionalCuttingNumber = this.OptionalCuttingNumber.Value;
|
||||
if (this.OptionalRecordDanmaku.HasValue) config.OptionalRecordDanmaku = this.OptionalRecordDanmaku.Value;
|
||||
if (this.OptionalRecordDanmakuRaw.HasValue) config.OptionalRecordDanmakuRaw = this.OptionalRecordDanmakuRaw.Value;
|
||||
if (this.OptionalRecordDanmakuSuperChat.HasValue) config.OptionalRecordDanmakuSuperChat = this.OptionalRecordDanmakuSuperChat.Value;
|
||||
if (this.OptionalRecordDanmakuGift.HasValue) config.OptionalRecordDanmakuGift = this.OptionalRecordDanmakuGift.Value;
|
||||
if (this.OptionalRecordDanmakuGuard.HasValue) config.OptionalRecordDanmakuGuard = this.OptionalRecordDanmakuGuard.Value;
|
||||
if (this.OptionalRecordingQuality.HasValue) config.OptionalRecordingQuality = this.OptionalRecordingQuality.Value;
|
||||
if (this.OptionalRecordFilenameFormat.HasValue) config.OptionalRecordFilenameFormat = this.OptionalRecordFilenameFormat.Value;
|
||||
if (this.OptionalWebHookUrls.HasValue) config.OptionalWebHookUrls = this.OptionalWebHookUrls.Value;
|
||||
if (this.OptionalWebHookUrlsV2.HasValue) config.OptionalWebHookUrlsV2 = this.OptionalWebHookUrlsV2.Value;
|
||||
if (this.OptionalWpfShowTitleAndArea.HasValue) config.OptionalWpfShowTitleAndArea = this.OptionalWpfShowTitleAndArea.Value;
|
||||
if (this.OptionalCookie.HasValue) config.OptionalCookie = this.OptionalCookie.Value;
|
||||
if (this.OptionalLiveApiHost.HasValue) config.OptionalLiveApiHost = this.OptionalLiveApiHost.Value;
|
||||
if (this.OptionalTimingCheckInterval.HasValue) config.OptionalTimingCheckInterval = this.OptionalTimingCheckInterval.Value;
|
||||
if (this.OptionalTimingStreamRetry.HasValue) config.OptionalTimingStreamRetry = this.OptionalTimingStreamRetry.Value;
|
||||
if (this.OptionalTimingStreamRetryNoQn.HasValue) config.OptionalTimingStreamRetryNoQn = this.OptionalTimingStreamRetryNoQn.Value;
|
||||
if (this.OptionalTimingStreamConnect.HasValue) config.OptionalTimingStreamConnect = this.OptionalTimingStreamConnect.Value;
|
||||
if (this.OptionalTimingDanmakuRetry.HasValue) config.OptionalTimingDanmakuRetry = this.OptionalTimingDanmakuRetry.Value;
|
||||
if (this.OptionalTimingWatchdogTimeout.HasValue) config.OptionalTimingWatchdogTimeout = this.OptionalTimingWatchdogTimeout.Value;
|
||||
if (this.OptionalRecordDanmakuFlushInterval.HasValue) config.OptionalRecordDanmakuFlushInterval = this.OptionalRecordDanmakuFlushInterval.Value;
|
||||
}
|
||||
}
|
||||
|
||||
internal class SetGlobalConfigType : InputObjectGraphType<SetGlobalConfig>
|
||||
{
|
||||
public SetGlobalConfigType()
|
|
@ -1,13 +0,0 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace BililiveRecorder.Web.Models
|
||||
{
|
||||
public class GlobalConfigDto
|
||||
{
|
||||
|
||||
}
|
||||
}
|
|
@ -1,7 +1,7 @@
|
|||
using BililiveRecorder.Core.Config.V2;
|
||||
using GraphQL.Types;
|
||||
|
||||
namespace BililiveRecorder.Web.Schemas.Types
|
||||
namespace BililiveRecorder.Web.Models.Graphql
|
||||
{
|
||||
public class CuttingModeEnum : EnumerationGraphType<CuttingMode>
|
||||
{
|
|
@ -1,7 +1,7 @@
|
|||
using GraphQL.Types;
|
||||
using HierarchicalPropertyDefault;
|
||||
|
||||
namespace BililiveRecorder.Web.Schemas.Types
|
||||
namespace BililiveRecorder.Web.Models.Graphql
|
||||
{
|
||||
public class HierarchicalOptionalInputType<TValue> : InputObjectGraphType<Optional<TValue>>
|
||||
{
|
|
@ -1,7 +1,7 @@
|
|||
using GraphQL.Types;
|
||||
using HierarchicalPropertyDefault;
|
||||
|
||||
namespace BililiveRecorder.Web.Schemas.Types
|
||||
namespace BililiveRecorder.Web.Models.Graphql
|
||||
{
|
||||
public class HierarchicalOptionalType<TValue> : ObjectGraphType<Optional<TValue>>
|
||||
{
|
|
@ -1,7 +1,7 @@
|
|||
using BililiveRecorder.Core.Config.V2;
|
||||
using GraphQL.Types;
|
||||
|
||||
namespace BililiveRecorder.Web.Schemas.Types
|
||||
namespace BililiveRecorder.Web.Models.Graphql
|
||||
{
|
||||
public class RecordModeEnum : EnumerationGraphType<RecordMode>
|
||||
{
|
|
@ -1,6 +1,6 @@
|
|||
using GraphQL.Types;
|
||||
|
||||
namespace BililiveRecorder.Web.Schemas.Types
|
||||
namespace BililiveRecorder.Web.Models.Graphql
|
||||
{
|
||||
public class RecorderVersionType : ObjectGraphType<RecorderVersion>
|
||||
{
|
|
@ -1,7 +1,7 @@
|
|||
using BililiveRecorder.Core;
|
||||
using GraphQL.Types;
|
||||
|
||||
namespace BililiveRecorder.Web.Schemas.Types
|
||||
namespace BililiveRecorder.Web.Models.Graphql
|
||||
{
|
||||
public class RecordingStatsType : ObjectGraphType<RecordingStats>
|
||||
{
|
|
@ -1,7 +1,7 @@
|
|||
using BililiveRecorder.Core;
|
||||
using GraphQL.Types;
|
||||
|
||||
namespace BililiveRecorder.Web.Schemas.Types
|
||||
namespace BililiveRecorder.Web.Models.Graphql
|
||||
{
|
||||
internal class RoomType : ObjectGraphType<IRoom>
|
||||
{
|
|
@ -1,4 +1,4 @@
|
|||
namespace BililiveRecorder.Web.Schemas.Types
|
||||
namespace BililiveRecorder.Web.Models
|
||||
{
|
||||
public class RecorderVersion
|
||||
{
|
|
@ -1,4 +1,4 @@
|
|||
namespace BililiveRecorder.Web.Models
|
||||
namespace BililiveRecorder.Web.Models.Rest
|
||||
{
|
||||
public class CreateRoomDto
|
||||
{
|
|
@ -1,4 +1,4 @@
|
|||
namespace BililiveRecorder.Web.Models
|
||||
namespace BililiveRecorder.Web.Models.Rest
|
||||
{
|
||||
public class RestApiError
|
||||
{
|
|
@ -1,6 +1,6 @@
|
|||
using System.Text.Json.Serialization;
|
||||
|
||||
namespace BililiveRecorder.Web.Models
|
||||
namespace BililiveRecorder.Web.Models.Rest
|
||||
{
|
||||
[JsonConverter(typeof(JsonStringEnumConverter))]
|
||||
public enum RestApiErrorCode
|
|
@ -1,6 +1,6 @@
|
|||
using System;
|
||||
|
||||
namespace BililiveRecorder.Web.Models
|
||||
namespace BililiveRecorder.Web.Models.Rest
|
||||
{
|
||||
public class RoomDto
|
||||
{
|
|
@ -1,6 +1,6 @@
|
|||
using System;
|
||||
|
||||
namespace BililiveRecorder.Web.Models
|
||||
namespace BililiveRecorder.Web.Models.Rest
|
||||
{
|
||||
public class RoomStatsDto
|
||||
{
|
|
@ -1,7 +0,0 @@
|
|||
namespace BililiveRecorder.Web.Models
|
||||
{
|
||||
public class RoomConfigDto
|
||||
{
|
||||
// TODO auto generate this
|
||||
}
|
||||
}
|
|
@ -3,7 +3,7 @@ using System.Diagnostics;
|
|||
using System.IO;
|
||||
using BililiveRecorder.Core;
|
||||
using BililiveRecorder.Web.Api;
|
||||
using BililiveRecorder.Web.Schemas;
|
||||
using BililiveRecorder.Web.Graphql;
|
||||
using GraphQL;
|
||||
using GraphQL.Server;
|
||||
using GraphQL.Types;
|
||||
|
@ -89,7 +89,8 @@ namespace BililiveRecorder.Web
|
|||
{
|
||||
|
||||
})
|
||||
.AddApiExplorer();
|
||||
.AddApiExplorer()
|
||||
.AddNewtonsoftJson();
|
||||
}
|
||||
|
||||
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
|
||||
|
|
|
@ -29,9 +29,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BililiveRecorder.ToolBox",
|
|||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BililiveRecorder.Flv.Tests", "test\BililiveRecorder.Flv.Tests\BililiveRecorder.Flv.Tests.csproj", "{32E554B1-0ECC-4145-85B8-3FC128FEBEA1}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BililiveRecorder.Web", "BililiveRecorder.Web\BililiveRecorder.Web.csproj", "{263EC584-AFD5-45C9-8347-127016B3B8F5}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BililiveRecorder.Web.Schemas", "BililiveRecorder.Web.Schemas\BililiveRecorder.Web.Schemas.csproj", "{4E72646D-8E25-49E5-B72C-E9749141DBF4}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BililiveRecorder.Web", "BililiveRecorder.Web\BililiveRecorder.Web.csproj", "{263EC584-AFD5-45C9-8347-127016B3B8F5}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
|
@ -71,10 +69,6 @@ Global
|
|||
{263EC584-AFD5-45C9-8347-127016B3B8F5}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{263EC584-AFD5-45C9-8347-127016B3B8F5}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{263EC584-AFD5-45C9-8347-127016B3B8F5}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{4E72646D-8E25-49E5-B72C-E9749141DBF4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{4E72646D-8E25-49E5-B72C-E9749141DBF4}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{4E72646D-8E25-49E5-B72C-E9749141DBF4}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{4E72646D-8E25-49E5-B72C-E9749141DBF4}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
|
@ -88,13 +82,12 @@ Global
|
|||
{4FAAE8E7-AC4E-4E99-A7D1-53D20AD8A200} = {2D44A59D-E437-4FEE-8A2E-3FF00D53A64D}
|
||||
{32E554B1-0ECC-4145-85B8-3FC128FEBEA1} = {623A2ACC-DAC6-4E6F-9242-B4B54381AAE1}
|
||||
{263EC584-AFD5-45C9-8347-127016B3B8F5} = {2D44A59D-E437-4FEE-8A2E-3FF00D53A64D}
|
||||
{4E72646D-8E25-49E5-B72C-E9749141DBF4} = {2D44A59D-E437-4FEE-8A2E-3FF00D53A64D}
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
RESX_ShowErrorsInErrorList = False
|
||||
RESX_SaveFilesImmediatelyUponChange = True
|
||||
RESX_NeutralResourcesLanguage = zh-Hans
|
||||
SolutionGuid = {F3CB8B14-077A-458F-BD8E-1747ED0F5170}
|
||||
RESX_SortFileContentOnSave = True
|
||||
SolutionGuid = {F3CB8B14-077A-458F-BD8E-1747ED0F5170}
|
||||
RESX_NeutralResourcesLanguage = zh-Hans
|
||||
RESX_SaveFilesImmediatelyUponChange = True
|
||||
RESX_ShowErrorsInErrorList = False
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
|
|
|
@ -34,7 +34,7 @@ const map: SectionInfoMap = {
|
|||
build: builderCli
|
||||
},
|
||||
web: {
|
||||
path: './BililiveRecorder.Web.Schemas/Types/Config.gen.cs',
|
||||
path: './BililiveRecorder.Web/Models/Config.gen.cs',
|
||||
format: true,
|
||||
header: true,
|
||||
build: builderWeb
|
||||
|
|
|
@ -6,8 +6,6 @@ export default function (data: ConfigEntry[]): string {
|
|||
using GraphQL.Types;
|
||||
using HierarchicalPropertyDefault;
|
||||
#nullable enable
|
||||
namespace BililiveRecorder.Web.Schemas.Types
|
||||
{
|
||||
`;
|
||||
function write_query_graphType_property(r: ConfigEntry) {
|
||||
if (r.configType == "roomOnly") {
|
||||
|
@ -17,6 +15,14 @@ namespace BililiveRecorder.Web.Schemas.Types
|
|||
}
|
||||
}
|
||||
|
||||
function write_rest_dto_property(r: ConfigEntry) {
|
||||
if (r.configType == "roomOnly") {
|
||||
result += `public ${r.type} ${r.name} { get; set; }\n`;
|
||||
} else {
|
||||
result += `public Optional<${r.type}> Optional${r.name} { get; set; }\n`;
|
||||
}
|
||||
}
|
||||
|
||||
function write_mutation_graphType_property(r: ConfigEntry) {
|
||||
if (r.configType == "roomOnly") {
|
||||
result += `this.Field(x => x.${r.name}, nullable: true);\n`;
|
||||
|
@ -41,6 +47,62 @@ namespace BililiveRecorder.Web.Schemas.Types
|
|||
}
|
||||
}
|
||||
|
||||
// +++++++++++++++++ Shared +++++++++++++++++
|
||||
|
||||
result += 'namespace BililiveRecorder.Web.Models\n{\n'
|
||||
|
||||
{ // ====== SetRoomConfig ======
|
||||
result += "public class SetRoomConfig\n{\n"
|
||||
|
||||
data.filter(x => x.configType != "globalOnly" && !x.webReadonly)
|
||||
.forEach(r => write_mutation_dataType_property(r));
|
||||
|
||||
result += "\npublic void ApplyTo(RoomConfig config)\n{\n";
|
||||
|
||||
data.filter(x => x.configType != "globalOnly" && !x.webReadonly)
|
||||
.forEach(r => write_mutation_apply_method(r));
|
||||
|
||||
result += "}\n}\n\n";
|
||||
}
|
||||
|
||||
{ // ====== SetGlobalConfig ======
|
||||
result += "public class SetGlobalConfig\n{\n"
|
||||
|
||||
data.filter(r => r.configType != "roomOnly" && !r.webReadonly)
|
||||
.forEach(r => write_mutation_dataType_property(r));
|
||||
|
||||
result += "\npublic void ApplyTo(GlobalConfig config)\n{\n";
|
||||
|
||||
data.filter(r => r.configType != "roomOnly" && !r.webReadonly)
|
||||
.forEach(r => write_mutation_apply_method(r));
|
||||
|
||||
result += "}\n}\n\n";
|
||||
}
|
||||
|
||||
// +++++++++++++++++ REST +++++++++++++++++
|
||||
result += '}\n\nnamespace BililiveRecorder.Web.Models.Rest\n{\n'
|
||||
|
||||
{ // ====== RoomConfigDto ======
|
||||
result += "public class RoomConfigDto\n{\n"
|
||||
|
||||
data.filter(x => x.configType != "globalOnly" && !x.webReadonly)
|
||||
.forEach(r => write_rest_dto_property(r));
|
||||
|
||||
result += "}\n\n";
|
||||
}
|
||||
|
||||
{ // ====== GlobalConfigDto ======
|
||||
result += "public class GlobalConfigDto\n{\n"
|
||||
|
||||
data.filter(r => r.configType != "roomOnly" && !r.webReadonly)
|
||||
.forEach(r => write_rest_dto_property(r));
|
||||
|
||||
result += "}\n\n";
|
||||
}
|
||||
|
||||
// +++++++++++++++++ Graphql +++++++++++++++++
|
||||
result += '}\n\nnamespace BililiveRecorder.Web.Models.Graphql\n{\n'
|
||||
|
||||
{ // ====== RoomConfigType ======
|
||||
result += "internal class RoomConfigType : ObjectGraphType<RoomConfig>\n{\n";
|
||||
result += "public RoomConfigType()\n{\n"
|
||||
|
@ -72,20 +134,6 @@ namespace BililiveRecorder.Web.Schemas.Types
|
|||
result += "}\n}\n\n";
|
||||
}
|
||||
|
||||
{ // ====== SetRoomConfig ======
|
||||
result += "internal class SetRoomConfig\n{\n"
|
||||
|
||||
data.filter(x => x.configType != "globalOnly" && !x.webReadonly)
|
||||
.forEach(r => write_mutation_dataType_property(r));
|
||||
|
||||
result += "\npublic void ApplyTo(RoomConfig config)\n{\n";
|
||||
|
||||
data.filter(x => x.configType != "globalOnly" && !x.webReadonly)
|
||||
.forEach(r => write_mutation_apply_method(r));
|
||||
|
||||
result += "}\n}\n\n";
|
||||
}
|
||||
|
||||
{ // ====== SetRoomConfigType ======
|
||||
result += "internal class SetRoomConfigType : InputObjectGraphType<SetRoomConfig>\n{\n"
|
||||
result += "public SetRoomConfigType()\n{\n";
|
||||
|
@ -96,19 +144,6 @@ namespace BililiveRecorder.Web.Schemas.Types
|
|||
result += "}\n}\n\n";
|
||||
}
|
||||
|
||||
{ // ====== SetGlobalConfig ======
|
||||
result += "internal class SetGlobalConfig\n{\n"
|
||||
|
||||
data.filter(r => r.configType != "roomOnly" && !r.webReadonly)
|
||||
.forEach(r => write_mutation_dataType_property(r));
|
||||
|
||||
result += "\npublic void ApplyTo(GlobalConfig config)\n{\n";
|
||||
|
||||
data.filter(r => r.configType != "roomOnly" && !r.webReadonly)
|
||||
.forEach(r => write_mutation_apply_method(r));
|
||||
|
||||
result += "}\n}\n\n";
|
||||
}
|
||||
|
||||
{ // ====== SetGlobalConfigType ======
|
||||
result += "internal class SetGlobalConfigType : InputObjectGraphType<SetGlobalConfig>\n{\n"
|
||||
|
|
Loading…
Reference in New Issue
Block a user