A Swift cross-platform (Apple and Linux) networking library.

Overview

KippleNetworking

CI Status Latest Release Swift Compatibility Platform Compatibility License

A Swift library that offers cross-platform (Apple and Linux) networking support, intended for the creation of cross-platform SDKs to be used in projects spanning across iOS/macOS/tvOS/watchOS and Server-side Swift.

⚠️ The code in this library has been made public as-is for the purposes of education, discovery, and personal use. It is NOT production-ready; however, if you're interested in leveraging this library as a dependency for your own projects, feel free to do so (at your own risk) and open GitHub issues for any problems you encounter and I will do my best to provide support.

ToDo

General

  • Ensure public classes are documented (use SwiftLint to trigger warnings).
  • Abstract client implementation for injection. (eg. to allow other clients to be injected / used as dispatcher.)
  • Improve package dependencies for various platforms (eg. default to only including Foundation on Apple platforms unless some flag is set)? Example: 'condition: .when(platforms: [.linux])' to check for Linux-only dependencies, but only for Release mode.

Testing

  • Implement POST and PUT tests.
  • Implement HTML tests.
  • Implement file upload and download tests.
  • Implement tests for HTTPClient.
  • Implement tests for rootResponseKey.
  • Implement tests for headers and parameters.

Convenience

  • On Apple platforms, all direct passing of URLRequest into HTTPClient. Example:
extension HTTPClient {
    #if os(iOS) || os(macOS) || os(tvOS) || os(watchOS)
    public func request(for urlRequest: URLRequest) async throws -> Data {
        let request = urlRequest.asKippleRequest()
        return try await self.request(request)
    }
    
    public func request<T>(for urlRequest: URLRequest) async throws -> DataResponse<T> where T: Decodable {
        let request = urlRequest.asKippleRequest()
        return try await self.request(request)
    }
    #endif
}
You might also like...
Apple SMC library & tool

SMCKit An Apple System Management Controller (SMC) library & command line tool in Swift for Intel based Macs. The library works by talking to the Appl

☎️ NextcloudKit Apple library

NextcloudKit Installation Carthage Carthage is a decentralized dependency manager that builds your dependencies and provides you with binary framework

Mimicrated views and controls to native Apple appearance.
Mimicrated views and controls to native Apple appearance.

Mimicrated views and controls to native Apple appearance. If you have any ideas of what elements can be added, let me know. Below you will see previews of all the elements and how to use them.

An Apple Watch remake of the Poketch from Pokemon Diamond and Pearl made with SwiftUI
An Apple Watch remake of the Poketch from Pokemon Diamond and Pearl made with SwiftUI

Apple Watch Poketch What is it? It's an Apple Watch remake of the "Poketch" from Pokemon Diamond and Pearl made with SwiftUI! Check out the YouTube vi

Provides some Apple Wallet functionality, like adding passes, removing passes and checking passises for existing.
Provides some Apple Wallet functionality, like adding passes, removing passes and checking passises for existing.

react-native-wallet-manager Provides some Apple Wallet's functionality, like adding passes, removing passes and checking passises for existing. Instal

A collection of Swift Tutorials built with Apple's DocC.

Swift Tutorials This is not a package, it's just a bunch of tutorials This project uses Apple's DocC (Documentation Compiler) to create a set of Swift

React Native utility library around image and video files for getting metadata like MIME type, timestamp, duration, and dimensions. Works on iOS and Android using Java and Obj-C, instead of Node 🚀.

Qeepsake React Native File Utils Extracts information from image and video files including MIME type, duration (video), dimensions, and timestamp. The

A apple search ads attribution plugin for flutter

A apple search ads attribution plugin for flutter

Home Assistant for Apple Platforms

Home Assistant for Apple Platforms Getting Started Home Assistant uses Bundler, Homebrew and Cocoapods to manage build dependencies. You'll need Xcode

Owner
Kipple
Kipple is a collection of Swift packages and plugins providing common Swift functionality for getting your projects off the ground.
Kipple
The Outline Client is a cross-platform VPN or proxy client for Windows, macOS, iOS, Android, and ChromeOS

Outline Client The Outline Client is a cross-platform VPN or proxy client for Windows, macOS, iOS, Android, and ChromeOS. The Outline Client is design

Jigsaw 7.1k Sep 21, 2022
Easily generate cross platform Swift framework projects from the command line

SwiftPlate Easily generate cross platform Swift framework projects from the command line. SwiftPlate will generate Xcode projects for you in seconds,

John Sundell 1.8k Sep 14, 2022
Cross-platform, sophisticated frontend for the libretro API.

RetroArch is the reference frontend for the libretro API. Popular examples of implementations for this API includes video game system emulators and game engines as well as more generalized 3D programs. These programs are instantiated as dynamic libraries. We refer to these as "libretro cores".

null 7k Sep 20, 2022
A Swift library for hardware projects on Linux/ARM boards with support for GPIOs/SPI/I2C/PWM/UART/1Wire.

A Swift library for hardware projects on Linux/ARM boards with support for GPIOs/SPI/I2C/PWM/UART/1Wire. Summary This library provides an easy way to

uraimo 1.3k Sep 19, 2022
Joplin - an open source note taking and to-do application with synchronization capabilities for Windows, macOS, Linux, Android and iOS. Forum: https://discourse.joplinapp.org/

Joplin® is a free, open source note taking and to-do application, which can handle a large number of notes organised into notebooks. The notes are sea

Laurent 32.2k Sep 27, 2022
A GUI based virtualisation tool for running Linux on macOS Big Sur (x86 or arm64)

Project Mendacius GUI based virtualization tool to run Linux, based on the Virtualization framework introduced by Apple for macOS Big Sur with support

Praneet 111 Sep 1, 2022
Running GUI Linux in a virtual machine on a Mac

Running GUI Linux in a virtual machine on a Mac Install and run GUI Linux in a virtual machine using the Virtualization framework. การ build และใช้งาน

MrChoke 3 Jul 12, 2022
Demo of using Metal to render EDR / HDR content on iOS platform

MetalEDR-iOS Demo of using Metal to render EDR/HDR content on iOS platform. How it works This demo uses a hack to activate EDR display on iOS platform

Wutian 37 Sep 16, 2022
nds4ios is a port of the multi-platform Nintendo DS emulator, DeSmuME to iOS.

nds4ios Supports iOS 6 to iOS 9. nds4ios is a port of the multi-platform Nintendo DS emulator, DeSmuME to iOS. Currently, emulation is powered by a th

Kevin 158 Sep 9, 2022
SwiftyXPC - a wrapper for Apple’s XPC interprocess communication library that gives it an easy-to-use, idiomatic Swift interface.

SwiftyXPC is a wrapper for Apple’s XPC interprocess communication library that gives it an easy-to-use, idiomatic Swift interface.

null 27 Sep 4, 2022