Skip to content

space-code/network-layer

Repository files navigation

NetworkLayer: Network communication made easy

network-layer

License Swift Compability Platform Compability CI

Description

network-layer is a library for network communication.

Usage

import NetworkLayer
import NetworkLayerInterfaces

struct Request: IRequest {
    var domainName: String { 
        "https://example.com"
    }

    var path: String { 
        "user"
    }

    var httpMethod: HTTPMethod { 
        .get
    }
}

let request = Request()
let requestProcessor = NetworkLayerAssembly().assemble()
let user: User = try await requestProcessor.send(request)

Documentation

Check out network-layer documentation.

Requirements

  • iOS 13.0+ / macOS 10.15+ / tvOS 13.0+ / watchOS 7.0+ / visionOS 1.0+
  • Xcode 14.0
  • Swift 5.7

Installation

Swift Package Manager

The Swift Package Manager is a tool for automating the distribution of Swift code and is integrated into the swift compiler. It is in early development, but network-layer does support its use on supported platforms.

Once you have your Swift package set up, adding network-layer as a dependency is as easy as adding it to the dependencies value of your Package.swift.

dependencies: [
    .package(url: "https://github.com/space-code/network-layer.git", .upToNextMajor(from: "1.0.0"))
]

Communication

  • If you found a bug, open an issue.
  • If you have a feature request, open an issue.
  • If you want to contribute, submit a pull request.

Contributing

Bootstrapping development environment

make bootstrap

Please feel free to help out with this project! If you see something that could be made better or want a new feature, open up an issue or send a Pull Request!

Author

Nikita Vasilev, nv3212@gmail.com

Dependencies

This project uses several open-source packages:

  • Atomic is a Swift property wrapper designed to make values thread-safe.
  • Typhoon is a service for retry policies.
  • Mocker is a library written in Swift which makes it possible to mock data requests using a custom URLProtocol.

License

network-layer is available under the MIT license. See the LICENSE file for more info.