Contents

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:

  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.

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