Skip to content

Aldo10012/EZNetworking

Repository files navigation

EZNetworking

Swift Platform SPM Compatible

EZNetworking is a powerful, lightweight Swift networking library that simplifies API interactions in your Apple platform 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 17.0+, macOS 14.0+, watchOS 10.0+, tvOS 17.0+, visionOS 1.0+
  • Async/Await Integration: First-class support for Swift concurrency
  • 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
  • Cache Control: Configurable URLRequest cache policies and optional cache interceptors
  • 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: Comprehensive unit test suite

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.6.0")
]

Or through Xcode:

  1. Go to File > Add Packages
  2. Enter: https://github.com/Aldo10012/EZNetworking.git
  3. Select version: 5.5.3 or later

Quick Start Guide 🚀

Here's a simple example to get you started:

// Create a request
let request = RequestFactoryImpl().build(
    httpMethod: .GET,
    baseUrlString: "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.yml configuration file.

swiftlint --fix Sources Tests

  • Automatically fixes auto-correctable SwiftLint violations in the code.

Contributing 🤝

Contributions are always welcome! 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