Commit Graph

14 Commits

Author SHA1 Message Date
Honza Dvorsky 7b96b1d08e Adopt AHC's .shared singleton as the default Client (#39)
### Motivation

As a convenience when you don't need to create a custom AHC Client
instance, we provide a singleton client as the default. AHC added their
own `Client.shared` singleton, so let's adopt that and remove the
transport's internal singleton, which was used for the same purpose.

### Modifications

- Replaced the tranport's internal singleton with the AHC-provided one.
- Use Int64 directly and skip conversions now that AHC also uses Int64
for the body byte size.

### Result

- No internal singleton is created now, possibly avoiding having two AHC
singletons in a given process.
- Fixed a warning around Int/Int64 conversion.

### Test Plan

Unit tests still pass.
2024-10-03 08:51:54 -07:00
Honza Dvorsky abfe558a66 Prep 1.0 (#37)
### Motivation

Prep 1.0 - docs.

### Modifications

See above.

### Result

Updated for 1.0.

### Test Plan

Previewed locally.
2023-12-11 05:04:24 -08:00
Honza Dvorsky 7edc42113f Default the configuration parameter (#32)
Default the configuration parameter

### Motivation

The AsyncHTTPClient transport API has undergone changes in recent months and we didn't bring back the default initializer after we adopted the shared EventLoopGroup, allowing you to create a transport with just `let transport = AsyncHTTPClientTransport()`.

### Modifications

Default the configuration parameter in the initializer to be able to do that. It's already documented to work, but it doesn't.

### Result

Match the documented behavior of being able to use `let transport = AsyncHTTPClientTransport()`.

### Test Plan

Tests still pass.


Reviewed by: dnadoba

Builds:
     ✔︎ pull request validation (5.10) - Build finished. 
     ✔︎ pull request validation (5.9) - Build finished. 
     ✔︎ pull request validation (nightly) - Build finished. 
     ✔︎ pull request validation (soundness) - Build finished. 

https://github.com/swift-server/swift-openapi-async-http-client/pull/32
2023-11-30 13:39:25 +01:00
Honza Dvorsky 0859eada6f Handle large payloads on 32bit platforms gracefully (#29)
Handle large payloads on 32bit platforms gracefully

### Motivation

If there's a request payload with a number of bytes that can't fit into 32 bits, we'd crash.

### Modifications

Use a graceful initializer and use `.unknown` (so no `content-length` will be sent) if the size exceeds the max of a 32bit int.

### Result

No crash for large payloads on 32bit platforms.

### Test Plan

Tests pass.


Reviewed by: dnadoba

Builds:
     ✔︎ pull request validation (5.10) - Build finished. 
     ✔︎ pull request validation (5.9) - Build finished. 
     ✔︎ pull request validation (nightly) - Build finished. 
     ✔︎ pull request validation (soundness) - Build finished. 

https://github.com/swift-server/swift-openapi-async-http-client/pull/29
2023-11-28 11:26:01 +01:00
Honza Dvorsky caa53033fe Prep for 1.0 alpha, adapted to runtime changes in main (#25)
### Motivation

On main, the HTTPBody length type changed from Int to Int64.

### Modifications

Adapted the transport with this change.

### Result

Repo builds again when using the latest runtime.

### Test Plan

Adapted tests.
2023-11-27 16:13:23 +01:00
PARAIPAN SORIN e48b152d18 Disable "respectsExistingLineBreaks" in .swift-format for more consistent styling (#23)
### Motivation

- Relates to
[#230](https://github.com/apple/swift-openapi-generator/issues/230)

### Modifications

- Disable respectsExistingLineBreaks .swift-format rule and address
changes requested

### Result

- One of the .swift-format rules will be disabled

### Test Plan

- Run Tests
2023-11-01 17:49:29 +01:00
PARAIPAN SORIN f3fa4a5008 Enable documentation comment validation in swift-format (#21) 2023-10-23 23:05:38 +02:00
Honza Dvorsky 0a0c648c90 [AHC Transport] Async bodies + swift-http-types adoption (#16)
[AHC Transport] Async bodies + swift-http-types adoption

### Motivation

AHC transport changes of the approved proposals apple/swift-openapi-generator#255 and apple/swift-openapi-generator#254.

### Modifications

- Adapts to the runtime changes, depends on HTTPTypes now.
- Both request and response streaming works.

### Result

Transport works with the 0.3.0 runtime API of.

### Test Plan

Adapted tests.


Reviewed by: dnadoba, simonjbeaumont

Builds:
     ✔︎ pull request validation (5.8) - Build finished. 
     ✔︎ pull request validation (5.9) - Build finished. 
     ✔︎ pull request validation (nightly) - Build finished. 
     ✔︎ pull request validation (soundness) - Build finished. 

https://github.com/swift-server/swift-openapi-async-http-client/pull/16
2023-09-27 17:58:10 +02:00
Honza Dvorsky f228a33bdf Adopt a custom shared client (#18)
### Motivation

We previously defaulted the HTTPClient to .init(), but that's not
correct as it was never getting shut down.

### Modifications

Instead of creating a new client, just introduce our own shared one and
use that as the default value.

Once AHC provides a shared client, we can default to that in the
configuration initializer.

### Result

No more crashing clients on dealloc.

### Test Plan

All tests pass.

---------

Co-authored-by: David Nadoba <dnadoba@gmail.com>
2023-09-18 15:38:11 +02:00
Honza Dvorsky 7e40bff52d Fix double encoding of path parameters (#15)
Fix double encoding of path parameters

### Motivation

Fixes https://github.com/apple/swift-openapi-generator/issues/251.

### Modifications

Use the already escaped path setter on `URLComponents` to avoid the second encoding pass.

### Result

Path parameters that needed escaping are only escaped once, not twice.

### Test Plan

Adapted the existing unit test to cover a path item that needs escaping.


Reviewed by: simonjbeaumont

Builds:
     ✔︎ pull request validation (5.8) - Build finished. 
     ✔︎ pull request validation (5.9) - Build finished. 
     ✔︎ pull request validation (nightly) - Build finished. 
     ✔︎ pull request validation (soundness) - Build finished. 

https://github.com/swift-server/swift-openapi-async-http-client/pull/15
2023-09-07 14:53:14 +02:00
Honza Dvorsky 91dfd35092 Adopt the new shared HTTP client (#13)
Adopt the new shared HTTP client

### Motivation

Now that SwiftNIO/AsyncHTTPClient have a singleton variant of the `EventLoopGroup`, which allows creating an `HTTPClient` without any argument, let's simplify the initializer of the transport to take advantage of it - bringing it in line with the URLSession transport.

### Modifications

Default the HTTPClient to a new one with a default event loop group, and remove the mandatory shutdown call.

### Result

Adopters can more easily create the AHC transport.

### Test Plan

N/A


Reviewed by: dnadoba, glbrntt

Builds:
     ✔︎ pull request validation (5.8) - Build finished. 
     ✔︎ pull request validation (5.9) - Build finished. 
     ✔︎ pull request validation (nightly) - Build finished. 
     ✔︎ pull request validation (soundness) - Build finished. 

https://github.com/swift-server/swift-openapi-async-http-client/pull/13
2023-08-29 14:45:24 +02:00
Honza Dvorsky 95bb2f8456 Enable strict concurrency checking in CI (#11)
Enable strict concurrency checking in CI

### Motivation

To further avoid concurrency bugs, enable complete concurrency checking in CI.

### Modifications

Added the compiler flag to the docker-compose scripts.

### Result

If a warning of this nature comes up, because we have warnings-as-errors, it'll fail CI.

### Test Plan

Locally built without any warnings with the flag enabled.


Reviewed by: glbrntt

Builds:
     ✔︎ pull request validation (5.8) - Build finished. 
     ✔︎ pull request validation (5.9) - Build finished. 
     ✔︎ pull request validation (nightly) - Build finished. 
     ✔︎ pull request validation (soundness) - Build finished. 

https://github.com/swift-server/swift-openapi-async-http-client/pull/11
2023-08-11 16:02:13 +02:00
Mahdi Bahrami 98213b70f9 Full compatibility with the "ExistentialAny" upcoming feature (#8)
Discussed and requested in
https://github.com/apple/swift-openapi-generator/pull/99#issuecomment-1630636372
2023-07-13 08:35:08 +01:00
Si Beaumont db38b1b57e Initial commit
Co-authored-by: Honza Dvorsky <honza@apple.com>
Co-authored-by: Si Beaumont <beaumont@apple.com>
Co-authored-by: David Nadoba <d_nadoba@apple.com>
2023-05-10 12:17:57 +01:00