Skip to content

Comments

PTHMINT-94: Http transport#45

Draft
danielcivit wants to merge 1 commit intomasterfrom
PTHMINT-94
Draft

PTHMINT-94: Http transport#45
danielcivit wants to merge 1 commit intomasterfrom
PTHMINT-94

Conversation

@danielcivit
Copy link
Member

This pull request introduces a major refactor to the SDK's HTTP transport layer, decoupling the SDK from specific HTTP client libraries and enabling flexible transport injection. The changes implement a new abstraction for HTTP communication, update the client and SDK classes to use this abstraction, and provide examples for integrating with multiple HTTP clients (requests, httpx, and urllib3). The project dependency configuration is also updated to support optional transports.

Transport Layer Abstraction and Integration

  • Introduced the HTTPTransport and HTTPResponse protocol interfaces in src/multisafepay/transport/http_transport.py to abstract HTTP communication and response handling, enabling the SDK to work with any compatible HTTP client.
  • Updated the Client and Sdk classes to accept a transport parameter instead of a concrete HTTP client, defaulting to RequestsTransport if none is provided. All request logic now uses the transport abstraction. [1] [2] [3] [4] [5] [6] [7]

Example Implementations for Multiple HTTP Clients

  • Added example transports for httpx and urllib3, demonstrating how to inject custom transport implementations and adapt responses to the SDK interface. The request_transport.py example shows advanced requests.Session usage with retry and connection pooling. [1] [2] [3]

Dependency Management and Configuration

  • Updated pyproject.toml to move requests and urllib3 to an optional extra, allowing users to install only the transports they need. Development dependencies now include python-dotenv, requests, urllib3, and httpx for example and test support. [1] [2]

Module Structure and Exports

  • Added src/multisafepay/transport/__init__.py to define the transport module's public API and ensure proper import and discoverability.
  • Minor update to src/multisafepay/__init__.py to clarify exports.

These changes make the SDK more flexible, testable, and extensible for users who want to use different HTTP clients or custom transport logic.

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.

2 participants