From b186c1e1ca1cc2b9b04505aa78c1f8193d81cf6c Mon Sep 17 00:00:00 2001 From: Stevan Freeborn Date: Fri, 28 Aug 2026 09:15:12 -0500 Subject: [PATCH] chore: stub out resolver which will be main entry point of the package --- .../IResolver.cs | 12 +++++++ .../Resolver.cs | 35 +++++++++++++++++++ .../ResolverTests.cs | 10 ++++++ 3 files changed, 57 insertions(+) create mode 100644 src/StevanFreeborn.Atproto.IdentityResolver/IResolver.cs create mode 100644 src/StevanFreeborn.Atproto.IdentityResolver/Resolver.cs create mode 100644 tests/StevanFreeborn.Atproto.IdentityResolver.Tests/ResolverTests.cs diff --git a/src/StevanFreeborn.Atproto.IdentityResolver/IResolver.cs b/src/StevanFreeborn.Atproto.IdentityResolver/IResolver.cs new file mode 100644 index 0000000..5c888af --- /dev/null +++ b/src/StevanFreeborn.Atproto.IdentityResolver/IResolver.cs @@ -0,0 +1,12 @@ +namespace StevanFreeborn.Atproto.IdentityResolver; + +/// +/// +/// +public interface IResolver +{ + /// + /// + /// + Task ResolveOrThrowAsync(AtprotoId atprotoId, CancellationToken ct); +} \ No newline at end of file diff --git a/src/StevanFreeborn.Atproto.IdentityResolver/Resolver.cs b/src/StevanFreeborn.Atproto.IdentityResolver/Resolver.cs new file mode 100644 index 0000000..b7781b9 --- /dev/null +++ b/src/StevanFreeborn.Atproto.IdentityResolver/Resolver.cs @@ -0,0 +1,35 @@ +namespace StevanFreeborn.Atproto.IdentityResolver; + +/// +public class Resolver : IResolver +{ + /// + public Task ResolveOrThrowAsync(AtprotoId atprotoId, CancellationToken ct) + { + // you need to retrieve the did document based on what you got + // if you have domain + // you are going to try to retrieve the did + // either through using /.well-known/did.json + // or looking for _atproto.domain txt record + // + // you now for sure have a did + // check method + // if method is web + // retrieve doc from domain/.well-known/did.json + // if method is plc + // retrieve doc from plc.directory/{did} + // you now have the document + // extract alsoKnownAs which is the handle + // make sure you can get back the same did + // from the handle's domain at /.well-known/did.json + // or _atproto.domain txt record + + return Task.FromResult(new DidDocument()); + } + +} + +/// +/// +/// +public class DidDocument(); \ No newline at end of file diff --git a/tests/StevanFreeborn.Atproto.IdentityResolver.Tests/ResolverTests.cs b/tests/StevanFreeborn.Atproto.IdentityResolver.Tests/ResolverTests.cs new file mode 100644 index 0000000..92e7685 --- /dev/null +++ b/tests/StevanFreeborn.Atproto.IdentityResolver.Tests/ResolverTests.cs @@ -0,0 +1,10 @@ +namespace StevanFreeborn.Atproto.IdentityResolver.Tests; + +public class ResolverTests +{ + [Fact] + public async Task ResolveAsync_WhenCalledWithInvalidDid_ItShouldThrowInvalidArgumentException() + { + true.Should().BeTrue(); + } +} \ No newline at end of file