feat: complete the Info API area (10 new functions) - #112
Merged
Merged
Conversation
Implements the remaining "FTL information" endpoints, closing 10 of the
original 54 missing API operations:
- Get-PiHoleInfoClient (/info/client) - info about the requesting client
- Get-PiHoleInfoLogin (/info/login) - login page info
- Get-PiHoleInfoSystem (/info/system) - uptime, memory, CPU
- Get-PiHoleInfoFtl (/info/ftl) - gravity/group/list counts, dnsmasq metrics
- Get-PiHoleInfoSensors (/info/sensors) - temperature sensors
- Get-PiHoleInfoDatabase (/info/database) - long-term DB file/query stats
- Get-PiHoleInfoVersion (/info/version) - Core/Web/FTL/Docker versions
- Get-PiHoleInfoMetrics (/info/metrics) - live DNS/DHCP metrics
- Get-PiHoleInfoMessageCount (/info/messages/count)
- Remove-PiHoleInfoMessage (/info/messages/{id}) - supports comma-separated
multiple IDs per the API
Get-PiHoleInfoClient and Get-PiHoleInfoLogin intentionally have no
-Password parameter and never call Request-PiHoleAuth: the live API spec
marks both with `security: []`, and this was confirmed against the real
server (both work with zero auth headers). This makes sense given their
purpose - info needed to render the login page has to be available before
you're logged in.
Get-PiHoleInfoDatabase's earliest_timestamp/earliest_timestamp_disk are
returned as $null (not epoch 1970) when the API sends 0, since the spec
documents 0.0 as meaning "no queries stored yet" - the same zero-guard
pattern already used for Get-PiHoleList's DateUpdated.
Also fixed Get-PiHoleInfoMessage while in the area: it had the same stray
break in its catch block fixed elsewhere in the module (silently aborts
the calling script on error), and was missing a real .DESCRIPTION/.EXAMPLE.
Verified all 10 new functions against a real Pi-hole v6 server: formatted
output, RawOutput, and (where applicable) bad-password/not-found error
handling. Added dedicated integration test files (33 tests total across
the FTLInformation folder). README regenerated.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Implements the remaining "FTL information" endpoints, closing 10 of the original 54 missing API operations - the largest single-category gap after this PR is Domains (8) and Clients (7).
Get-PiHoleInfoClient(/info/client) - info about the requesting clientGet-PiHoleInfoLogin(/info/login) - login page infoGet-PiHoleInfoSystem(/info/system) - uptime, memory, CPUGet-PiHoleInfoFtl(/info/ftl) - gravity/group/list counts, dnsmasq metricsGet-PiHoleInfoSensors(/info/sensors) - temperature sensorsGet-PiHoleInfoDatabase(/info/database) - long-term DB file/query statsGet-PiHoleInfoVersion(/info/version) - Core/Web/FTL/Docker versionsGet-PiHoleInfoMetrics(/info/metrics) - live DNS/DHCP metricsGet-PiHoleInfoMessageCount(/info/messages/count)Remove-PiHoleInfoMessage(/info/messages/{id}) - supports comma-separated multiple IDs per the APIDesign note:
Get-PiHoleInfoClientandGet-PiHoleInfoLoginintentionally have no-Passwordparameter and never callRequest-PiHoleAuth. The live API spec marks both withsecurity: [], and this was confirmed against the real server (both work with zero auth headers) - makes sense given their purpose, since login-page info has to be available before you're logged in.Also fixed while in the area:
Get-PiHoleInfoDatabase'searliest_timestamp/earliest_timestamp_diskreturn$null(not epoch 1970) when the API sends0, since the spec documents0.0as "no queries stored yet" - same zero-guard pattern already used forGet-PiHoleList'sDateUpdated. AndGet-PiHoleInfoMessagehad the same straybreakbug fixed elsewhere in the module, plus was missing a real.DESCRIPTION/.EXAMPLE.Test plan
Invoke-ScriptAnalyzer -Path .\PiHoleShell -Recurse- clean-RawOutput, and (where applicable) bad-password/not-found error handlingFTLInformationfolder, all passingREADME.md🤖 Generated with Claude Code