Skip to content

v4.0.0: Remove deprecated API - #43

Open
chrisdhaan wants to merge 4 commits into
masterfrom
remove-deprecated-api-4.0.0
Open

v4.0.0: Remove deprecated API#43
chrisdhaan wants to merge 4 commits into
masterfrom
remove-deprecated-api-4.0.0

Conversation

@chrisdhaan

@chrisdhaan chrisdhaan commented Aug 19, 2026

Copy link
Copy Markdown
Owner

Summary

  • Removes CDUntappdAPIClient.cancelAllPendingAPIRequests()@available(*, deprecated) since 2.0.0; use Task.cancel() on the task wrapping the async API call instead.
  • Removes CDUntappdOAuthClient.authorize(withCode:completion:)@available(*, deprecated) since 3.0.0; use authorize(withCode:) (async throws) instead.
  • Removes CDUntappdKitError.httpError(statusCode:data:)@available(*, deprecated) since 3.3.0; use .httpErrorWithHeaders(statusCode:data:headers:) instead.
  • Removing public API is source-breaking for any caller still on the deprecated symbols, so this ships as 4.0.0 rather than a minor bump.
  • Updates Documentation/ARCHITECTURE.md and Documentation/Usage.md to drop now-stale references to the removed symbols.
  • iOS Example app:
    • Ported the JSON response viewer pattern from CDYelpFusionKit 8.0.1's example app — tapping an endpoint row now pushes a pretty-printed JSON view of the response (via a Mirror-based JSONPrettyPrinter, since response models are Decodable-only) instead of printing to the Xcode console, and failed requests show an alert instead of a silent console log. Required wrapping Main.storyboard's root view controller in a UINavigationController.
    • Grew the demoed endpoint list from 3 to 12 rows: added fetchUserBadges, fetchUserBeers, fetchUserActivityFeed, searchBeers, searchBreweries, fetchBeerInfo, fetchBreweryInfo, fetchBeerActivityFeed, fetchBreweryActivityFeed. The beer/brewery-ID rows resolve a real ID via a live search first instead of hardcoding one that could go stale. Venue-based endpoints and everything requiring OAuth or a write/action call are intentionally left out for now (no OAuth login flow in the example app yet; write endpoints mutate a real account).
  • Adds a single CHANGELOG.md entry covering all of the above.

Test plan

  • swift build — clean
  • swift test — 275 tests, 53 suites, all passing
  • swiftformat Source Tests --lint — clean
  • swiftformat "iOS Example" --lint — clean
  • swiftlint lint --strict — 0 violations (includes iOS Example/Source, which is in .swiftlint.yml's included paths)
  • xcodebuild for the iOS Example scheme — ** BUILD SUCCEEDED **
  • CI (all platform build jobs)

🤖 Generated with Claude Code

https://claude.ai/code/session_01HdhEtXezNpB31vv93S5D4b

chrisdhaan and others added 4 commits August 19, 2026 18:10
Removes three public API members that have been marked @available(*,
deprecated) for at least one prior release cycle:
CDUntappdAPIClient.cancelAllPendingAPIRequests() (since 2.0.0),
CDUntappdOAuthClient.authorize(withCode:completion:) (since 3.0.0),
and CDUntappdKitError.httpError(statusCode:data:) (since 3.3.0).
Removing public API is source-breaking, so this ships as 4.0.0.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HdhEtXezNpB31vv93S5D4b
Ported from CDYelpFusionKit 8.0.1's example app: tapping an endpoint
row now pushes a pretty-printed JSON view of the response (via a
Mirror-based JSONPrettyPrinter, since response models are
Decodable-only) instead of printing to the Xcode console, and failed
requests show an alert instead of a silent console log. Requires
wrapping the storyboard's root view controller in a
UINavigationController to support the push.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HdhEtXezNpB31vv93S5D4b
@UIApplicationMain replaced with @main, and long single-line comments
wrapped to the configured max width.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HdhEtXezNpB31vv93S5D4b
Adds fetchUserBadges, fetchUserBeers, fetchUserActivityFeed,
searchBeers, searchBreweries, fetchBeerInfo, fetchBreweryInfo,
fetchBeerActivityFeed, and fetchBreweryActivityFeed to the endpoint
list (3 -> 12 rows). The beer/brewery-ID-based rows resolve a real ID
via a live search first instead of hardcoding one that could go
stale.

Refactors didSelectRowAt to a single Task that delegates to a
response(forRow:) switch, since the prior per-row Task/do/catch
duplication would have pushed the function well past SwiftLint's
function_body_length limit at 12 rows.

Venue-based endpoints and everything requiring OAuth or a write/
action call are intentionally left out - the example app has no
OAuth login flow, and write endpoints mutate a real Untappd account.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HdhEtXezNpB31vv93S5D4b
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant