Repository navigation
Implement async HTTP client wrapper using httpx #8
Description
Activity
- addedGrantFox OSSIssue tracked in GrantFox OSSIssue tracked in GrantFox OSSMaybe RewardedIssue may be eligible for a GrantFox rewardIssue may be eligible for a GrantFox rewardOfficial CampaignCampaign: Official CampaignCampaign: Official Campaign
on Jun 20, 2026 fathiaoyinloye commented
on Jun 20, 2026 More actionsI'd like to work on this issue.
I have experience building API clients, asynchronous applications, and automated testing. After reviewing the requirements, I understand that the goal is to introduce an asynchronous client implementation that mirrors the existing synchronous interface while sharing as much request-building logic as possible.
My approach would be to:
- Implement an async HTTP client that matches the behavior and interface of the existing sync client.
- Extract shared request construction logic to avoid duplication between sync and async implementations.
- Ensure consistent URL building, header handling, and response shapes across both clients.
- Add proper async lifecycle management, including support for clean client shutdown.
- Add test coverage for async usage scenarios and verify compatibility with async test environments.
- Ensure the implementation remains backward compatible with existing consumers.
I'll make sure the solution is well-tested, maintainable, and aligned with the project's existing architecture.
Please assign this issue to me if it is available. Thank you!
grantfox-oss commented
on Jun 24, 2026 grantfox-ossboton Jun 24, 2026 – with GrantFox OSSMore actions🦊 GrantFox — @fathiaoyinloye has been assigned to this issue as part of the Official Campaign campaign!
Next steps:
- Open a Pull Request referencing this issue (e.g.,
Closes #8) - Your PR will be reviewed by the ShadeProtocol maintainers
Good luck! Track your progress on GrantFox.
- Open a Pull Request referencing this issue (e.g.,
grantfox-oss commented
on Jul 24, 2026 grantfox-ossboton Jul 24, 2026 – with GrantFox OSSMore actions🦊 GrantFox — @fathiaoyinloye has been assigned to this issue as part of the Official Campaign | FWC26 campaign!
Next steps:
- Open a Pull Request referencing this issue (e.g.,
Closes #8) - Your PR will be reviewed by the ShadeProtocol maintainers
Good luck! Track your progress on GrantFox.
- Open a Pull Request referencing this issue (e.g.,
DioChuks commented
on Aug 18, 2026 ContributorMore actionsHi, i applied for the sync client issue as well, and would love to complete both. This one bothers on the asynchronous nature of handling client connections, an async counterpart to the sync client using
httpx.AsyncClient, which enables use in async frameworks like FastAPI, Starlette, and Django async views. It would share the same configuration and interface as the sync client, so resource methods can delegate to either with minimal branching. I'll add_AsyncHTTPClienttohttp_client.py, mirroring the sync interface withasync def request(...).
Also accepting the same constructor arguments as_SyncHTTPClient.
Using async withhttpx.AsyncClient(...)as client lifecycle management. And i'll ensure the acceptance criteria are met properly.grantfox-oss commented
on Aug 21, 2026 grantfox-ossboton Aug 21, 2026 – with GrantFox OSSMore actionsgrantfox-oss commented
on Aug 29, 2026 grantfox-ossboton Aug 29, 2026 – with GrantFox OSSMore actions🎉 This issue has been marked as completed on GrantFox as part of the Third Campaign campaign!
@DioChuks's PR #58 was approved and merged by @codebestia.
🏆 @DioChuks: You earned 35 FoxPoints for this contribution! Your current tier: Explorer (392 total points). Track your full progress on GrantFox.
👏 Great work, @DioChuks! Keep contributing to ShadeProtocol.
Description
An async counterpart to the sync client using
httpx.AsyncClient, enabling use in async frameworks like FastAPI, Starlette, and Django async views. It should share the same configuration and interface as the sync client so resource methods can delegate to either with minimal branching.Proposed Steps
_AsyncHTTPClienttohttp_client.py, mirroring the sync interface withasync def request(...)._SyncHTTPClient.async with httpx.AsyncClient(...) as clientlifecycle management._build_request(method, path, params, json)helper used by both sync and async versions.Acceptance Criteria
await client.request("GET", "/payments")returns the same response shape as the sync version.pytest-asynciotest without event loop conflicts.aclose()) is properly awaited.