Skip to content

rrainn/Lemmy-Swift-Client

Repository files navigation

Lemmy-Swift-Client

A Swift client for Lemmy.

Features

  • Fully Swift type safe
  • async/await compatible
  • Supports all Lemmy API endpoints
  • Uses Codable for easy JSON serialization/deserialization

Installation

We use Swift Package Manager to make it easy to install and use the Lemmy Swift Client in your project.

dependencies: [
	.package(url: "https://github.com/rrainn/Lemmy-Swift-Client.git", .exact("3.0.0"))
]

Please note, that we do not subscribe to SemVer versioning at this time due to the massive amount of Lemmy API changes. Please consider pinning Lemmy-Swift-Client to a specific version at this time.

Usage

Below is an example of a basic usage example of how to use the Lemmy Swift Client.

import Lemmy_Swift_Client

if let url = URL(string: "https://eventfrontier.com/api/v3") {
	// Create an instance of the Lemmy API with the base URL of your Lemmy instance
	let api = LemmyAPI(baseUrl: url)

	// Create a SearchRequest object with the `q` parameter
	let request = SearchRequest(q: "Lemmy-Swift-Client")
	// Send the request to the Lemmy API
	if let response = try? await api.request(request) {
		print(response)
	} else {
		print("Error")
	}
}

Luckily this just scratches the surface of what you can do with the Lemmy Swift Client. For more information checkout our documentation.

Contributing

All of the Sources/Lemmy-Swift-Client/Lemmy API files are autogenerated. Please do not edit these files directly. You can view the auto-generation code in the autogen directory.

Resources

License

Lemmy Swift Client is available under the MIT license. See the LICENSE.

Code Formatting + Linting

This project uses swiftformat for code formatting and linting.

Please make sure to lint your code before submitting a Pull Request.

If you do not have swiftformat installed, you can install it with Homebrew:

brew install swiftformat

The repository provides simple Makefile targets to run either:

# Lint (will not apply changes)
make lint

# Lint and apply correct formatting
make lint-fix

Maintainers