Contents

ATProtoKit/ATIdentityTools

A set of Swift utilities for resolving and validating DIDs and handles in the AT Protocol.

Quick Example

do {
    // Create instances of the handle and DID resolvers.
    let handleResolver = HandleResolver()
    var didResolver = DIDResolver()

    // Add the handle and resolve it.
    let handle = "atproto.com"
    let did = try await handleResolver.resolve(handle: handle)

    if let did = did {
        // Now you can view the DID...
        print("Handle resolved to: \(did)") // did:plc:ewvi7nxzyoun6zhxrhs64oiz

        // ... and resolve that to get the DID Document.
        let didDocument = try await didResolver.resolve(did: did)
        print("DID Document: \(didDocument)")

        // Additional retries of the same DID will be cached for a period of time.
        // You can disable this by force refreshing.
        let secondDIDDocument = try await didResolver.resolve(did: did, willForceRefresh: true)
        print("Second DID Document: \(secondDIDDocument)")

        // Helper methods can also use the same cache.
        let data = try await didResolver.resolveATProtocolData(for: did)
        print("Resolved AT Protocol Data: \(data)")

        if data.handle == handle {
            print("Handle mismatch.")
        }
    } else {
        print("No DID found for handle.")
    }
} catch {
    print(error)
}

Installation

You can use the Swift Package Manager to download and import the library into your project:

dependencies: [
    .package(url: "https://github.com/ATProtoKit/ATIdentityTools.git", from: "0.1.0")
]

Then under targets:

targets: [
    .target(
        // name: "[name of target]",
        dependencies: [
            .product(name: "ATIdentityTools", package: "atidentitytools"),
            .product(name: "DIDCore", package: "didcore")
        ]
    )
]

Requirements

To use ATIdentityTools in your apps, your app should target the specific version numbers:

  • iOS and iPadOS 14 or later.
  • macOS 13 or later.
  • tvOS 14 or later.
  • visionOS 1 or later.
  • watchOS 9 or later.

For Linux, you need to use Swift 6.0 or later. On Linux, the minimum requirements include:

  • Amazon Linux 2
  • Debian 12
  • Fedora 39
  • Red Hat UBI 9
  • Ubuntu 20.04

You can also use this project for any programs you make using Swift and running on Docker.

[!WARNING] As of right now, Windows support is theoretically possible, but not has not been tested to work. Contributions and feedback on making it fully compatible for Windows and Windows Server are welcomed. WebAssembly and Android are currently not supported, but will be in the future.

Submitting Contributions and Feedback

While this project will change significantly, feedback, issues, and contributions are highly welcomed and encouraged. If you'd like to contribute to this project, please be sure to read both the API Guidelines as well as the Contributor Guidelines before submitting a pull request. Any issues (such as bug reports or feedback) can be submitted in the Issues tab. Finally, if there are any security vulnerabilities, please read SECURITY.md for how to report it.

If you have any questions, you can ask me on Bluesky (@cjrriley.ca). And while you're at it, give me a follow! I'm also active on the Bluesky API Touchers Discord server.

License

This Swift package is using the Apache 2.0 License. Please view LICENSE.md for more details.

The following third-party Swift packages have been used to help run ATIdentityTools:

Package Metadata

Repository: ATProtoKit/ATIdentityTools

Homepage: https://swiftpackageindex.com/ATProtoKit/ATIdentityTools/documentation/atidentitytools

Stars: 4

Forks: 2

Open issues: 3

Default branch: main

Primary language: swift

License: Apache-2.0

Topics: api, atproto, atprotocol, bluesky, swift, swift-package-manager

README: README.md