+7
-7
README.md
+7
-7
README.md
···
32
## Quick Example
33
34
```php
35
-
use SocialDept\Resolver\Facades\Resolver;
36
37
// Resolve a DID to its document
38
$document = Resolver::resolveDid('did:plc:ewvi7nxzyoun6zhxrhs64oiz');
···
70
Resolver supports both `did:plc` and `did:web` methods:
71
72
```php
73
-
use SocialDept\Resolver\Facades\Resolver;
74
75
// PLC directory resolution
76
$document = Resolver::resolveDid('did:plc:ewvi7nxzyoun6zhxrhs64oiz');
···
165
Beacon includes static helper methods to validate DIDs and handles:
166
167
```php
168
-
use SocialDept\Resolver\Support\Identity;
169
170
// Validate handles
171
Identity::isHandle('alice.bsky.social'); // true
···
270
Beacon throws descriptive exceptions when resolution fails:
271
272
```php
273
-
use SocialDept\Resolver\Exceptions\DidResolutionException;
274
-
use SocialDept\Resolver\Exceptions\HandleResolutionException;
275
276
try {
277
$document = Resolver::resolveDid('did:invalid:format');
···
328
### Input Validation
329
330
```php
331
-
use SocialDept\Resolver\Support\Identity;
332
-
use SocialDept\Resolver\Facades\Resolver;
333
334
// Validate user input before resolving
335
$actor = request()->input('actor');
···
32
## Quick Example
33
34
```php
35
+
use SocialDept\AtpResolver\Facades\Resolver;
36
37
// Resolve a DID to its document
38
$document = Resolver::resolveDid('did:plc:ewvi7nxzyoun6zhxrhs64oiz');
···
70
Resolver supports both `did:plc` and `did:web` methods:
71
72
```php
73
+
use SocialDept\AtpResolver\Facades\Resolver;
74
75
// PLC directory resolution
76
$document = Resolver::resolveDid('did:plc:ewvi7nxzyoun6zhxrhs64oiz');
···
165
Beacon includes static helper methods to validate DIDs and handles:
166
167
```php
168
+
use SocialDept\AtpResolver\Support\Identity;
169
170
// Validate handles
171
Identity::isHandle('alice.bsky.social'); // true
···
270
Beacon throws descriptive exceptions when resolution fails:
271
272
```php
273
+
use SocialDept\AtpResolver\Exceptions\DidResolutionException;
274
+
use SocialDept\AtpResolver\Exceptions\HandleResolutionException;
275
276
try {
277
$document = Resolver::resolveDid('did:invalid:format');
···
328
### Input Validation
329
330
```php
331
+
use SocialDept\AtpResolver\Support\Identity;
332
+
use SocialDept\AtpResolver\Facades\Resolver;
333
334
// Validate user input before resolving
335
$actor = request()->input('actor');
+4
-4
composer.json
+4
-4
composer.json
···
18
},
19
"autoload": {
20
"psr-4": {
21
-
"SocialDept\\Resolver\\": "src/"
22
}
23
},
24
"autoload-dev": {
25
"psr-4": {
26
-
"SocialDept\\Resolver\\Tests\\": "tests/"
27
}
28
},
29
"extra": {
30
"laravel": {
31
"providers": [
32
-
"SocialDept\\Resolver\\ResolverServiceProvider"
33
],
34
"aliases": {
35
-
"Resolver": "SocialDept\\Resolver\\Facades\\Resolver"
36
}
37
}
38
}
···
18
},
19
"autoload": {
20
"psr-4": {
21
+
"SocialDept\\AtpResolver\\": "src/"
22
}
23
},
24
"autoload-dev": {
25
"psr-4": {
26
+
"SocialDept\\AtpResolver\\Tests\\": "tests/"
27
}
28
},
29
"extra": {
30
"laravel": {
31
"providers": [
32
+
"SocialDept\\AtpResolver\\ResolverServiceProvider"
33
],
34
"aliases": {
35
+
"Resolver": "SocialDept\\AtpResolver\\Facades\\Resolver"
36
}
37
}
38
}
+2
-2
src/Cache/LaravelCacheStore.php
+2
-2
src/Cache/LaravelCacheStore.php
+1
-1
src/Contracts/CacheStore.php
+1
-1
src/Contracts/CacheStore.php
+3
-3
src/Contracts/DidResolver.php
+3
-3
src/Contracts/DidResolver.php
···
1
<?php
2
3
-
namespace SocialDept\Resolver\Contracts;
4
5
-
use SocialDept\Resolver\Data\DidDocument;
6
7
interface DidResolver
8
{
···
12
* @param string $did The DID to resolve (e.g., "did:plc:abc123" or "did:web:example.com")
13
* @return DidDocument
14
*
15
-
* @throws \SocialDept\Resolver\Exceptions\DidResolutionException
16
*/
17
public function resolve(string $did): DidDocument;
18
···
1
<?php
2
3
+
namespace SocialDept\AtpResolver\Contracts;
4
5
+
use SocialDept\AtpResolver\Data\DidDocument;
6
7
interface DidResolver
8
{
···
12
* @param string $did The DID to resolve (e.g., "did:plc:abc123" or "did:web:example.com")
13
* @return DidDocument
14
*
15
+
* @throws \SocialDept\AtpResolver\Exceptions\DidResolutionException
16
*/
17
public function resolve(string $did): DidDocument;
18
+2
-2
src/Contracts/HandleResolver.php
+2
-2
src/Contracts/HandleResolver.php
···
1
<?php
2
3
-
namespace SocialDept\Resolver\Contracts;
4
5
interface HandleResolver
6
{
···
10
* @param string $handle The handle to resolve (e.g., "user.bsky.social")
11
* @return string The resolved DID
12
*
13
-
* @throws \SocialDept\Resolver\Exceptions\HandleResolutionException
14
*/
15
public function resolve(string $handle): string;
16
}
···
1
<?php
2
3
+
namespace SocialDept\AtpResolver\Contracts;
4
5
interface HandleResolver
6
{
···
10
* @param string $handle The handle to resolve (e.g., "user.bsky.social")
11
* @return string The resolved DID
12
*
13
+
* @throws \SocialDept\AtpResolver\Exceptions\HandleResolutionException
14
*/
15
public function resolve(string $handle): string;
16
}
+1
-1
src/Data/DidDocument.php
+1
-1
src/Data/DidDocument.php
+1
-1
src/Exceptions/DidResolutionException.php
+1
-1
src/Exceptions/DidResolutionException.php
+1
-1
src/Exceptions/HandleResolutionException.php
+1
-1
src/Exceptions/HandleResolutionException.php
+1
-1
src/Exceptions/ResolverException.php
+1
-1
src/Exceptions/ResolverException.php
+1
-1
src/Facades/Resolver.php
+1
-1
src/Facades/Resolver.php
+9
-9
src/Resolver.php
+9
-9
src/Resolver.php
···
1
<?php
2
3
-
namespace SocialDept\Resolver;
4
5
-
use SocialDept\Resolver\Contracts\CacheStore;
6
-
use SocialDept\Resolver\Contracts\DidResolver;
7
-
use SocialDept\Resolver\Contracts\HandleResolver;
8
-
use SocialDept\Resolver\Data\DidDocument;
9
-
use SocialDept\Resolver\Exceptions\DidResolutionException;
10
-
use SocialDept\Resolver\Exceptions\HandleResolutionException;
11
-
use SocialDept\Resolver\Support\Concerns\HasConfig;
12
-
use SocialDept\Resolver\Support\Identity;
13
14
class Resolver
15
{
···
1
<?php
2
3
+
namespace SocialDept\AtpResolver;
4
5
+
use SocialDept\AtpResolver\Contracts\CacheStore;
6
+
use SocialDept\AtpResolver\Contracts\DidResolver;
7
+
use SocialDept\AtpResolver\Contracts\HandleResolver;
8
+
use SocialDept\AtpResolver\Data\DidDocument;
9
+
use SocialDept\AtpResolver\Exceptions\DidResolutionException;
10
+
use SocialDept\AtpResolver\Exceptions\HandleResolutionException;
11
+
use SocialDept\AtpResolver\Support\Concerns\HasConfig;
12
+
use SocialDept\AtpResolver\Support\Identity;
13
14
class Resolver
15
{
+7
-7
src/ResolverServiceProvider.php
+7
-7
src/ResolverServiceProvider.php
···
1
<?php
2
3
-
namespace SocialDept\Resolver;
4
5
use Illuminate\Support\ServiceProvider;
6
-
use SocialDept\Resolver\Cache\LaravelCacheStore;
7
-
use SocialDept\Resolver\Contracts\CacheStore;
8
-
use SocialDept\Resolver\Contracts\DidResolver;
9
-
use SocialDept\Resolver\Contracts\HandleResolver;
10
-
use SocialDept\Resolver\Resolvers\AtProtoHandleResolver;
11
-
use SocialDept\Resolver\Resolvers\DidResolverManager;
12
13
class ResolverServiceProvider extends ServiceProvider
14
{
···
1
<?php
2
3
+
namespace SocialDept\AtpResolver;
4
5
use Illuminate\Support\ServiceProvider;
6
+
use SocialDept\AtpResolver\Cache\LaravelCacheStore;
7
+
use SocialDept\AtpResolver\Contracts\CacheStore;
8
+
use SocialDept\AtpResolver\Contracts\DidResolver;
9
+
use SocialDept\AtpResolver\Contracts\HandleResolver;
10
+
use SocialDept\AtpResolver\Resolvers\AtProtoHandleResolver;
11
+
use SocialDept\AtpResolver\Resolvers\DidResolverManager;
12
13
class ResolverServiceProvider extends ServiceProvider
14
{
+4
-4
src/Resolvers/AtProtoHandleResolver.php
+4
-4
src/Resolvers/AtProtoHandleResolver.php
···
1
<?php
2
3
-
namespace SocialDept\Resolver\Resolvers;
4
5
use GuzzleHttp\Client;
6
use GuzzleHttp\Exception\GuzzleException;
7
-
use SocialDept\Resolver\Contracts\HandleResolver;
8
-
use SocialDept\Resolver\Exceptions\HandleResolutionException;
9
-
use SocialDept\Resolver\Support\Concerns\HasConfig;
10
11
class AtProtoHandleResolver implements HandleResolver
12
{
···
1
<?php
2
3
+
namespace SocialDept\AtpResolver\Resolvers;
4
5
use GuzzleHttp\Client;
6
use GuzzleHttp\Exception\GuzzleException;
7
+
use SocialDept\AtpResolver\Contracts\HandleResolver;
8
+
use SocialDept\AtpResolver\Exceptions\HandleResolutionException;
9
+
use SocialDept\AtpResolver\Support\Concerns\HasConfig;
10
11
class AtProtoHandleResolver implements HandleResolver
12
{
+5
-5
src/Resolvers/DidResolverManager.php
+5
-5
src/Resolvers/DidResolverManager.php
···
1
<?php
2
3
-
namespace SocialDept\Resolver\Resolvers;
4
5
-
use SocialDept\Resolver\Contracts\DidResolver;
6
-
use SocialDept\Resolver\Data\DidDocument;
7
-
use SocialDept\Resolver\Exceptions\DidResolutionException;
8
-
use SocialDept\Resolver\Support\Concerns\ParsesDid;
9
10
class DidResolverManager implements DidResolver
11
{
···
1
<?php
2
3
+
namespace SocialDept\AtpResolver\Resolvers;
4
5
+
use SocialDept\AtpResolver\Contracts\DidResolver;
6
+
use SocialDept\AtpResolver\Data\DidDocument;
7
+
use SocialDept\AtpResolver\Exceptions\DidResolutionException;
8
+
use SocialDept\AtpResolver\Support\Concerns\ParsesDid;
9
10
class DidResolverManager implements DidResolver
11
{
+6
-6
src/Resolvers/PlcDidResolver.php
+6
-6
src/Resolvers/PlcDidResolver.php
···
1
<?php
2
3
-
namespace SocialDept\Resolver\Resolvers;
4
5
use GuzzleHttp\Client;
6
use GuzzleHttp\Exception\GuzzleException;
7
-
use SocialDept\Resolver\Contracts\DidResolver;
8
-
use SocialDept\Resolver\Data\DidDocument;
9
-
use SocialDept\Resolver\Exceptions\DidResolutionException;
10
-
use SocialDept\Resolver\Support\Concerns\HasConfig;
11
-
use SocialDept\Resolver\Support\Concerns\ParsesDid;
12
13
class PlcDidResolver implements DidResolver
14
{
···
1
<?php
2
3
+
namespace SocialDept\AtpResolver\Resolvers;
4
5
use GuzzleHttp\Client;
6
use GuzzleHttp\Exception\GuzzleException;
7
+
use SocialDept\AtpResolver\Contracts\DidResolver;
8
+
use SocialDept\AtpResolver\Data\DidDocument;
9
+
use SocialDept\AtpResolver\Exceptions\DidResolutionException;
10
+
use SocialDept\AtpResolver\Support\Concerns\HasConfig;
11
+
use SocialDept\AtpResolver\Support\Concerns\ParsesDid;
12
13
class PlcDidResolver implements DidResolver
14
{
+6
-6
src/Resolvers/WebDidResolver.php
+6
-6
src/Resolvers/WebDidResolver.php
···
1
<?php
2
3
-
namespace SocialDept\Resolver\Resolvers;
4
5
use GuzzleHttp\Client;
6
use GuzzleHttp\Exception\GuzzleException;
7
-
use SocialDept\Resolver\Contracts\DidResolver;
8
-
use SocialDept\Resolver\Data\DidDocument;
9
-
use SocialDept\Resolver\Exceptions\DidResolutionException;
10
-
use SocialDept\Resolver\Support\Concerns\HasConfig;
11
-
use SocialDept\Resolver\Support\Concerns\ParsesDid;
12
13
class WebDidResolver implements DidResolver
14
{
···
1
<?php
2
3
+
namespace SocialDept\AtpResolver\Resolvers;
4
5
use GuzzleHttp\Client;
6
use GuzzleHttp\Exception\GuzzleException;
7
+
use SocialDept\AtpResolver\Contracts\DidResolver;
8
+
use SocialDept\AtpResolver\Data\DidDocument;
9
+
use SocialDept\AtpResolver\Exceptions\DidResolutionException;
10
+
use SocialDept\AtpResolver\Support\Concerns\HasConfig;
11
+
use SocialDept\AtpResolver\Support\Concerns\ParsesDid;
12
13
class WebDidResolver implements DidResolver
14
{
+1
-1
src/Support/Concerns/HasConfig.php
+1
-1
src/Support/Concerns/HasConfig.php
+2
-2
src/Support/Concerns/ParsesDid.php
+2
-2
src/Support/Concerns/ParsesDid.php
+1
-1
src/Support/Identity.php
+1
-1
src/Support/Identity.php
+2
-2
tests/Unit/DidDocumentTest.php
+2
-2
tests/Unit/DidDocumentTest.php
+5
-5
tests/Unit/DidResolverManagerTest.php
+5
-5
tests/Unit/DidResolverManagerTest.php
···
1
<?php
2
3
-
namespace SocialDept\Resolver\Tests\Unit;
4
5
use PHPUnit\Framework\TestCase;
6
-
use SocialDept\Resolver\Contracts\DidResolver;
7
-
use SocialDept\Resolver\Data\DidDocument;
8
-
use SocialDept\Resolver\Exceptions\DidResolutionException;
9
-
use SocialDept\Resolver\Resolvers\DidResolverManager;
10
11
class DidResolverManagerTest extends TestCase
12
{
···
1
<?php
2
3
+
namespace SocialDept\AtpResolver\Tests\Unit;
4
5
use PHPUnit\Framework\TestCase;
6
+
use SocialDept\AtpResolver\Contracts\DidResolver;
7
+
use SocialDept\AtpResolver\Data\DidDocument;
8
+
use SocialDept\AtpResolver\Exceptions\DidResolutionException;
9
+
use SocialDept\AtpResolver\Resolvers\DidResolverManager;
10
11
class DidResolverManagerTest extends TestCase
12
{
+2
-2
tests/Unit/IdentityTest.php
+2
-2
tests/Unit/IdentityTest.php
+3
-3
tests/Unit/PlcDidResolverTest.php
+3
-3
tests/Unit/PlcDidResolverTest.php
+6
-6
tests/Unit/ResolverIdentityTest.php
+6
-6
tests/Unit/ResolverIdentityTest.php
···
1
<?php
2
3
-
namespace SocialDept\Resolver\Tests\Unit;
4
5
use PHPUnit\Framework\TestCase;
6
-
use SocialDept\Resolver\Contracts\CacheStore;
7
-
use SocialDept\Resolver\Contracts\DidResolver;
8
-
use SocialDept\Resolver\Contracts\HandleResolver;
9
-
use SocialDept\Resolver\Data\DidDocument;
10
-
use SocialDept\Resolver\Resolver;
11
12
class ResolverIdentityTest extends TestCase
13
{
···
1
<?php
2
3
+
namespace SocialDept\AtpResolver\Tests\Unit;
4
5
use PHPUnit\Framework\TestCase;
6
+
use SocialDept\AtpResolver\Contracts\CacheStore;
7
+
use SocialDept\AtpResolver\Contracts\DidResolver;
8
+
use SocialDept\AtpResolver\Contracts\HandleResolver;
9
+
use SocialDept\AtpResolver\Data\DidDocument;
10
+
use SocialDept\AtpResolver\Resolver;
11
12
class ResolverIdentityTest extends TestCase
13
{
+6
-6
tests/Unit/ResolverTest.php
+6
-6
tests/Unit/ResolverTest.php
···
1
<?php
2
3
-
namespace SocialDept\Resolver\Tests\Unit;
4
5
use PHPUnit\Framework\TestCase;
6
-
use SocialDept\Resolver\Contracts\CacheStore;
7
-
use SocialDept\Resolver\Contracts\DidResolver;
8
-
use SocialDept\Resolver\Contracts\HandleResolver;
9
-
use SocialDept\Resolver\Data\DidDocument;
10
-
use SocialDept\Resolver\Resolver;
11
12
class ResolverTest extends TestCase
13
{
···
1
<?php
2
3
+
namespace SocialDept\AtpResolver\Tests\Unit;
4
5
use PHPUnit\Framework\TestCase;
6
+
use SocialDept\AtpResolver\Contracts\CacheStore;
7
+
use SocialDept\AtpResolver\Contracts\DidResolver;
8
+
use SocialDept\AtpResolver\Contracts\HandleResolver;
9
+
use SocialDept\AtpResolver\Data\DidDocument;
10
+
use SocialDept\AtpResolver\Resolver;
11
12
class ResolverTest extends TestCase
13
{
+3
-3
tests/Unit/WebDidResolverTest.php
+3
-3
tests/Unit/WebDidResolverTest.php