Skip to content

A lightweight Swift networking library for handling API requests.

License

Notifications You must be signed in to change notification settings

Aldo10012/EZNetworking

Repository files navigation

EZNetworking

Swift Platform SPM Compatible

EZNetworking is a powerful, lightweight Swift networking library that simplifies API interactions in your iOS applications. Built with modern Swift features, it provides an intuitive interface for making HTTP requests, handling responses, and managing network operations.

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 📑

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:

  1. Go to File > Add Packages
  2. Enter: https://github.com/Aldo10012/EZNetworking.git
  3. 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.

About

A lightweight Swift networking library for handling API requests.

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages