using HyperBooru.ApiModels; using System.Management.Automation; namespace HyperBooru.PowerShell; [Alias("ghbm")] [Cmdlet(VerbsCommon.Get, "HyperBooruMedia")] public class GetMediaCmdlet : SessionCmdlet { [Parameter] public SwitchParameter SelectIngest { get; set; } [Parameter] public SwitchParameter IncludeNsfw { get; set; } [Parameter] public Guid? ContinuationToken { get; set; } [Parameter] public int Count { get; set; } = 50; [Parameter] public SortOrder SortOrder { get; set; } [Parameter(ParameterSetName = "All", Mandatory = true)] public SwitchParameter All { get; set; } [Parameter(ParameterSetName = "TagId", Mandatory = true)] public Guid TagId { get; set; } [Parameter(ParameterSetName = "Query", Mandatory = true)] public string Query { get; set; } protected override void ProcessRecord() { FeedRequest feedRequest; switch(ParameterSetName) { case "TagId": feedRequest = new FeedTagRequest { SelectIngest = SelectIngest, IncludeNsfw = IncludeNsfw, ContinuationToken = ContinuationToken, Count = Count, SortOrder = SortOrder, TagId = TagId }; break; case "Query": feedRequest = new FeedSearchRequest { SelectIngest = SelectIngest, IncludeNsfw = IncludeNsfw, ContinuationToken = ContinuationToken, Count = Count, SortOrder = SortOrder, Query = Query }; break; default: feedRequest = new FeedRequest { SelectIngest = SelectIngest, IncludeNsfw = IncludeNsfw, ContinuationToken = ContinuationToken, Count = Count, SortOrder = SortOrder }; break; } var mediaIds = Session.Feed.LoadChunkAsync(feedRequest) .GetAwaiter() .GetResult(); foreach(var m in mediaIds) WriteObject(m); } }