{"id":22051335,"url":"https://github.com/srwiez/grpc-protoset","last_synced_at":"2026-05-19T08:01:57.480Z","repository":{"id":264469756,"uuid":"893467001","full_name":"SRWieZ/grpc-protoset","owner":"SRWieZ","description":"A simple PHP library to convert a protoset file to proto files","archived":false,"fork":false,"pushed_at":"2025-12-03T10:37:44.000Z","size":52,"stargazers_count":4,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-03-29T01:23:47.664Z","etag":null,"topics":["grpc","php","starlink"],"latest_commit_sha":null,"homepage":"https://srwiez.com/open-source","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SRWieZ.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"SRWieZ"}},"created_at":"2024-11-24T14:24:43.000Z","updated_at":"2025-04-05T09:50:31.000Z","dependencies_parsed_at":"2025-01-28T21:31:29.269Z","dependency_job_id":"9b9dc3ca-0866-4833-a4c0-46366aabc033","html_url":"https://github.com/SRWieZ/grpc-protoset","commit_stats":null,"previous_names":["srwiez/grpc-protoset"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/SRWieZ/grpc-protoset","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SRWieZ%2Fgrpc-protoset","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SRWieZ%2Fgrpc-protoset/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SRWieZ%2Fgrpc-protoset/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SRWieZ%2Fgrpc-protoset/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SRWieZ","download_url":"https://codeload.github.com/SRWieZ/grpc-protoset/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SRWieZ%2Fgrpc-protoset/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33207479,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-19T07:54:09.561Z","status":"ssl_error","status_checked_at":"2026-05-19T07:54:08.508Z","response_time":58,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["grpc","php","starlink"],"created_at":"2024-11-30T15:08:39.542Z","updated_at":"2026-05-19T08:01:57.433Z","avatar_url":"https://github.com/SRWieZ.png","language":"PHP","funding_links":["https://github.com/sponsors/SRWieZ"],"categories":[],"sub_categories":[],"readme":"# gRPC Protoset Converter\n\n[![Latest Stable Version](https://poser.pugx.org/srwiez/grpc-protoset/v)](https://packagist.org/packages/srwiez/grpc-protoset)\n[![Total Downloads](https://poser.pugx.org/srwiez/grpc-protoset/downloads)](https://packagist.org/packages/srwiez/grpc-protoset)\n[![License](https://poser.pugx.org/srwiez/grpc-protoset/license)](https://packagist.org/packages/srwiez/grpc-protoset)\n[![PHP Version Require](https://poser.pugx.org/srwiez/grpc-protoset/require/php)](https://packagist.org/packages/srwiez/grpc-protoset)\n\n[//]: # ([![GitHub Workflow Status \u0026#40;with event\u0026#41;]\u0026#40;https://img.shields.io/github/actions/workflow/status/srwiez/grpc-protoset/test.yml?label=Tests\u0026#41;]\u0026#40;https://github.com/srwiez/grpc-protoset/actions/workflows/test.yml\u0026#41;)\n\nA simple PHP library to convert a protoset file to proto files.\n\nIf you're here, you likely attempted to use a gRPC API and need to generate a PHP client. However, you may be stuck because you have a protoset file instead of a proto file.\n\nThis library will assist you in converting the protoset file to proto files.\n\nIt works well with gRPC servers that have the reflection service enabled. To learn more, check out the use case example below.\n\n## 🚀 Installation\n\n```bash\ncomposer require srwiez/grpc-protoset\n```\n\n## 📚 Usage\n\nEither use the `ProtosetConverter` class directly.\n```php\nuse SRWieZ\\GrpcProtoset\\ProtosetConverter;\n\n$protoset = new ProtosetConverter();\n$protoset-\u003esetOutputDir('./proto');\n$protoset-\u003econvert('starlink.protoset');\n```\n\nor use the script provided by the package.\n```bash\nphp cli/converter.php \"starlink.protoset\" ./proto\n```\n\nor if you have installed the package globally, you can use the following command:\n```bash\nprotoset-converter \"starlink.protoset\" ./proto\n```\n\n## 🎁 Use case example (Starlink)\nHow to generate a PHP client for the Starlink API.\n\nYou will need to install the following dependencies:\n```bash\nbrew install protobuf\nbrew install grpc\nbrew install grpcurl\n```\n\nFirst, get the protoset file from your Starlink device.\n```bash\ngrpcurl -plaintext -protoset-out \"starlink.protoset\" \"192.168.100.1:9200\" describe SpaceX.API.Device.Device\n```\n\nThen, convert the protoset file to proto files.\n```bash\nprotoset-converter \"starlink.protoset\" ./proto\n```\n\nFinally, generate the PHP client.\n```bash\nprotoc --php_out=./generated/ proto/spacex/api/device/device.proto\n```\n\nBonus, edit your composer.json file to autoload the generated PHP client.\n```json\n{\n    \"autoload\": {\n        \"psr-4\": {\n          \"SpaceX\\\\API\\\\\": \"generated/SpaceX/API\",\n          \"GPBMetadata\\\\Spacex\\\\Api\\\\\": \"generated/GPBMetadata/Spacex/Api\"\n        }\n    }\n}\n```\n\n\n## 📋 TODO\nContributions are welcome!\n\n- Write tests by using the starlink protoset file\n\n\n## 🤝 Contributing\nClone the project and run `composer update` to install the dependencies.\n\nBefore pushing your changes, run `composer qa`. \n\nThis will run [pint](http://github.com/laravel/pint) (code style), [phpstan](http://github.com/phpstan/phpstan) (static analysis), and [pest](http://github.com/pestphp/pest) (tests).\n\n## 👥 Credits\n\ngRPC Protoset Converter was created by Eser DENIZ.\n\nThe following projects inspired this library and served as a reference:\n\n- https://github.com/ewilken/starlink-rs\n- https://github.com/sparky8512/starlink-grpc-tools\n- https://github.com/fullstorydev/grpcurl\n\n## 📝 License\n\ngRPC Protoset Converter is licensed under the MIT License. See LICENSE for more information.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsrwiez%2Fgrpc-protoset","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsrwiez%2Fgrpc-protoset","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsrwiez%2Fgrpc-protoset/lists"}