Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/space-code/network-layer
Network communication made easy
https://github.com/space-code/network-layer
async-await exponential-backoff network networking swift urlsession urlsessiondatatask
Last synced: about 2 months ago
JSON representation
Network communication made easy
- Host: GitHub
- URL: https://github.com/space-code/network-layer
- Owner: space-code
- License: mit
- Created: 2023-10-10T06:10:23.000Z (about 1 year ago)
- Default Branch: dev
- Last Pushed: 2024-05-11T16:09:36.000Z (8 months ago)
- Last Synced: 2024-10-16T07:01:38.277Z (2 months ago)
- Topics: async-await, exponential-backoff, network, networking, swift, urlsession, urlsessiondatatask
- Language: Swift
- Homepage:
- Size: 416 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
![NetworkLayer: Network communication made easy](https://raw.githubusercontent.com/space-code/network-layer/dev/Resources/network-layer.png)
network-layer
## Description
`network-layer` is a library for network communication.- [Usage](#usage)
- [Documentation](#documentation)
- [Requirements](#requirements)
- [Installation](#installation)
- [Communication](#communication)
- [Contributing](#contributing)
- [Author](#author)
- [Dependencies](#dependencies)
- [License](#license)## Usage
```swift
import NetworkLayer
import NetworkLayerInterfacesstruct 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](https://github.com/space-code/network-layer/blob/main/Sources/NetworkLayer/NetworkLayer.docc/NetworkLayer.md).
## 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 ManagerThe [Swift Package Manager](https://swift.org/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`.
```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, [email protected]## Dependencies
This project uses several open-source packages:* [Atomic](https://github.com/space-code/atomic) is a Swift property wrapper designed to make values thread-safe.
* [Typhoon](https://github.com/space-code/typhoon) is a service for retry policies.
* [Mocker](https://github.com/WeTransfer/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.