https://github.com/socialweb-php/atproto-lexicon
A PHP-based Lexicon parser for applications using the AT Protocol
https://github.com/socialweb-php/atproto-lexicon
atp atprotocol bluesky lexicon
Last synced: about 1 year ago
JSON representation
A PHP-based Lexicon parser for applications using the AT Protocol
- Host: GitHub
- URL: https://github.com/socialweb-php/atproto-lexicon
- Owner: socialweb-php
- License: lgpl-3.0
- Created: 2023-05-01T04:22:36.000Z (about 3 years ago)
- Default Branch: main
- Last Pushed: 2024-05-01T22:07:03.000Z (about 2 years ago)
- Last Synced: 2025-04-22T15:08:11.262Z (about 1 year ago)
- Topics: atp, atprotocol, bluesky, lexicon
- Language: PHP
- Homepage:
- Size: 270 KB
- Stars: 10
- Watchers: 0
- Forks: 5
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: COPYING
- Code of conduct: CODE_OF_CONDUCT.md
- Codeowners: .github/CODEOWNERS
- Security: SECURITY.md
Awesome Lists containing this project
README
socialweb/atproto-lexicon
A PHP-based Lexicon parser for applications using the AT Protocol
## About
socialweb/atproto-lexicon parses [Lexicon schemas][] for the [AT Protocol][].
The current version is compliant with [@atproto/lexicon][] at commit-ish
[a900e95][].
This project adheres to a [code of conduct](CODE_OF_CONDUCT.md).
By participating in this project and its community, you are expected to
uphold this code.
## Installation
Install this package as a dependency using [Composer](https://getcomposer.org).
``` bash
composer require socialweb/atproto-lexicon
```
## Usage
```php
use SocialWeb\Atproto\Lexicon\Nsid\Nsid;
use SocialWeb\Atproto\Lexicon\Parser\DefaultParserFactory;
use SocialWeb\Atproto\Lexicon\Parser\DefaultSchemaRepository;
use SocialWeb\Atproto\Lexicon\Parser\LexiconParser;
$schemas = '/path/to/bluesky-social/lexicons';
$schemaRepository = new DefaultSchemaRepository($schemas);
$parser = new LexiconParser(new DefaultParserFactory($schemaRepository));
$nsid = new Nsid('app.bsky.feed.post');
$schemaFile = $schemaRepository->findSchemaPathByNsid($nsid);
$schemaContents = file_get_contents((string) $schemaFile);
$document = $parser->parse((string) $schemaContents);
```
### Resolving References
Using this library, you may resolve references in Lexicon schemas.
For example:
```php
use SocialWeb\Atproto\Lexicon\Types\LexResolvable;
foreach ($document->defs as $defId => $def) {
if ($def instanceof LexResolvable) {
$resolved = $def->resolve();
}
}
```
## Contributing
Contributions are welcome! To contribute, please familiarize yourself with
[CONTRIBUTING.md](CONTRIBUTING.md).
## Coordinated Disclosure
Keeping user information safe and secure is a top priority, and we welcome the
contribution of external security researchers. If you believe you've found a
security issue in software that is maintained in this repository, please read
[SECURITY.md](SECURITY.md) for instructions on submitting a vulnerability report.
## Copyright and License
Copyright © the socialweb/atproto-lexicon Contributors and licensed for use
under the terms of the GNU Lesser General Public License (LGPL-3.0-or-later)
as published by the Free Software Foundation. Please see
[COPYING.LESSER](COPYING.LESSER), [COPYING](COPYING), and [NOTICE](NOTICE)
for more information.
[lexicon schemas]: https://atproto.com/guides/lexicon
[at protocol]: https://atproto.com
[@atproto/lexicon]: https://www.npmjs.com/package/@atproto/lexicon
[a900e95]: https://github.com/bluesky-social/atproto/blob/a900e955a6bfabada696dbd2c2aa21a0edc48fe7/packages/lexicon/src/types.ts