#!/usr/local/bin/pwsh param ( [string] $ApiServer = "http://localhost:5011", [string] $JsonSecrets = "./seed.secrets.json" ) $ErrorActionPreference = 'Stop' function New-RedditSource { param ( [string] $Name ) $param = "name=$Name" $uri = "$ApiServer/api/sources/new/reddit?$param" Write-Host "Adding Reddit: $Name" $res = Invoke-RestMethod -Method Post -Uri $uri return $res } function New-RssSource { param ( [string] $Name, [string] $Url ) $urlEncoded = [uri]::EscapeDataString($Url) $param = "name=$Name&url=$urlEncoded" Write-Host "Adding RSS: $Name" [string] $uri = "$ApiServer/api/sources/new/rss?$param" $res = Invoke-RestMethod -Method Post -Uri $uri return $res } function New-YoutubeSource { param ( [string] $Url ) $urlEncoded = [uri]::EscapeDataString($Url) [string] $param = "url=$urlEncoded" [string] $uri = "$ApiServer/api/sources/new/youtube?$param" Write-Host = "Adding YouTube: $Url" $res = Invoke-RestMethod -Method Post -Uri $uri return $res } function New-TwitchSource { param ( [string] $Name ) [string] $param = "name=$Name" [string] $uri = "$ApiServer/api/sources/new/twitch?$param" Write-Host "Adding Twitch: $Name" $res = Invoke-RestMethod -Method Post -Uri $uri return $res } function New-CodeProject { param ( [string] $Url ) $urlEncoded = [uri]::EscapeDataString($Url) [string] $param = "url=$urlEncoded" [string] $uri = "$ApiServer/api/sources/new/codeproject?$param" Write-Host "Adding CodeProject '$url'" $res = Invoke-RestMethod -Method Post -Uri $uri return $res } function New-DiscordWebhook { param ( [string] $Server, [string] $Channel, [string] $Url ) $urlEncoded = [uri]::EscapeDataString($Url) [string] $param = "server=$Server&channel=$Channel&url=$urlEncoded" [string] $uri = "$ApiServer/api/discord/webhooks?$param" Write-Host $uri $res = Invoke-RestMethod -Method Post -Uri $uri return $res } function New-Subscription { param ( [string] $SourceId, [string] $DiscordWebhookId ) [string] $param = "sourceId=$SourceId&discordId=$DiscordWebhookId" [string] $uri = "$ApiServer/api/subscriptions?$param" $res = Invoke-RestMethod -Method Post -Uri $uri return $res } function New-CodeProjectSubscription { param ( [string] $SourceId, [string] $DiscordWebhookId, [switch] $AllowReleases = $false, [switch] $AllowCommits = $false ) [string] $param = "sourceId=$SourceId&discordId=$DiscordWebhookId&allowReleases=$AllowReleases&allowCommits=$AllowCommits" [string] $uri = "$ApiServer/api/subscriptions/new/codeproject?$param" $res = Invoke-RestMethod -Method Post -Uri $uri return $res } # Load Secrets file $secrets = Get-Content $JsonSecrets -Raw | ConvertFrom-Json $redditDadJokes = New-RedditSource -Name "dadjokes" $redditSteamDeck = New-RedditSource -Name "steamdeck" $rssSteamDeck = New-RssSource -Name "Steampowered - Steam Deck" -Url "https://store.steampowered.com/feeds/news/app/1675200/?cc=US&l=english&snr=1_2108_9__2107" $rssFaysHaremporium = New-RssSource -Name "Fay's Haremporium" -Url "https://blog.nyxstudios.moe/rss/" $rssPodcastLetsMosley = New-RssSource -Name "Let's Mosley" -Url "https://anchor.fm/s/6c7aa4c4/podcast/rss" $rssOmgLinux = New-RssSource -Name "Omg! Linux" -Url "https://www.omglinux.com/feed" $rssEngadget = New-RssSource -Name "Engadget" -Url "https://www.engadget.com/rss.xml" $rssArsTechnica = New-RssSource -Name "Ars Technica" -Url "https://feeds.arstechnica.com/arstechnica/index" $youtubeGameGrumps = New-YoutubeSource -Url "https://www.youtube.com/user/GameGrumps" $youtubeCityPlannerPlays = New-YoutubeSource -Url "https://www.youtube.com/c/cityplannerplays" $youtubeLinusTechTips = New-YoutubeSource -Url "https://www.youtube.com/@LinusTechTips" $youtubeFireship = New-YoutubeSource -Url "https://www.youtube.com/@Fireship" $youtubeClimateTown = New-YoutubeSource -Url "https://www.youtube.com/c/ClimateTown" $codeDotnet = New-CodeProject -Url "https://github.com/dotnet/runtime" #$codePython = New-CodeProject -Url "https://github.com/python/cpython" #$codeGolang = New-CodeProject -Url "https://github.com/golang/go" #$codePowerShell = New-CodeProject -Url "https://github.com/PowerShell/PowerShell" #$codeLinux = New-CodeProject -Url "https://github.com/torvalds/linux" $twitchNintendo = New-TwitchSource -Name "Nintendo" $miharuMonitor = New-DiscordWebhook -Server "Miharu Monitor" -Channel "dev" -Url $secrets.MiharuMonitor.dev02 $sky = New-DiscordWebhook -Server "Let's Mosley" -Channel "bot test" -url $secrets.LetsMosley.test New-Subscription -SourceId $redditDadJokes.id -DiscordWebhookId $miharuMonitor.id New-Subscription -SourceId $redditSteamDeck.id -DiscordWebhookId $miharuMonitor.id New-Subscription -SourceId $rssSteamDeck.id -DiscordWebhookId $miharuMonitor.id New-Subscription -SourceId $rssFaysHaremporium.id -DiscordWebhookId $miharuMonitor.id New-Subscription -SourceId $rssPodcastLetsMosley.id -DiscordWebhookId $miharuMonitor.id New-Subscription -SourceId $rssPodcastLetsMosley.id -DiscordWebhookId $sky.id New-Subscription -SourceId $rssOmgLinux.id -DiscordWebhookId $miharuMonitor.id New-Subscription -SourceId $rssEngadget.id -DiscordWebhookId $miharuMonitor.id New-Subscription -SourceId $rssArsTechnica.id -DiscordWebhookId $miharuMonitor.id New-CodeProjectSubscription -SourceId $codeDotnet.id -DiscordWebhookId $miharuMonitor.id -AllowReleases New-Subscription -SourceId $youtubeGameGrumps.id -DiscordWebhookId $miharuMonitor.id New-Subscription -SourceId $youtubeCityPlannerPlays.id -DiscordWebhookId $miharuMonitor.id New-Subscription -SourceId $youtubeLinusTechTips.id -DiscordWebhookId $miharuMonitor.id New-Subscription -SourceId $youtubeFireship.id -DiscordWebhookId $miharuMonitor.id New-Subscription -SourceId $youtubeClimateTown.id -DiscordWebhookId $miharuMonitor.id New-Subscription -SourceId $twitchNintendo.id -DiscordWebhookId $miharuMonitor.id