Aldo10012/EZNetworking
A lightweight Swift networking library for handling API requests.
Key Features π
- Modern Swift Support: Built with Swift 5.9 and iOS 15.0+, macOS 12+, watchOS 8+, tvOS 15+, visionOS 1+
- Async/Await Integration: First-class support for Swift concurrency
- Combine Support: Publishers for requests, downloads, uploads, WebSocket, and SSE
- Callback Support: Completion handler-based API across the board
- AsyncStream Support: Streaming progress for uploads, downloads, and real-time events
- Type-Safe Networking: Strong typing for requests and responses
- Flexible Request Building: Multiple approaches to creating requests
- Comprehensive Interceptors: Full request/response pipeline control
- Built-in Caching: Efficient response caching system
- File Download: Easy-to-use file downloader
- File Upload: Easy-to-use file uploader
- Data Upload: Easy-to-use data uploader
- Multipart Form Data: Construct multipart requests with boundary handling and MIME types
- WebSocket: Real-time, bi-directional client-to-server communication
- Server-Sent Events: Lightweight, server-to-client streaming with automatic reconnection
- Extensive Testing: 100% unit test coverage
Table of Contents π
- HTTP Components - HTTP Method, HTTP Query Parameter, HTTP Header, HTTP Body, Timeout, Cache - How to make a request - RequestFactory, RequestBuilder, Request protocol - How to perform a request - Performing a Request, Error handling - Large Data - File Download, Data Upload, File Upload, Multipart-form Upload - Live Communication - server-sent-event, websocket - Session Management - Session, SessionDelegate, Interceptors
Installation π¦
Swift Package Manager
Add EZNetworking to your project using Swift Package Manager:
dependencies: [
.package(url: "https://github.com/Aldo10012/EZNetworking.git", from: "5.2.0")
]Or through Xcode:
- Go to File > Add Packages
- Enter:
https://github.com/Aldo10012/EZNetworking.git - Select version: 5.2.0 or later
Quick Start Guide π
Here's a simple example to get you started:
// Create a request
let request = RequestFactoryImpl().build(
httpMethod: .GET,
urlString: "https://api.example.com/data",
parameters: [.init(key: "userId", value: "123")]
)
// Using async/await
do {
let response = try await RequestPerformer().perform(
request: request,
decodeTo: UserData.self
)
print("User data: \(response)")
} catch {
print("Error: \(error)")
}Scripts
swiftformat Sources Tests
- Automatically formats the Swift code according to the rules defined in .swiftformat configuration file.
swiftlint Sources Tests
- Analyzes the Swift code and reports violations of the rules defined in .swiftlint.yaml configuration file.
swiftlint --fix Sources Tests
- Automatically fixes auto-correctable SwiftLint violations in the code.
Contributing π€
Contributions to are always welcomed! For more details see CONTRIBUTING.md.
License π
EZNetworking is available under the MIT license. See the LICENSE file for more info.
Package Metadata
Repository: Aldo10012/EZNetworking
Stars: 26
Forks: 4
Open issues: 1
Default branch: main
Primary language: swift
License: MIT
Topics: async-await-features, https, networking, swift, unit-tested
README: README.md